From b2e7dd1d7b4990d8400fe0e747469e195f2ec9f5 Mon Sep 17 00:00:00 2001 From: warlof <warlof@users.noreply.github.com> Date: Sat, 6 Apr 2024 06:14:16 +0000 Subject: [PATCH] Deployed d477485 with MkDocs version: 1.4.2 --- .nojekyll | 0 404.html | 1258 ++++ about/contact/index.html | 1349 ++++ about/reporting_bugs/index.html | 1397 ++++ admin_guides/admin_login/index.html | 1351 ++++ admin_guides/authorizations/index.html | 1536 ++++ admin_guides/buckets/index.html | 1431 ++++ admin_guides/docker_admin/index.html | 1634 ++++ admin_guides/scaled_deployments/index.html | 1589 ++++ admin_guides/squads/index.html | 1649 ++++ .../understanding_tracking/index.html | 1473 ++++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.51d95adb.min.js | 29 + assets/javascripts/bundle.51d95adb.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.e5c33ebb.min.js | 42 + .../workers/search.e5c33ebb.min.js.map | 8 + assets/stylesheets/main.558e4712.min.css | 1 + assets/stylesheets/main.558e4712.min.css.map | 1 + assets/stylesheets/palette.2505c338.min.css | 1 + .../stylesheets/palette.2505c338.min.css.map | 1 + community_packages/index.html | 1935 +++++ .../configuration_overload/index.html | 1403 ++++ configuration/email_setup/gmail/index.html | 1384 ++++ configuration/email_setup/mailgun/index.html | 1382 ++++ configuration/env_file_reference/index.html | 1452 ++++ configuration/esi_configuration/index.html | 1471 ++++ .../eve_administrative_contact/index.html | 1427 ++++ configuration/sde_overload/index.html | 1351 ++++ css/extra_footer.css | 3 + css/extra_typo.css | 33 + .../core_package_breakdown/index.html | 1467 ++++ .../developer_installation/index.html | 1464 ++++ developer_guides/development_tips/index.html | 1460 ++++ developer_guides/job_queue_flow/index.html | 1323 ++++ .../notifications_implementation/index.html | 1582 ++++ .../package_development/index.html | 1973 +++++ developer_guides/seat_api/index.html | 1467 ++++ developer_guides/updating_plugins/index.html | 1444 ++++ img/authorization.png | Bin 0 -> 67011 bytes img/authorization_members.png | Bin 0 -> 70517 bytes img/authorization_permissions.png | Bin 0 -> 103814 bytes img/customized-signin-page.png | Bin 0 -> 1595357 bytes img/moons_reporter.png | Bin 0 -> 66094 bytes img/moons_reporter_details.png | Bin 0 -> 59810 bytes img/moons_reporter_import.png | Bin 0 -> 41342 bytes img/moons_reporter_search.png | Bin 0 -> 8589 bytes img/permissions_structure.png | Bin 0 -> 98398 bytes img/seat_jobs_flow.drawio | 1 + img/seat_jobs_flow.png | Bin 0 -> 57799 bytes img/squads_card_applications.png | Bin 0 -> 20767 bytes img/squads_card_general.png | Bin 0 -> 92009 bytes img/squads_card_members.png | Bin 0 -> 62271 bytes img/squads_card_roles.png | Bin 0 -> 13049 bytes img/squads_create.png | Bin 0 -> 16353 bytes img/squads_filters.png | Bin 0 -> 27322 bytes img/squads_list.png | Bin 0 -> 184199 bytes img/squads_sidebar.png | Bin 0 -> 4105 bytes img/squads_tile.png | Bin 0 -> 71903 bytes index.html | 1434 ++++ installation/docker_installation/index.html | 1728 +++++ installation/manual_installation/index.html | 2194 ++++++ .../docker_installation_seat_4/index.html | 1688 +++++ .../manual_installation_seat_4/index.html | 2181 ++++++ installation/requirements/index.html | 1676 ++++ search/search_index.json | 1 + sitemap.xml | 208 + sitemap.xml.gz | Bin 0 -> 633 bytes styling/index.html | 1503 ++++ troubleshooting/index.html | 1633 ++++ upgrading/from_seat_1_0/index.html | 1663 ++++ upgrading/from_seat_2_0/index.html | 1492 ++++ upgrading/from_seat_3_0/bare_metal/index.html | 1651 ++++ upgrading/from_seat_3_0/docker/index.html | 1983 +++++ upgrading/from_seat_4_0/bare_metal/index.html | 1624 ++++ upgrading/from_seat_4_0/docker/index.html | 1970 +++++ upgrading/general/index.html | 1519 ++++ user_guides/moons_reporter/index.html | 1551 ++++ 105 files changed, 73674 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 about/contact/index.html create mode 100644 about/reporting_bugs/index.html create mode 100644 admin_guides/admin_login/index.html create mode 100644 admin_guides/authorizations/index.html create mode 100644 admin_guides/buckets/index.html create mode 100644 admin_guides/docker_admin/index.html create mode 100644 admin_guides/scaled_deployments/index.html create mode 100644 admin_guides/squads/index.html create mode 100644 admin_guides/understanding_tracking/index.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.51d95adb.min.js create mode 100644 assets/javascripts/bundle.51d95adb.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js.map create mode 100644 assets/stylesheets/main.558e4712.min.css create mode 100644 assets/stylesheets/main.558e4712.min.css.map create mode 100644 assets/stylesheets/palette.2505c338.min.css create mode 100644 assets/stylesheets/palette.2505c338.min.css.map create mode 100644 community_packages/index.html create mode 100644 configuration/configuration_overload/index.html create mode 100644 configuration/email_setup/gmail/index.html create mode 100644 configuration/email_setup/mailgun/index.html create mode 100644 configuration/env_file_reference/index.html create mode 100644 configuration/esi_configuration/index.html create mode 100644 configuration/eve_administrative_contact/index.html create mode 100644 configuration/sde_overload/index.html create mode 100644 css/extra_footer.css create mode 100644 css/extra_typo.css create mode 100644 developer_guides/core_package_breakdown/index.html create mode 100644 developer_guides/developer_installation/index.html create mode 100644 developer_guides/development_tips/index.html create mode 100644 developer_guides/job_queue_flow/index.html create mode 100644 developer_guides/notifications_implementation/index.html create mode 100644 developer_guides/package_development/index.html create mode 100644 developer_guides/seat_api/index.html create mode 100644 developer_guides/updating_plugins/index.html create mode 100644 img/authorization.png create mode 100644 img/authorization_members.png create mode 100644 img/authorization_permissions.png create mode 100644 img/customized-signin-page.png create mode 100644 img/moons_reporter.png create mode 100644 img/moons_reporter_details.png create mode 100644 img/moons_reporter_import.png create mode 100644 img/moons_reporter_search.png create mode 100644 img/permissions_structure.png create mode 100644 img/seat_jobs_flow.drawio create mode 100644 img/seat_jobs_flow.png create mode 100644 img/squads_card_applications.png create mode 100644 img/squads_card_general.png create mode 100644 img/squads_card_members.png create mode 100644 img/squads_card_roles.png create mode 100644 img/squads_create.png create mode 100644 img/squads_filters.png create mode 100644 img/squads_list.png create mode 100644 img/squads_sidebar.png create mode 100644 img/squads_tile.png create mode 100644 index.html create mode 100644 installation/docker_installation/index.html create mode 100644 installation/manual_installation/index.html create mode 100644 installation/old_versions/docker_installation_seat_4/index.html create mode 100644 installation/old_versions/manual_installation_seat_4/index.html create mode 100644 installation/requirements/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 styling/index.html create mode 100644 troubleshooting/index.html create mode 100644 upgrading/from_seat_1_0/index.html create mode 100644 upgrading/from_seat_2_0/index.html create mode 100644 upgrading/from_seat_3_0/bare_metal/index.html create mode 100644 upgrading/from_seat_3_0/docker/index.html create mode 100644 upgrading/from_seat_4_0/bare_metal/index.html create mode 100644 upgrading/from_seat_4_0/docker/index.html create mode 100644 upgrading/general/index.html create mode 100644 user_guides/moons_reporter/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..a78da35f --- /dev/null +++ b/404.html @@ -0,0 +1,1258 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + + + <link rel="icon" href="/docs/assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>SeAT Documentation</title> + + + + <link rel="stylesheet" href="/docs/assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="/docs/assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="/docs/css/extra_footer.css"> + + <link rel="stylesheet" href="/docs/css/extra_typo.css"> + + <script>__md_scope=new URL("/docs/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="/docs/." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="/docs/." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="/docs/about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="/docs/about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + <h1>404 - Not found</h1> + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "/docs/", "features": ["content.code.copy"], "search": "/docs/assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="/docs/assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/about/contact/index.html b/about/contact/index.html new file mode 100644 index 00000000..99e84085 --- /dev/null +++ b/about/contact/index.html @@ -0,0 +1,1349 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/about/contact/"> + + + <link rel="prev" href="../../troubleshooting/"> + + + <link rel="next" href="../reporting_bugs/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Contact - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#contact" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Contact + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" checked> + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="true"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Contact + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Contact + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#eve-online-forum-thread" class="md-nav__link"> + EVE Online Forum Thread + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#eve-online-forum-thread" class="md-nav__link"> + EVE Online Forum Thread + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="contact">Contact<a class="headerlink" href="#contact" title="Permanent link">¶</a></h1> +<p>Have a question? Want to say thank you? Need to express your opinion on SeAT? You are welcome to join us on our official Discord Server! <a href="https://discord.gg/VcUZRcnMYK">https://discord.gg/VcUZRcnMYK</a>.</p> +<iframe src="https://discord.com/widget?id=821361165791133716&theme=dark" width="350" height="500" allowtransparency="true" frameborder="0" sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe> + +<h2 id="eve-online-forum-thread">EVE Online Forum Thread<a class="headerlink" href="#eve-online-forum-thread" title="Permanent link">¶</a></h2> +<p>Track the conversation on the <a href="https://forums.eveonline.com/t/seat-3-0-is-here/83453">EVE Online Forums</a>.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/about/reporting_bugs/index.html b/about/reporting_bugs/index.html new file mode 100644 index 00000000..d419fad7 --- /dev/null +++ b/about/reporting_bugs/index.html @@ -0,0 +1,1397 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/about/reporting_bugs/"> + + + <link rel="prev" href="../contact/"> + + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Reporting Bugs - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#reporting-bugs" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Reporting Bugs + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" checked> + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="true"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Reporting Bugs + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Reporting Bugs + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#the-more-info-the-better" class="md-nav__link"> + The more info, the better + </a> + +</li> + + <li class="md-nav__item"> + <a href="#log-files" class="md-nav__link"> + Log files + </a> + +</li> + + <li class="md-nav__item"> + <a href="#screenshots-and-debug-mode" class="md-nav__link"> + Screenshots and debug mode + </a> + +</li> + + <li class="md-nav__item"> + <a href="#report-the-bug" class="md-nav__link"> + Report the bug + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#the-more-info-the-better" class="md-nav__link"> + The more info, the better + </a> + +</li> + + <li class="md-nav__item"> + <a href="#log-files" class="md-nav__link"> + Log files + </a> + +</li> + + <li class="md-nav__item"> + <a href="#screenshots-and-debug-mode" class="md-nav__link"> + Screenshots and debug mode + </a> + +</li> + + <li class="md-nav__item"> + <a href="#report-the-bug" class="md-nav__link"> + Report the bug + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="reporting-bugs">Reporting Bugs<a class="headerlink" href="#reporting-bugs" title="Permanent link">¶</a></h1> +<p>So, you think its time to report an issue. Awesome! However, before you do this, <em>please</em> go through the <a href="../../troubleshooting/">troubleshooting</a> steps first to identify any common errors that you might be able to to fix yourself.</p> +<h2 id="the-more-info-the-better">The more info, the better<a class="headerlink" href="#the-more-info-the-better" title="Permanent link">¶</a></h2> +<p>In order to best understand the bug, we need as much info as possible about your environment. For that, you can run the following command (from your SeAT directory), and copy / paste the output as part of your bug report:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>seat:admin:diagnose +</span></code></pre></div> +<h2 id="log-files">Log files<a class="headerlink" href="#log-files" title="Permanent link">¶</a></h2> +<p>Log files are a fantastic resource. Check out the Laravel log for any <code>Exception</code> type errors, and add them to your bug report. The log file is located (relative to where you installed SeAT) at:</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>storage/logs/laravel-<todays-date>.log +</span></code></pre></div> +<h2 id="screenshots-and-debug-mode">Screenshots and debug mode<a class="headerlink" href="#screenshots-and-debug-mode" title="Permanent link">¶</a></h2> +<p>Screenshots may also help, so don't be shy to take some and attach them to your bug report! If you flip your installation into debug mode then it may be possible to capture the error that is occurring via a screenshot.</p> +<h2 id="report-the-bug">Report the bug<a class="headerlink" href="#report-the-bug" title="Permanent link">¶</a></h2> +<p>Finally, to report the bug, head over to <a href="https://github.com/eveseat/seat/issues">Github Issues</a> and click on <strong>New Issue</strong>.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/admin_login/index.html b/admin_guides/admin_login/index.html new file mode 100644 index 00000000..2b9795f3 --- /dev/null +++ b/admin_guides/admin_login/index.html @@ -0,0 +1,1351 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/admin_login/"> + + + <link rel="prev" href="../../configuration/sde_overload/"> + + + <link rel="next" href="../docker_admin/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Admin Login - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#admin-login" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Admin Login + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <a href="./" class="md-nav__link md-nav__link--active"> + Admin Login + </a> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="admin-login">Admin Login<a class="headerlink" href="#admin-login" title="Permanent link">¶</a></h1> +<p>SeAT is heavily relaying on EVE Online Single Sign-On to authenticate user. +However, it's also shipped with a built-in administrator user.</p> +<p>You need an admin account in order to do certain tasks like configuring your instances, roles, squads, etc...</p> +<p>In order to authenticate with built-in admin user, use command disclosed bellow (choose your context).</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Docker (SeAT 4.x)</label><label for="__tabbed_1_2">Docker (SeAT 5.x)</label><label for="__tabbed_1_3">Bare metal</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="nb">cd</span><span class="w"> </span>/opt/seat-docker +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>seat-web<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>seat:admin:login +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="nb">cd</span><span class="w"> </span>/opt/seat-docker +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>front<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>seat:admin:login +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan seat:admin:login'</span> +</span></code></pre></div> +</div> +</div> +</div> +<p>You'll get a link after the command has finished running, which looks similar to the one bellow:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span> +<span class="normal"><a href="#__codelineno-3-2">2</a></span> +<span class="normal"><a href="#__codelineno-3-3">3</a></span> +<span class="normal"><a href="#__codelineno-3-4">4</a></span> +<span class="normal"><a href="#__codelineno-3-5">5</a></span> +<span class="normal"><a href="#__codelineno-3-6">6</a></span> +<span class="normal"><a href="#__codelineno-3-7">7</a></span> +<span class="normal"><a href="#__codelineno-3-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>SeAT Admin Login URL Generator +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a>User 'admin' does not exist. It will be created. +</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a>Checking if 'admin' is a super user +</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a>Adding 'admin' to the Superuser role +</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a>Generating authentication token +</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a> +</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a>Your authentication URL is valid for 60 seconds. +</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a>http://localhost/auth/login/admin/9G3sb8hjMvrbIJrIf10KKtIj1c8e9mL5 +</span></code></pre></div></td></tr></table></div> +<p>Copy it and paste it inside your browser, and you will be authenticated as the built-in admin account.</p> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>You can define a standard user account as an administrator from the user card. +To do so, go into <strong>Settings > Users</strong>, search the user which need to be upgraded and clic on the edit button. +On the displaying card, check <strong>Administrator</strong> and confirm change using edit button.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>If you have not configured the <code>APP_URL</code> setting in the <code>.env</code> file, then the admin url will be generated for <code>localhost</code>. +This is most likely incorrect and you can simply replace <code>localhost</code> with your server IP address or domain name.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/authorizations/index.html b/admin_guides/authorizations/index.html new file mode 100644 index 00000000..ef32a13b --- /dev/null +++ b/admin_guides/authorizations/index.html @@ -0,0 +1,1536 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/authorizations/"> + + + <link rel="prev" href="../docker_admin/"> + + + <link rel="next" href="../buckets/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Authorizations - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#role-based-access-control" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Authorizations + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Authorizations + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Authorizations + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#interface" class="md-nav__link"> + Interface + </a> + + <nav class="md-nav" aria-label="Interface"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#role-card" class="md-nav__link"> + Role card + </a> + +</li> + + <li class="md-nav__item"> + <a href="#role-definition" class="md-nav__link"> + Role definition + </a> + + <nav class="md-nav" aria-label="Role definition"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#role-permissions" class="md-nav__link"> + Role permissions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#role-members" class="md-nav__link"> + Role members + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#interface" class="md-nav__link"> + Interface + </a> + + <nav class="md-nav" aria-label="Interface"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#role-card" class="md-nav__link"> + Role card + </a> + +</li> + + <li class="md-nav__item"> + <a href="#role-definition" class="md-nav__link"> + Role definition + </a> + + <nav class="md-nav" aria-label="Role definition"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#role-permissions" class="md-nav__link"> + Role permissions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#role-members" class="md-nav__link"> + Role members + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="role-based-access-control">Role-Based Access Control<a class="headerlink" href="#role-based-access-control" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>SeAT supports configuring user access control by means of <a href="https://en.wikipedia.org/wiki/Role-based_access_control">Role-based Access Control</a> (RBAC). +This allows for SeAT administrators to granularly control who has access to what based on which roles a SeAT user has.</p> +<p>In SeAT, the default rule is to deny access. As a result, someone without a permission will not be able to access the requested resource.</p> +<div class="admonition tip"> +<p class="admonition-title">Tip</p> +<p>Use roles to define permission without wondering about automation. You will be able to set up role auto assignment with <a href="#">Squads</a>. +The more granular are your roles, the easier they will be to maintain them and built your automation rules.</p> +</div> +<h2 id="definitions">Definitions<a class="headerlink" href="#definitions" title="Permanent link">¶</a></h2> +<p>This section aims to clear up the definitions used in the SeAT RBAC implementation.</p> +<ul> +<li> +<p><strong>User</strong><br /> +A SeAT user account. This can be either a user account that was created in SeAT itself, or an automatically created account based on SSO. +The only difference between the accounts is that with an SSO account, SeAT has no idea what the account's password is. +Otherwise, everything else is exactly the same.</p> +</li> +<li> +<p><strong>Scope</strong><br /> +A scope is a domain grouping different permissions related to the same topic. Permissions from certain scope can be limited (ie: character or corporation).</p> +</li> +<li> +<p><strong>Permission</strong><br /> +A Permission is an attribute that is assigned to a <em>Role</em>. It grants access based on the specific permission.</p> +</li> +<li> +<p><strong>Role</strong><br /> +A Role is simply a collection of permissions. Users get assigned a roles and inherit the permissions granted by that role. +A user cannot be given a raw permission. Permissions can only be granted by creating a Role, assigning permissions to the Role and granting the role to a user.</p> +</li> +<li> +<p><strong>Filters</strong><br /> +Permissions from certain scope can received filters. That simply mean the granted permission is limited to certain conditions. +As an example, you may want to limit the asset permission from character scope to only a selection of character.</p> +</li> +<li> +<p><strong>Entity</strong><br /> +An entity is something on which the permission will be applied. It can be a Character, a Corporation or anything else.</p> +</li> +</ul> +<h2 id="interface">Interface<a class="headerlink" href="#interface" title="Permanent link">¶</a></h2> +<p>To manage roles, you must go into Settings from SeAT sidebar, then choose Access Management.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>To be able to manage SeAT roles, you must be authenticated as an administrator user. +Administrators can be managed in the users list, located in Settings.</p> +</div> +<h3 id="role-card">Role card<a class="headerlink" href="#role-card" title="Permanent link">¶</a></h3> +<p>The Role card is compounds of two main area.</p> +<p><img alt="Role Card" src="../../img/authorization.png" /></p> +<p>Left pane contains basic information. It allows you to provide a name, a description and upload an optional logo. +Those information can be sync with any third party platform using the API.</p> +<div class="admonition tip"> +<p class="admonition-title">Tip</p> +<p>Provided logo are stored into database - so you don't need to worry when moving your installation.</p> +</div> +<p>Right pane contains role settings. The pane is split in two tabs - first tab is showing the role permissions definitions. +Second pane, the members one, gives you the current role members and related management actions.</p> +<h3 id="role-definition">Role definition<a class="headerlink" href="#role-definition" title="Permanent link">¶</a></h3> +<h4 id="role-permissions">Role permissions<a class="headerlink" href="#role-permissions" title="Permanent link">¶</a></h4> +<p><img alt="Role Permissions" src="../../img/authorization_permissions.png" /></p> +<p>The role permissions tab is built using a navigation bar, which is showing all available scopes - and the list of permissions from active scope. +Use the scope navigation to show permissions related to each scope.</p> +<p>Each permission block is structured as follow:</p> +<ul> +<li>a checkbox: if you check it, you mark the permission to be granted by the role</li> +<li>an optional icon: it is visual only and help to pair some permission inside a same scope. It might be useful for large scope like character or corporation to distinguish permission kind. Options include <code>military</code>, <code>financial</code> and <code>industrial</code>.</li> +<li>a user friendly name</li> +<li>an optional description: this is mostly a text explaining the permission purpose</li> +<li>an optional limits button: it will help you to filter/restrict the permission to only a certain population. Only character and corporation scope permissions can be filtered.</li> +</ul> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>In SeAT 3, leaving the affiliations of a role empty, meant that the role would apply to no relevant entities. It had no effect. This has changed in SeAT 4. If you give a role a permission with no filter, this permission will apply globally to all entities. For example giving the Corporation Sheet permission to a role with no filter means that the members of the role will be able to see the corporation sheets of every corporation on the server.</p> +</div> +<h4 id="role-members">Role members<a class="headerlink" href="#role-members" title="Permanent link">¶</a></h4> +<p><img alt="Role Members" src="../../img/authorization_members.png" /></p> +<p>The role members tab is a table listing all users who are currently assigned the role. All of them receive the benefits of the permissions which have been defined in the permissions tab from that same role. +You will be able to add or remove any user to or from the role using action buttons.</p> +<p>To remove an user from the role to which is part, simply click on the "Remove" button located on the member line.</p> +<p>To add one or multiple user to the role, use the green "Add" button located at bottom right corner. This will show you a dialog box. Use the drop-down control to find users which you want to add. +Once all users to be add have been chosen, click on the "Close" button located at bottom right corner from that modal. Selected users will be shown with a warning background to highlight their addition to the role. +This means their selection isn't saved yet - you have to apply change using the green "Submit" button located under the General pane.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/buckets/index.html b/admin_guides/buckets/index.html new file mode 100644 index 00000000..d0835e51 --- /dev/null +++ b/admin_guides/buckets/index.html @@ -0,0 +1,1431 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/buckets/"> + + + <link rel="prev" href="../authorizations/"> + + + <link rel="next" href="../squads/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Buckets - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#buckets-and-continuous-update" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Buckets + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Buckets + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Buckets + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#general" class="md-nav__link"> + General + </a> + +</li> + + <li class="md-nav__item"> + <a href="#health" class="md-nav__link"> + Health + </a> + +</li> + + <li class="md-nav__item"> + <a href="#balancing" class="md-nav__link"> + Balancing + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update" class="md-nav__link"> + Update + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#general" class="md-nav__link"> + General + </a> + +</li> + + <li class="md-nav__item"> + <a href="#health" class="md-nav__link"> + Health + </a> + +</li> + + <li class="md-nav__item"> + <a href="#balancing" class="md-nav__link"> + Balancing + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update" class="md-nav__link"> + Update + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="buckets-and-continuous-update">Buckets and continuous update<a class="headerlink" href="#buckets-and-continuous-update" title="Permanent link">¶</a></h1> +<p>Starting with <a href="https://github.com/eveseat/console/releases/tag/4.7.0">eveseat/console@4.7.0</a> and <a href="https://github.com/eveseat/eveapi/releases/tag/4.8.0">eveseat/eveapi@4.8.0</a>, a new system has been designed to ensure continuous updates and reduce load on both SeAT stack and ESI.</p> +<h2 id="general">General<a class="headerlink" href="#general" title="Permanent link">¶</a></h2> +<p>Each instance is allowed to get up to <strong>30 buckets</strong>. Every bucket will handle a batch of tokens, and their related characters and corporations data update. +Size of bucket is dynamically set based on the following criteria :</p> +<ul> +<li>a token can be updated only once every <strong>3600 seconds</strong></li> +<li>a token can be updated in an average of <strong>120 seconds</strong></li> +</ul> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Most data ESI endpoint and data they deliver are restricted to a 1-hour cache long. +However, certain are shorter and benefit of dedicated command to allow you update more frequently - please, do not abuse of them.</p> +<ul> +<li><code>esi:update:contracts</code></li> +<li><code>esi:update:killmails</code></li> +<li><code>esi:update:affiliations</code></li> +<li><code>esi:update:notifications</code></li> +</ul> +</div> +<h2 id="health">Health<a class="headerlink" href="#health" title="Permanent link">¶</a></h2> +<p>You can determine a bucket status using <code>seat:buckets:list</code> and <code>seat:buckets:info ID</code> commands. +The first one will show you all existing buckets in the system together with the amount of token they're managing and their status. +The second will show you details about a specific bucket including characters they have the charge of.</p> +<p>A bucket can have one of the following status :</p> +<ul> +<li>available : there are free slots according to current threshold</li> +<li>balanced : maximum tokens has been reached according to the current threshold, and the bucket cannot handle more token</li> +<li>overload : there are too many tokens handled by this bucket according to the current threshold</li> +</ul> +<h2 id="balancing">Balancing<a class="headerlink" href="#balancing" title="Permanent link">¶</a></h2> +<p>Bucket balancing is run every time a token is created or removed from the system. +As a result, you may find bucket with a certain amount of token at one time and a completely different one at another.</p> +<p>If you find yourself with unbalanced buckets, you can force them to be balanced using <code>seat:buckets:balance</code>. +However, depending on instance state, certain buckets will not be able to be more balanced for a time <em>(ie: lack of tokens).</em></p> +<h2 id="update">Update<a class="headerlink" href="#update" title="Permanent link">¶</a></h2> +<p>This system has been designed to ensure there is a bucket to update every two minutes (except for instances with <strong>less than 30 tokens</strong>). +You can force bucket to be processed and bypass the scheduler using <code>seat:buckets:update</code> - however, keep in mind that tokens handled by updating bucket will be frozen for <strong>the next 60 minutes</strong>.</p> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Manual command to force update character and corporation are still available. They require the ID of a tied character.</p> +<ul> +<li><code>esi:update:characters character_id</code></li> +<li><code>esi:update:corporations character_id</code></li> +</ul> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/docker_admin/index.html b/admin_guides/docker_admin/index.html new file mode 100644 index 00000000..69df476f --- /dev/null +++ b/admin_guides/docker_admin/index.html @@ -0,0 +1,1634 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/docker_admin/"> + + + <link rel="prev" href="../admin_login/"> + + + <link rel="next" href="../authorizations/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Docker Admin - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#docker-administration" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Docker Admin + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Docker Admin + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Docker Admin + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#container-status" class="md-nav__link"> + Container Status + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + <li class="md-nav__item"> + <a href="#live-container-logs" class="md-nav__link"> + Live Container Logs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#application-logs" class="md-nav__link"> + Application Logs + </a> + + <nav class="md-nav" aria-label="Application Logs"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#logs-web-ui" class="md-nav__link"> + Logs - Web UI + </a> + +</li> + + <li class="md-nav__item"> + <a href="#logs-worker-updaters" class="md-nav__link"> + Logs - Worker / Updaters + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#installing-plugins" class="md-nav__link"> + Installing Plugins + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-backups-and-restore" class="md-nav__link"> + Database Backups and Restore + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#container-status" class="md-nav__link"> + Container Status + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + <li class="md-nav__item"> + <a href="#live-container-logs" class="md-nav__link"> + Live Container Logs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#application-logs" class="md-nav__link"> + Application Logs + </a> + + <nav class="md-nav" aria-label="Application Logs"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#logs-web-ui" class="md-nav__link"> + Logs - Web UI + </a> + +</li> + + <li class="md-nav__item"> + <a href="#logs-worker-updaters" class="md-nav__link"> + Logs - Worker / Updaters + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#installing-plugins" class="md-nav__link"> + Installing Plugins + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-backups-and-restore" class="md-nav__link"> + Database Backups and Restore + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="docker-administration">Docker Administration<a class="headerlink" href="#docker-administration" title="Permanent link">¶</a></h1> +<p>Occasionally you will need to perform administrative tasks in your SeAT instance running within docker. Be it because you would like to configure TLS for the web interface, change the port of the SeAT webserver or simply generate an admin login URL, this guide aims to help you get familiar for the commands needed for this.</p> +<p>Many of the commands are exactly the same as those used in a bare metal installation, except for the fact that they are always prefixed with <code>docker compose</code> and run from the same directory that you have the seat <code>docker-compose.yml</code> file stored. If your <code>docker-compose.yml</code> lives in <code>/opt/seat-docker</code>, you will need to <code>cd</code> to that directory first and then execute the <code>docker compose</code> commands.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +</div> +<p>With SeAT 5, we migrated from the <code>docker-compose</code> command to <code>docker compose</code>. Besides the name, they are fully compatible. If you are still on SeAT 4, you have to use <code>docker-compose</code> instead of <code>docker compose</code> for all actions. This applies to all actions, not just the ones listed on this page.</p> +<h2 id="container-status">Container Status<a class="headerlink" href="#container-status" title="Permanent link">¶</a></h2> +<p>For a quick, birds-eye view on the status of the containers within the SeAT docker stack, the following command may be run:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">SeAT 4.x</label><label for="__tabbed_1_2">SeAT 5.x</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>docker-compose<span class="w"> </span>ps +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>ps +</span></code></pre></div> +</div> +</div> +</div> +<p>This should give you the name, entry point, current status and internal ports used within the docker network as output.</p> +<h2 id="configuration-changes">Configuration Changes<a class="headerlink" href="#configuration-changes" title="Permanent link">¶</a></h2> +<p>A dockerized installation of SeAT is primarily configured via a configuration file located at <code>.env</code>. Configuration options such as your applications SSO secrets, SeAT's web server ports are amongst the many configuration options available in this file.</p> +<p>Making changes to this file requires the docker stack to be restarted so that the configuration may be applies. An example case would be when you <a href="../../configuration/esi_configuration/">configure SSO</a> for your instance.</p> +<p>Once you have made a configuration change, save the <code>.env</code> file and restart the stack by simply running the following command from the path where the <code>docker-compose.yml</code> lives:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:3"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Docker (SeAT 4.x)</label><label for="__tabbed_2_2">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_2_3">Docker (SeAT 5.x - using reverse proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +</div> +</div> +<h2 id="live-container-logs">Live Container Logs<a class="headerlink" href="#live-container-logs" title="Permanent link">¶</a></h2> +<p>Getting an idea of what is happening inside of the containers may be useful for many things, including debugging any issues that may occur. All of the containers generate logs that can be viewed either in isolation, or all of the containers in the stack.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Docker (SeAT 4.x)</label><label for="__tabbed_3_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>To view a single services' logs (<code>seat-web</code> in this examples case), run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f<span class="w"> </span>seat-web +</span></code></pre></div> +<p>All services can referenced by their name using <code>docker compose</code>. You can see the service names <a href="https://github.com/eveseat/seat-docker/blob/master/docker-compose.yml">here</a>. At the time of writing this doc, the available services were: <code>mariadb</code>, <code>redis</code>, <code>traefik</code>, <code>seat-web</code>, <code>seat-worker</code> and <code>seat-cron</code>.</p> +</div> +<div class="tabbed-block"> +<p>To view a single services' logs (<code>front</code> in this examples case), run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f<span class="w"> </span>front +</span></code></pre></div> +<p>All services can referenced by their name using <code>docker compose</code>. You can see the service names <a href="https://github.com/eveseat/seat-docker/blob/master/docker-compose.yml">here</a> and in the adjacent <code>docker-compose.x.yml</code> files. At the time of writing this doc, the available services were: <code>mariadb</code>, <code>cache</code>, <code>traefik</code>, <code>front</code>, <code>worker</code> and <code>scheduler</code>.</p> +</div> +</div> +</div> +<p>To view all service logs at once, run:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">Docker (SeAT 4.x)</label><label for="__tabbed_4_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div> +</div> +</div> +</div> +<p>Once you are done viewing the output, simply pressing ^C will exit the log viewer.</p> +<h2 id="application-logs">Application Logs<a class="headerlink" href="#application-logs" title="Permanent link">¶</a></h2> +<p>While most processes will output information to stdout (which is what you will see when you run <code>docker-compose logs</code>), there are some app specific logs also generated.</p> +<h3 id="logs-web-ui">Logs - Web UI<a class="headerlink" href="#logs-web-ui" title="Permanent link">¶</a></h3> +<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">Docker (SeAT 4.x)</label><label for="__tabbed_5_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>If you are getting HTTP 500's, or other exception when using the web interface, the best place to find the relevant logs will be in the <code>seat-web</code> service, in the <code>/var/www/seat/storage/logs</code> directory. To reach them, run <code>docker-compose exec seat-web bash</code>. This will drop you into bash shell in the container:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>$ docker-compose exec seat-web bash +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>root@9aff5b002ca0:/var/www/seat# +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<p>If you are getting HTTP 500's, or other exception when using the web interface, the best place to find the relevant logs will be in the <code>front</code> service, in the <code>/var/www/seat/storage/logs</code> directory. To reach them, run <code>docker-compose exec front bash</code>. This will drop you into bash shell in the container:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1">1</a></span> +<span class="normal"><a href="#__codelineno-10-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1"></a>$ docker-compose exec front bash +</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2"></a>root@9aff5b002ca0:/var/www/seat# +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> +<p>Next, cd to the logs directory with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nb">cd</span><span class="w"> </span>storage/logs/ +</span></code></pre></div> +<p>This directory should have daily log files for you to view.</p> +<h3 id="logs-worker-updaters">Logs - Worker / Updaters<a class="headerlink" href="#logs-worker-updaters" title="Permanent link">¶</a></h3> +<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">Docker (SeAT 4.x)</label><label for="__tabbed_6_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>If you think your workers may be causing some exceptions, or you want to investigate why they may be failing, you can do so in the <code>seat-worker</code> service. Just like for the web UI, get a bash shell and cd to the logs directory.</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span> +<span class="normal"><a href="#__codelineno-12-2">2</a></span> +<span class="normal"><a href="#__codelineno-12-3">3</a></span> +<span class="normal"><a href="#__codelineno-12-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a># docker-compose exec seat-worker bash +</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a>root@8ed8967348f1:/var/www/seat# cd storage/logs/ +</span><span id="__span-12-3"><a id="__codelineno-12-3" name="__codelineno-12-3"></a>root@8ed8967348f1:/var/www/seat/storage/logs# ls +</span><span id="__span-12-4"><a id="__codelineno-12-4" name="__codelineno-12-4"></a>eseye-2020-08-23.log +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<p>If you think your workers may be causing some exceptions, or you want to investigate why they may be failing, you can do so in the <code>worker</code> service. Just like for the web UI, get a bash shell and cd to the logs directory.</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span> +<span class="normal"><a href="#__codelineno-13-2">2</a></span> +<span class="normal"><a href="#__codelineno-13-3">3</a></span> +<span class="normal"><a href="#__codelineno-13-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a># docker compose exec worker bash +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a>root@8ed8967348f1:/var/www/seat# cd storage/logs/ +</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3"></a>root@8ed8967348f1:/var/www/seat/storage/logs# ls +</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4"></a>eseye-2020-08-23.log +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> +<p>The eseye log as well as Laravel log should help you debug what is going on.</p> +<h2 id="installing-plugins">Installing Plugins<a class="headerlink" href="#installing-plugins" title="Permanent link">¶</a></h2> +<p>SeAT provides the ability for third party developers to integrate with the core environment to extend its features and functionality. It is possible to install those plugins in a docker environment. Installing a plugin is relatively easy too. All you need to do is add the plugin name to your <code>SEAT_PLUGINS</code> variable in the <code>.env</code> file and run <code>docker-compose up -d</code> again. The plugin will be read from the <code>.env</code> file and installed as the application container starts.</p> +<p>For example. Open the <code>.env</code> file (which is most probably at <code>/opt/seat-docker/.env</code>) and edit the <code>SEAT_PLUGINS</code> variable to include the package you want to install. In our example we use the pseudo package called user/seat-plugin:</p> +<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1">1</a></span> +<span class="normal"><a href="#__codelineno-14-2">2</a></span> +<span class="normal"><a href="#__codelineno-14-3">3</a></span> +<span class="normal"><a href="#__codelineno-14-4">4</a></span> +<span class="normal"><a href="#__codelineno-14-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="c1"># SeAT Plugins</span> +</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2"></a><span class="c1"># This is a list of the all of the third party plugins that you</span> +</span><span id="__span-14-3"><a id="__codelineno-14-3" name="__codelineno-14-3"></a><span class="c1"># would like to install as part of SeAT. Package names should be</span> +</span><span id="__span-14-4"><a id="__codelineno-14-4" name="__codelineno-14-4"></a><span class="c1"># comma separated if multiple packages should be installed.</span> +</span><span id="__span-14-5"><a id="__codelineno-14-5" name="__codelineno-14-5"></a><span class="l l-Scalar l-Scalar-Plain">SEAT_PLUGINS=user/seat-plugin</span> +</span></code></pre></div></td></tr></table></div> +<p>Save your <code>.env</code> file and run <code>docker-compose up -d</code> to restart the stack with the new plugins as part of it. Depending on how big the plugin itself may be, this could take a few moments to complete.</p> +<p>You can monitor the installation process by running:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">Docker (SeAT 4.x)</label><label for="__tabbed_7_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div> +</div> +</div> +</div> +<h2 id="database-backups-and-restore">Database Backups and Restore<a class="headerlink" href="#database-backups-and-restore" title="Permanent link">¶</a></h2> +<p>Backups. They are important and really simple to do. To perform a backup of the current database used within the docker stack, compressing and saving it to a file called <code>seat_backup.sql.gz</code>, run:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">Docker (SeAT 4.x)</label><label for="__tabbed_8_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mariadb<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>gzip<span class="w"> </span>><span class="w"> </span>seat_backup.sql.gz +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>mariadb<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'exec mysqldump "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>gzip<span class="w"> </span>><span class="w"> </span>seat_backup.sql.gz +</span></code></pre></div> +</div> +</div> +</div> +<p>To restore a backup to a new dockerized instance of SeAT, run:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="9:2"><input checked="checked" id="__tabbed_9_1" name="__tabbed_9" type="radio" /><input id="__tabbed_9_2" name="__tabbed_9" type="radio" /><div class="tabbed-labels"><label for="__tabbed_9_1">Docker (SeAT 4.x)</label><label for="__tabbed_9_2">Docker (SeAT 5.x)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>zcat<span class="w"> </span>seat_backup.sql.gz<span class="w"> </span><span class="p">|</span><span class="w"> </span>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mariadb<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'exec mysql "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'</span> +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>zcat<span class="w"> </span>seat_backup.sql.gz<span class="w"> </span><span class="p">|</span><span class="w"> </span>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-T<span class="w"> </span>mariadb<span class="w"> </span>sh<span class="w"> </span>-c<span class="w"> </span><span class="s1">'exec mysql "$MYSQL_DATABASE" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD"'</span> +</span></code></pre></div> +</div> +</div> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/scaled_deployments/index.html b/admin_guides/scaled_deployments/index.html new file mode 100644 index 00000000..c86c4e7f --- /dev/null +++ b/admin_guides/scaled_deployments/index.html @@ -0,0 +1,1589 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/scaled_deployments/"> + + + <link rel="prev" href="../understanding_tracking/"> + + + <link rel="next" href="../../user_guides/moons_reporter/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Scaled Deployments - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#scaled-seat-deployments" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Scaled Deployments + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Scaled Deployments + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Scaled Deployments + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + + <nav class="md-nav" aria-label="Definitions"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#server" class="md-nav__link"> + Server + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-component" class="md-nav__link"> + SeAT component + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#components" class="md-nav__link"> + Components + </a> + +</li> + + <li class="md-nav__item"> + <a href="#immutable-resources" class="md-nav__link"> + Immutable resources + </a> + +</li> + + <li class="md-nav__item"> + <a href="#simple-scaled-setup" class="md-nav__link"> + Simple scaled setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#more-complicated-scaled-setup" class="md-nav__link"> + More complicated scaled setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#component-setups" class="md-nav__link"> + Component setups + </a> + + <nav class="md-nav" aria-label="Component setups"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#web-front-end" class="md-nav__link"> + Web front end + </a> + +</li> + + <li class="md-nav__item"> + <a href="#queue-worker" class="md-nav__link"> + Queue worker + </a> + +</li> + + <li class="md-nav__item"> + <a href="#job-dispatcher" class="md-nav__link"> + Job dispatcher + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + + <nav class="md-nav" aria-label="Definitions"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#server" class="md-nav__link"> + Server + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-component" class="md-nav__link"> + SeAT component + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#components" class="md-nav__link"> + Components + </a> + +</li> + + <li class="md-nav__item"> + <a href="#immutable-resources" class="md-nav__link"> + Immutable resources + </a> + +</li> + + <li class="md-nav__item"> + <a href="#simple-scaled-setup" class="md-nav__link"> + Simple scaled setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#more-complicated-scaled-setup" class="md-nav__link"> + More complicated scaled setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#component-setups" class="md-nav__link"> + Component setups + </a> + + <nav class="md-nav" aria-label="Component setups"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#web-front-end" class="md-nav__link"> + Web front end + </a> + +</li> + + <li class="md-nav__item"> + <a href="#queue-worker" class="md-nav__link"> + Queue worker + </a> + +</li> + + <li class="md-nav__item"> + <a href="#job-dispatcher" class="md-nav__link"> + Job dispatcher + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<div class="admonition danger"> +<p class="admonition-title">DEPRECATED!!!</p> +<p>This guide is deprecated and is not functional in SeAT v3. If you need more performance in SeAT v3 then you have two options, move the DB alone to another server, and/or beef up the server SeAT is running on. This guide may be updated in the future when horizontal scaling is viable again. It is left as is for now due to academic and nostalgic reasons.</p> +</div> +<h1 id="scaled-seat-deployments">Scaled SeAT Deployments<a class="headerlink" href="#scaled-seat-deployments" title="Permanent link">¶</a></h1> +<p>At some stage, you may come to a point where a single install of SeAT might not be enough to process api key updates. +Thankfully, it is actually very easy to scale SeAT horizontally in order to improve performance. +This document aims to share some <em>need to knows</em> before embarking on a tiered installation of SeAT.</p> +<h2 id="definitions">Definitions<a class="headerlink" href="#definitions" title="Permanent link">¶</a></h2> +<p>Lets get some definitions cleared up.</p> +<h3 id="server">Server<a class="headerlink" href="#server" title="Permanent link">¶</a></h3> +<p>A <em>server</em> is defined as any VPS, hardware, docker container, or other form of virtualization. +When talking performance though, keep in mind that there will probably be very little performance gains when everything runs on the same physical hardware instance.</p> +<h3 id="seat-component">SeAT component<a class="headerlink" href="#seat-component" title="Permanent link">¶</a></h3> +<p>A <em>SeAT Component</em> is a collection of SeAT packages and configurations that is responsible for performing a specific task. +Tasks include the SeAT Web Interface, the job workers or dispatchers.</p> +<h2 id="components">Components<a class="headerlink" href="#components" title="Permanent link">¶</a></h2> +<p>Before we can talk scale, we need to understand which components SeAT actually consists of. +We will not talk about the <a href="#immutable-resources">immutable resources</a> here as they will be mentioned in the next section.</p> +<p>So, which components are there to SeAT?</p> +<ul> +<li>The web front end.</li> +<li>The queue workers.</li> +<li>The job dispatcher.</li> +</ul> +<p>Each of these components can live on their own <a href="#server">server</a> and must share the same <a href="#immutable-resources">immutable resources</a>.</p> +<h2 id="immutable-resources">Immutable resources<a class="headerlink" href="#immutable-resources" title="Permanent link">¶</a></h2> +<p>While almost every component in SeAT can 'run on its own', there are some services that SeAT consumes that SeAT can not scale itself. +Instead, SeAT can consume a clustered or load balanced instance of these services. +There are various reasons for this where the most important is that state is maintained between queue workers using Redis and MariaDB.</p> +<p>Services that should be shared between all SeAT components are:</p> +<ul> +<li>The Redis cache.</li> +<li>The MariaDB database.</li> +</ul> +<p>When mentioning these components, they can definitely exist in their clustered/load balanced forms. +For Redis, have a look at their <a href="https://redis.io/topics/cluster-tutorial">Redis cluster tutorial</a> and for MariaDB, +you can have a look at their <a href="https://mariadb.com/kb/en/library/getting-started-with-mariadb-galera-cluster/">MariaDB cluster installation</a>.</p> +<h2 id="simple-scaled-setup">Simple scaled setup<a class="headerlink" href="#simple-scaled-setup" title="Permanent link">¶</a></h2> +<p>The following example setup is probably the most simple option to gain performance improvements by scaling out. +The gist of it is that we simply add more <em>queue worker</em> components to the SeAT setup.</p> +<p>Lets start by taking a look at a diagram, showing the extra <em>queue worker</em> component added.</p> +<p><img alt="simple scale" src="https://i.imgur.com/y1XSxIp.png" /></p> +<p>Installing a new <a href="#server">server</a> with only the queue worker component setup can bring a significant speed boost into the environment. +A new queue worker could be configured to run an extra 4-6 jobs. This queue worker must be configured to make use of the <a href="#immutable-resources">immutable resources</a>.</p> +<h2 id="more-complicated-scaled-setup">More complicated scaled setup<a class="headerlink" href="#more-complicated-scaled-setup" title="Permanent link">¶</a></h2> +<p>Of course, one can totally go full nelson and explode all of the components in use. +Below is an example deployment (with data flow links, red for redis, blue for MariaDB) that shows how each SeAT component can live on its own server.</p> +<p><img alt="complex scale" src="https://i.imgur.com/ZvCYCCE.png" /></p> +<h2 id="component-setups">Component setups<a class="headerlink" href="#component-setups" title="Permanent link">¶</a></h2> +<p>Lets talk about component configurations quickly. +Apart from the <a href="#immutable-resources">immutable resources</a>, all of the software needed can be sourced from SeAT packages. +All of the standard requirements such as PHP7.1 and Supervisor 3 also apply. However, not all components would need a web server for example.</p> +<p>Below are the descriptions (and short requirements list) for the different SeAT components.</p> +<h3 id="web-front-end">Web front end<a class="headerlink" href="#web-front-end" title="Permanent link">¶</a></h3> +<p>To setup a web front end component, use the following steps:</p> +<ul> +<li>Ensure you have at least PHP7.1 installed.</li> +<li>Ensure that you have a web server installed that can serve the <code>public/</code> directory from the SeAT project.</li> +<li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> +<li>Download SeAT somewhere like <code>/var/www/seat</code> using <code>composer create-project eveseat/seat /var/www/seat --no-dev</code>.</li> +<li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your <a href="#immutable-resources">immutable sources</a>.</li> +</ul> +<h3 id="queue-worker">Queue worker<a class="headerlink" href="#queue-worker" title="Permanent link">¶</a></h3> +<p>To setup a queue worker component, use the following steps:</p> +<ul> +<li>Ensure you have at least PHP7.1 installed.</li> +<li>Ensure that you have supervisor3 installed.</li> +<li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> +<li>Download SeAT somewhere using <code>composer create-project eveseat/seat --no-dev</code>.</li> +<li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your <a href="#immutable-resources">immutable sources</a>.</li> +<li>Configure the workers in a <code>seat.ini</code> file for supervisor to start.</li> +</ul> +<h3 id="job-dispatcher">Job dispatcher<a class="headerlink" href="#job-dispatcher" title="Permanent link">¶</a></h3> +<p>To setup a job dispatcher component, use the following steps:</p> +<ul> +<li>Ensure you have at least PHP7.1 installed.</li> +<li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> +<li>Download SeAT somewhere like <code>/var/www/seat</code> using <code>composer create-project eveseat/seat /var/www/seat --no-dev</code>.</li> +<li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your <a href="#immutable-resources">immutable sources</a>.</li> +<li>Setup the cronjob to run <code>php artisan schedule:run 1>> /dev/null 2>&1</code> every minute.</li> +</ul> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/squads/index.html b/admin_guides/squads/index.html new file mode 100644 index 00000000..04ad5318 --- /dev/null +++ b/admin_guides/squads/index.html @@ -0,0 +1,1649 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/squads/"> + + + <link rel="prev" href="../buckets/"> + + + <link rel="next" href="../understanding_tracking/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Squads - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#squads" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Squads + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Squads + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Squads + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-types" class="md-nav__link"> + Squads Types + </a> + + <nav class="md-nav" aria-label="Squads Types"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automatic" class="md-nav__link"> + Automatic + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual" class="md-nav__link"> + Manual + </a> + +</li> + + <li class="md-nav__item"> + <a href="#hidden" class="md-nav__link"> + Hidden + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#squads-filters" class="md-nav__link"> + Squads Filters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squad-applications" class="md-nav__link"> + Squad Applications + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squad-moderators" class="md-nav__link"> + Squad Moderators + </a> + +</li> + + <li class="md-nav__item"> + <a href="#interface" class="md-nav__link"> + Interface + </a> + + <nav class="md-nav" aria-label="Interface"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#squads-list" class="md-nav__link"> + Squads List + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-card" class="md-nav__link"> + Squads Card + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-settings" class="md-nav__link"> + Squads Settings + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-types" class="md-nav__link"> + Squads Types + </a> + + <nav class="md-nav" aria-label="Squads Types"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automatic" class="md-nav__link"> + Automatic + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual" class="md-nav__link"> + Manual + </a> + +</li> + + <li class="md-nav__item"> + <a href="#hidden" class="md-nav__link"> + Hidden + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#squads-filters" class="md-nav__link"> + Squads Filters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squad-applications" class="md-nav__link"> + Squad Applications + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squad-moderators" class="md-nav__link"> + Squad Moderators + </a> + +</li> + + <li class="md-nav__item"> + <a href="#interface" class="md-nav__link"> + Interface + </a> + + <nav class="md-nav" aria-label="Interface"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#squads-list" class="md-nav__link"> + Squads List + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-card" class="md-nav__link"> + Squads Card + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads-settings" class="md-nav__link"> + Squads Settings + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="squads">Squads<a class="headerlink" href="#squads" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>Since SeAT 4.0, there is a way to apply automatic logic between an end user and its roles. +The purpose is to keep distinct the security and automations.</p> +<p>Squads is the core implementation of the deprecated seat-groups plugin.</p> +<h2 id="squads-types">Squads Types<a class="headerlink" href="#squads-types" title="Permanent link">¶</a></h2> +<p>There are multiple kinds of squad. The way they work and the automations they apply depend on their type.</p> +<h3 id="automatic">Automatic<a class="headerlink" href="#automatic" title="Permanent link">¶</a></h3> +<p>This is the simplest squad type. +Membership of a squad of this type is controlled by the filters (see below) set for the squad.</p> +<p>A member of an automatic squad cannot remove themselves from the group. +If a user no longer fulfils the criteria of the filter set for the squad they will be automatically removed from it.</p> +<h3 id="manual">Manual<a class="headerlink" href="#manual" title="Permanent link">¶</a></h3> +<p>Manual squads have to be applied to, the processing of the application depends on whether there is a moderator for the group or not.</p> +<p>If there is no moderator the application will be automatically accepted.</p> +<p>If there is at least one moderator they can accept or reject applications.</p> +<p>Filters applied to a squad of this type will have two effects: +- hide the "Apply" button if the filter criteria are not met +- kick the member from the group if the filter criteria are not met</p> +<h3 id="hidden">Hidden<a class="headerlink" href="#hidden" title="Permanent link">¶</a></h3> +<p>Hidden squads are visible exclusively to their members and admins. +To be part of a hidden squad, the user needs to be added to it by an admin.</p> +<p>This mean, only admin user can invite another user to a hidden squad.</p> +<h2 id="squads-filters">Squads Filters<a class="headerlink" href="#squads-filters" title="Permanent link">¶</a></h2> +<p>Filters have different behaviors depending on the Squad Type. +In case the Squad is of auto type, filters will be applied continuously to invite and kick members from the Squad - based on user changes.</p> +<p>Otherwise, filters are used to automatically kick members from a Squad and determine the availability of the "Apply" button on Squad Card.</p> +<p>Squads Filters have been designed to assist you to build rules which will determine whether a given user is eligible for a Squad. +You pair different conditions together and link them with match keywords.</p> +<p>Match keywords can be either <code>All</code> or <code>Any</code>. +<code>All</code> mean all conditions must be met by the user for them to be eligible. +<code>Any</code> means that a user is eligible if they meet any of the conditions.</p> +<p>To add a condition, use <code>Add Rule</code> button located at the end of the modal. +In case you have to build a complex rule, use <code>Add Group</code> which will allow you to pair multiple conditions in a single rule.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Filters come with multiple operators. Not all operators work with all filters. +<code>Is</code> and <code>Is not</code> are used to indicate either equality with criteria or inequality. Those operators are the most common and work with nearly all filter types. +<code>Contains</code> is used to indicate that criteria must be included in a domain. This operator currently only works with the <code>Scopes</code> filter.</p> +</div> +<p><img alt="Squads Filters" src="../../img/squads_filters.png" /></p> +<div class="admonition example"> +<p class="admonition-title">Example</p> +<p>In the example above, we want only users who own at least one character (inside either <strong>Get Off My Lawn</strong> OR <strong>Toilet Paper.</strong> alliances) AND with skill <strong>Capital Ships</strong> to be eligible for membership in our Squad.</p> +</div> +<h2 id="squad-applications">Squad Applications<a class="headerlink" href="#squad-applications" title="Permanent link">¶</a></h2> +<p>Applications are only available to manual squads.</p> +<p>For a user to be able to apply to a manual squad they need to meed the squads filter criteria. Otherwise, application button will not be available.</p> +<p>If the user applies to a moderated squad, they are required to fill an application form. +This will leave you the ability to build workflow internally and allow moderators to check any incoming members. +Users can also cancel squad applications at any time using the Cancel button which will replace the Join button.</p> +<h2 id="squad-moderators">Squad Moderators<a class="headerlink" href="#squad-moderators" title="Permanent link">¶</a></h2> +<p>Moderators of a Squad don't need to be part of that squad. +They will be able to see a list of every member of each squad they moderate, allowing them to invite further members or kick existing ones.</p> +<p>Squad moderators can also see Squad candidates, the time when they applied and each application form. +From there, they can approve an application or reject it.</p> +<p>When an application is approved, the user who sent it is becomes a member of the Squad. +If an application is denied, the application is removed and user can submit a new application.</p> +<p>Only administrator users can add or remove moderators to/from a Squad.</p> +<h2 id="interface">Interface<a class="headerlink" href="#interface" title="Permanent link">¶</a></h2> +<h3 id="squads-list">Squads List<a class="headerlink" href="#squads-list" title="Permanent link">¶</a></h3> +<p>Squads list is the entry point of squads. You can create a new squad, search for a squad, show available squads and get squad status from there. +The Squads list is available to all users, without any restriction. You can access it using <code>Squads</code> from the left sidebar.</p> +<p><img alt="Sidebar" src="../../img/squads_sidebar.png" /></p> +<p>The list is split in three main areas. +First area, at top, contains controls which will allow you to create a squad, or filter the shown squads. +The main area, contains squads tiles from the active page. You can get up to six squads per page. +Footer area is the pagination controls - allowing you to switch displayed page (first, previous, current, next and last).</p> +<p><img alt="Squad List" src="../../img/squads_list.png" /></p> +<p>Every Squad Tile is built following the same pattern :</p> +<p>1) Logo +2) Name and description +3) User status related to that squad +4) Metadata +5) Type</p> +<p><img alt="Squad Tile" src="../../img/squads_tile.png" /></p> +<p>Except metadata, other attributes are self-explained. Metadata is a list of counters showing you, from left to right:</p> +<ul> +<li>number of members of the squad (in white)</li> +<li>number of moderators of the squad (in orange)</li> +<li>number of applicants to the squad (in blue)</li> +</ul> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Squad Logo is a visual way for your end user to identify quickly a Squad. +By default, logo are generated based on the Squad Name - but you can customise it in the Squad settings.</p> +</div> +<h3 id="squads-card">Squads Card<a class="headerlink" href="#squads-card" title="Permanent link">¶</a></h3> +<p>When you click on a Squad Tile, you'll land on the related Squad Card. Squad Card is the landing area of a Squad. +You will retrieve summarised information you had on the tile in the general pane.</p> +<p>In case the Squad is manual, you will get access to the list of Squad moderators. +This list is public, this mean everyone can see it, without consideration if he's or not a member of that Squad.</p> +<p><img alt="Squad Card General Pane" src="../../img/squads_card_general.png" /></p> +<p>Under the general pane, you'll get access to the list of roles assigned by the Squad. +This list is disclosed to admin user only. This mean neither "standard user" or moderators will get access to it.</p> +<p>From that pane, you are able to remove a role from the squad or add other ones to it.</p> +<p><img alt="Squad Card Role Pane" src="../../img/squads_card_roles.png" /></p> +<p>Members pane is visible to all moderators and squad members. +Moderators can invite or kick user from the squad using actions buttons.</p> +<p><img alt="Squad Card Members Pane" src="../../img/squads_card_members.png" /></p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>When an user is kicked or invited from/to a Squad, the event is shown into security logs. +You will be able to see who kick or invite any user from/to any Squad.</p> +</div> +<p>Last but not least, there is an extra Candidates pane which is available on Manual Moderated Squad. +Squad applications can be managed from this area.</p> +<p><img alt="Squad Card Applications Pane" src="../../img/squads_card_applications.png" /></p> +<h3 id="squads-settings">Squads Settings<a class="headerlink" href="#squads-settings" title="Permanent link">¶</a></h3> +<p>When you create a new Squad, you have to fill a small form which will define it. Mandatory elements are :</p> +<ul> +<li>The name of created squad which have to be unique</li> +<li>Squad Type (between Auto, Hidden and Manual - see <a href="#squads-types">Squads Types</a>)</li> +<li>A description, which will be displayed on both Squad Card and Squad Tile</li> +</ul> +<p>You also can upload a shiny logo which will be used instead the generated icon and provide filters for squad eligibility.</p> +<p><img alt="Squad Creation" src="../../img/squads_create.png" /></p> +<div class="admonition caution"> +<p class="admonition-title">Caution</p> +<p>As soon as you save your Squad, filters are applied. +In case the Squad is of auto type, eligible members will be added to it. +For any other Squad Types, non-eligible members will be kicked from the Squad</p> +</div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Don't pay attention to your Squads Description. If it's too long, it will be shortened when displayed on the Squad Tile. +However, the full description will always be available on the Squad Card into the general pane.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/admin_guides/understanding_tracking/index.html b/admin_guides/understanding_tracking/index.html new file mode 100644 index 00000000..8e6f0188 --- /dev/null +++ b/admin_guides/understanding_tracking/index.html @@ -0,0 +1,1473 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/admin_guides/understanding_tracking/"> + + + <link rel="prev" href="../squads/"> + + + <link rel="next" href="../scaled_deployments/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Understanding Tracking - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#understanding-tracking" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Understanding Tracking + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" checked> + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="true"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Understanding Tracking + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Understanding Tracking + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#why" class="md-nav__link"> + Why + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-its-implemented" class="md-nav__link"> + How its implemented + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-are-you-protecting-my-privacy" class="md-nav__link"> + How are you protecting my privacy? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#can-you-link-the-commits-where-this-was-added" class="md-nav__link"> + Can you link the commits where this was added? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#are-the-stats-a-secret" class="md-nav__link"> + Are the stats a secret? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-do-i-disable-this-crap" class="md-nav__link"> + How do I disable this crap? + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#why" class="md-nav__link"> + Why + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-its-implemented" class="md-nav__link"> + How its implemented + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-are-you-protecting-my-privacy" class="md-nav__link"> + How are you protecting my privacy? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#can-you-link-the-commits-where-this-was-added" class="md-nav__link"> + Can you link the commits where this was added? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#are-the-stats-a-secret" class="md-nav__link"> + Are the stats a secret? + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how-do-i-disable-this-crap" class="md-nav__link"> + How do I disable this crap? + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="understanding-tracking">Understanding Tracking<a class="headerlink" href="#understanding-tracking" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>SeAT implements the <a href="https://developers.google.com/analytics/devguides/collection/protocol/v1/">Google Analytics Measurement Protocol</a>. +This document aims to explain in as much detail as possible how it has been implemented in SeAT, as well as what is tracked and what is not. +This document aims to be as transparent as possible.</p> +<h2 id="why">Why<a class="headerlink" href="#why" title="Permanent link">¶</a></h2> +<p>Well, the most obvious is it being nice to know how much SeAT is actually being used. +One may argue that Github & packagist gives statistics on how many times the project has been installed / cloned, but that does not really +reflect how many <em>actual</em> active installations there are.</p> +<p>Knowing how many active installs there are, encourages development.</p> +<p>Lastly, certain exception types are also sent as hits. This helps <em>immensely</em> with figuring out if a new version may have a serious bug.</p> +<h2 id="how-its-implemented">How its implemented<a class="headerlink" href="#how-its-implemented" title="Permanent link">¶</a></h2> +<p>First of all, the Google Analytics Measurement Protocol is really just that. It just measures usage. In summary, when certain events happen, +only a hit with what happened is sent. <strong>No other data is sent with the hit.</strong></p> +<p>For example. When the scheduler queues jobs, a hit is sent that says that this happened, and that it happened for <em>x</em> amount of keys. +This can be seen in the following line of code: <a href="https://github.com/eveseat/console/blob/master/src/Commands/Eve/QueueKeys.php#L96-L103">QueueKeys</a>. +It can also be seen that no other data goes along with the hit. For example, the <code>access_token</code> and <code>refresh_token</code> +(which is what most will be worried about) does not go with the hit.</p> +<p>Once a hit is getting ready to be sent, information such as which OS/Version as well as versions of installed SeAT packages gets sent along with the hit. +This can be seen in the <a href="https://github.com/eveseat/services/blob/master/src/Jobs/Analytics.php#L119-L156">following lines of code</a>.</p> +<h2 id="how-are-you-protecting-my-privacy">How are you protecting my privacy?<a class="headerlink" href="#how-are-you-protecting-my-privacy" title="Permanent link">¶</a></h2> +<p>Very special care has been taken to ensure that <strong>no</strong> personally identifiable information goes along with the Measurement Protocol hits. +In fact, <a href="https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#uid">its actually not allowed</a> and serves no purpose for tracking. +That being said, the following actions have been taken to ensure that privacy is key:</p> +<ul> +<li>Source IP addresses are anonymized (Ref: <a href="https://github.com/eveseat/services/blob/master/src/Jobs/Analytics.php#L132">eveseat/services:Jobs/Analytics#L132</a>)</li> +<li>Only OS Name, Machine Type and Version is reported. Type <code>a</code> is specifically <strong>not</strong> sent as it will disclose the hostname of the server (Ref: <a href="https://github.com/eveseat/services/blob/master/src/Jobs/Analytics.php#L151-L153">eveseat/services:Jobs/Analytics#L151-L153</a>)</li> +<li>Identifying an installation is done by generating a completely random V4 UUID. It is simply not possible to identify anyone with just this string (Ref: <a href="https://github.com/eveseat/services/blob/master/src/Jobs/Analytics.php#L84-L90">eveseat/services:Jobs/Analytics#L84-L90</a>)</li> +<li>If you insist, tracking can be completely disabled in the SeAT web interface (Ref: <a href="https://github.com/eveseat/services/blob/master/src/Jobs/Analytics.php#L213-L214">eveseat/services:Jobs/Analytics#L213-L214</a> and <a href="https://github.com/eveseat/web/blob/master/src/Http/Controllers/Configuration/SeatController.php#L66">eveseat/web:Http/Controllers/Configuration/SeatController#L66</a>)</li> +</ul> +<h2 id="can-you-link-the-commits-where-this-was-added">Can you link the commits where this was added?<a class="headerlink" href="#can-you-link-the-commits-where-this-was-added" title="Permanent link">¶</a></h2> +<p>Sure!</p> +<ul> +<li><a href="https://github.com/eveseat/services/commit/b2765c6d72f2e4069bc7f4c758f6a30c3872529b">b2765c6d</a></li> +<li><a href="https://github.com/eveseat/console/commit/f3f44dc6e84e73f06dd34872fc157949586ed764">f3f44dc6</a></li> +<li><a href="https://github.com/eveseat/eveapi/commit/cfdf20c0a271fbaa44ce17cd172d6be541265f53">cfdf20c0</a></li> +<li><a href="https://github.com/eveseat/web/commit/ccd332dee18a93dd6041f6f1f989c214faf4e05d">ccd332de</a></li> +<li><a href="https://github.com/eveseat/services/commit/b4a80803a4ab00fa72c68d5774c02a61b243fdbc">b4a80803</a></li> +</ul> +<h2 id="are-the-stats-a-secret">Are the stats a secret?<a class="headerlink" href="#are-the-stats-a-secret" title="Permanent link">¶</a></h2> +<p>Not at all. However, as a start I am going to limit access to people whom have actively contributed towards SeAT. +If you would like access, please ping me on <a href="../../about/contact/#contact">Slack</a>.</p> +<h2 id="how-do-i-disable-this-crap">How do I disable this crap?<a class="headerlink" href="#how-do-i-disable-this-crap" title="Permanent link">¶</a></h2> +<p>If you <em>insist</em> on disabling the usage tracking, you can do this (as a SeAT administrator) by browsing to <strong>Configuration</strong> -> <strong>SeAT Settings</strong> and +setting <strong>Allow Tracking</strong> to <strong>No</strong>.</p> +<p><img alt="disable tracking" src="https://i.imgur.com/SfU3ytq.png" /></p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 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 IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.51d95adb.min.js b/assets/javascripts/bundle.51d95adb.min.js new file mode 100644 index 00000000..b20ec683 --- /dev/null +++ b/assets/javascripts/bundle.51d95adb.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var Ke=T.type,We=T.tagName;return!!(We==="INPUT"&&a[Ke]&&!T.readOnly||We==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function re(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,z){d.append(z,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;h<p.length;h++){var v=p[h];if(Object.prototype.toString.call(v)==="[object Array]"||v.length!==2)this.append(v[0],v[1]);else throw new TypeError("Expected [string, any] as entry at index "+h+" of URLSearchParams's input")}else for(var B in p)p.hasOwnProperty(B)&&this.append(B,p[B]);else throw new TypeError("Unsupported input's type for URLSearchParams")},u=c.prototype;u.append=function(p,m){p in this._entries?this._entries[p].push(String(m)):this._entries[p]=[String(m)]},u.delete=function(p){delete this._entries[p]},u.get=function(p){return p in this._entries?this._entries[p][0]:null},u.getAll=function(p){return p in this._entries?this._entries[p].slice(0):[]},u.has=function(p){return p in this._entries},u.set=function(p,m){this._entries[p]=[String(m)]},u.forEach=function(p,m){var d;for(var h in this._entries)if(this._entries.hasOwnProperty(h)){d=this._entries[h];for(var v=0;v<d.length;v++)p.call(m,d[v],h,this)}},u.keys=function(){var p=[];return this.forEach(function(m,d){p.push(d)}),n(p)},u.values=function(){var p=[];return this.forEach(function(m){p.push(m)}),n(p)},u.entries=function(){var p=[];return this.forEach(function(m,d){p.push([d,m])}),n(p)},r&&(u[Symbol.iterator]=u.entries),u.toString=function(){var p=[];return this.forEach(function(m,d){p.push(o(d)+"="+o(m))}),p.join("&")},e.URLSearchParams=c},s=function(){try{var c=e.URLSearchParams;return new c("?a=1").toString()==="a=1"&&typeof c.prototype.set=="function"&&typeof c.prototype.entries=="function"}catch(u){return!1}};s()||a();var f=e.URLSearchParams.prototype;typeof f.sort!="function"&&(f.sort=function(){var c=this,u=[];this.forEach(function(m,d){u.push([d,m]),c._entries||c.delete(d)}),u.sort(function(m,d){return m[0]<d[0]?-1:m[0]>d[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p<u.length;p++)this.append(u[p][0],u[p][1])}),typeof f._fromString!="function"&&Object.defineProperty(f,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(c){if(this._entries)this._entries={};else{var u=[];this.forEach(function(h,v){u.push(v)});for(var p=0;p<u.length;p++)this.delete(u[p])}c=c.replace(/^\?/,"");for(var m=c.split("&"),d,p=0;p<m.length;p++)d=m[p].split("="),this.append(i(d[0]),d.length>1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(T){var Ke=h[T];h[T]=function(){Ke.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},re=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=re;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var Ke=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},We=Ke;function Ie(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(w){return typeof w}:Ie=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Ie(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w<O.length;w++){var k=O[w];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(j,k.key,k)}}function Oi(j,O,w){return O&&nn(j.prototype,O),w&&nn(j,w),j}function _i(j,O){if(typeof O!="function"&&O!==null)throw new TypeError("Super expression must either be null or a function");j.prototype=Object.create(O&&O.prototype,{constructor:{value:j,writable:!0,configurable:!0}}),O&&gr(j,O)}function gr(j,O){return gr=Object.setPrototypeOf||function(k,F){return k.__proto__=F,k},gr(j,O)}function Mi(j){var O=Ci();return function(){var k=Ct(j),F;if(O){var q=Ct(this).constructor;F=Reflect.construct(k,arguments,q)}else F=k.apply(this,arguments);return Li(this,F)}}function Li(j,O){return O&&(Ie(O)==="object"||typeof O=="function")?O:Ai(j)}function Ai(j){if(j===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return j}function Ci(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(j){return!1}}function Ct(j){return Ct=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},Ct(j)}function yr(j,O){var w="data-clipboard-".concat(j);if(O.hasAttribute(w))return O.getAttribute(w)}var Ri=function(j){_i(w,j);var O=Mi(w);function w(k,F){var q;return Ti(this,w),q=O.call(this),q.resolveOptions(F),q.listenClick(k),q}return Oi(w,[{key:"resolveOptions",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Ie(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",Rt=We({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Le,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(Rt){Le=Le&&!!document.queryCommandSupported(Rt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f<c;f++)s[f].fn.apply(s[f].ctx,a);return this},off:function(i,a){var s=this.e||(this.e={}),f=s[i],c=[];if(f&&a)for(var u=0,p=f.length;u<p;u++)f[u].fn!==a&&f[u].fn._!==a&&c.push(f[u]);return c.length?s[i]=c:delete s[i],this}},n.exports=o,n.exports.TinyEmitter=o}},t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}return function(){r.n=function(n){var o=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(o,{a:o}),o}}(),function(){r.d=function(n,o){for(var i in o)r.o(o,i)&&!r.o(n,i)&&Object.defineProperty(n,i,{enumerable:!0,get:o[i]})}}(),function(){r.o=function(n,o){return Object.prototype.hasOwnProperty.call(n,o)}}(),r(686)}().default})});var Xo=Ht((vw,Jo)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i<t.length;i++){switch(t.charCodeAt(i)){case 34:n=""";break;case 38:n="&";break;case 39:n="'";break;case 60:n="<";break;case 62:n=">";break;default:continue}a!==i&&(o+=t.substring(a,i)),a=i+1,o+=n}return a!==i?o+t.substring(a,i):o}});Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function e(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(r,n){return Array.isArray(n)?r.push.apply(r,e.call(n,t-1)):r.push(n),r},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,"flatMap",{configurable:!0,value:function(e){return Array.prototype.map.apply(this,arguments).flat()},writable:!0});var qO=yt(fn());self.fetch||(self.fetch=function(e,t){return t=t||{},new Promise(function(r,n){var o=new XMLHttpRequest,i=[],a={},s=function c(){return{ok:(o.status/100|0)==2,statusText:o.statusText,status:o.status,url:o.responseURL,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},clone:c,headers:{keys:function(){return i},entries:function(){return i.map(function(u){return[u,o.getResponseHeader(u)]})},get:function(u){return o.getResponseHeader(u)},has:function(u){return o.getResponseHeader(u)!=null}}}};for(var f in o.open(t.method||"get",e,!0),o.onload=function(){o.getAllResponseHeaders().toLowerCase().replace(/^(.+?):/gm,function(c,u){a[u]||i.push(a[u]=u)}),r(s())},o.onerror=n,o.withCredentials=t.credentials=="include",t.headers)o.setRequestHeader(f,t.headers[f]);o.send(t.body||null)})});var QO=yt(un());/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var Tr=function(e,t){return Tr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])},Tr(e,t)};function ne(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Tr(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function pn(e,t,r,n){function o(i){return i instanceof r?i:new r(function(a){a(i)})}return new(r||(r=Promise))(function(i,a){function s(u){try{c(n.next(u))}catch(p){a(p)}}function f(u){try{c(n.throw(u))}catch(p){a(p)}}function c(u){u.done?i(u.value):o(u.value).then(s,f)}c((n=n.apply(e,t||[])).next())})}function Pt(e,t){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(c){return function(u){return f([c,u])}}function f(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,o&&(i=c[0]&2?o.return:c[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,c[1])).done)return i;switch(o=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,o=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){r.label=c[1];break}if(c[0]===6&&r.label<i[1]){r.label=i[1],i=c;break}if(i&&r.label<i[2]){r.label=i[2],r.ops.push(c);break}i[2]&&r.ops.pop(),r.trys.pop();continue}c=t.call(e,r)}catch(u){c=[6,u],o=0}finally{n=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function xe(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n<o;n++)(i||!(n in t))&&(i||(i=Array.prototype.slice.call(t,0,n)),i[n]=t[n]);return e.concat(i||Array.prototype.slice.call(t))}function Xe(e){return this instanceof Xe?(this.v=e,this):new Xe(e)}function ln(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(e,t||[]),o,i=[];return o={},a("next"),a("throw"),a("return"),o[Symbol.asyncIterator]=function(){return this},o;function a(m){n[m]&&(o[m]=function(d){return new Promise(function(h,v){i.push([m,d,h,v])>1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=Fe.EMPTY;function It(e){return e instanceof Fe||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var o=st.delegate;return o!=null&&o.setTimeout?o.setTimeout.apply(o,D([e,t],W(r))):setTimeout.apply(void 0,D([e,t],W(r)))},clearTimeout:function(e){var t=st.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function Ft(e){st.setTimeout(function(){var t=Ae.onUnhandledError;if(t)t(e);else throw e})}function le(){}var hn=function(){return _r("C",void 0,void 0)}();function bn(e){return _r("E",void 0,e)}function vn(e){return _r("N",e,void 0)}function _r(e,t,r){return{kind:e,value:t,error:r}}var Ze=null;function ct(e){if(Ae.useDeprecatedSynchronousErrorHandling){var t=!Ze;if(t&&(Ze={errorThrown:!1,error:null}),e(),t){var r=Ze,n=r.errorThrown,o=r.error;if(Ze=null,n)throw o}}else e()}function gn(e){Ae.useDeprecatedSynchronousErrorHandling&&Ze&&(Ze.errorThrown=!0,Ze.error=e)}var xt=function(e){ne(t,e);function t(r){var n=e.call(this)||this;return n.isStopped=!1,r?(n.destination=r,It(r)&&r.add(n)):n.destination=Di,n}return t.create=function(r,n,o){return new et(r,n,o)},t.prototype.next=function(r){this.isStopped?Lr(vn(r),this):this._next(r)},t.prototype.error=function(r){this.isStopped?Lr(bn(r),this):(this.isStopped=!0,this._error(r))},t.prototype.complete=function(){this.isStopped?Lr(hn,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(r){this.destination.next(r)},t.prototype._error=function(r){try{this.destination.error(r)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Fe);var ji=Function.prototype.bind;function Mr(e,t){return ji.call(e,t)}var Ui=function(){function e(t){this.partialObserver=t}return e.prototype.next=function(t){var r=this.partialObserver;if(r.next)try{r.next(t)}catch(n){jt(n)}},e.prototype.error=function(t){var r=this.partialObserver;if(r.error)try{r.error(t)}catch(n){jt(n)}else jt(t)},e.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(r){jt(r)}},e}(),et=function(e){ne(t,e);function t(r,n,o){var i=e.call(this)||this,a;if(A(r)||!r)a={next:r!=null?r:void 0,error:n!=null?n:void 0,complete:o!=null?o:void 0};else{var s;i&&Ae.useDeprecatedNextContext?(s=Object.create(r),s.unsubscribe=function(){return i.unsubscribe()},a={next:r.next&&Mr(r.next,s),error:r.error&&Mr(r.error,s),complete:r.complete&&Mr(r.complete,s)}):a=r}return i.destination=new Ui(a),i}return t}(xt);function jt(e){Ae.useDeprecatedSynchronousErrorHandling?gn(e):Ft(e)}function Wi(e){throw e}function Lr(e,t){var r=Ae.onStoppedNotification;r&&st.setTimeout(function(){return r(e,t)})}var Di={closed:!0,next:le,error:Wi,complete:le};var ft=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function me(e){return e}function yn(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Ar(e)}function Ar(e){return e.length===0?me:e.length===1?e[0]:function(r){return e.reduce(function(n,o){return o(n)},r)}}var U=function(){function e(t){t&&(this._subscribe=t)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(t,r,n){var o=this,i=zi(t)?t:new et(t,r,n);return ct(function(){var a=o,s=a.operator,f=a.source;i.add(s?s.call(i,f):f?o._subscribe(i):o._trySubscribe(i))}),i},e.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(r){t.error(r)}},e.prototype.forEach=function(t,r){var n=this;return r=xn(r),new r(function(o,i){var a=new et({next:function(s){try{t(s)}catch(f){i(f),a.unsubscribe()}},error:i,complete:o});n.subscribe(a)})},e.prototype._subscribe=function(t){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(t)},e.prototype[ft]=function(){return this},e.prototype.pipe=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return Ar(t)(this)},e.prototype.toPromise=function(t){var r=this;return t=xn(t),new t(function(n,o){var i;r.subscribe(function(a){return i=a},function(a){return o(a)},function(){return n(i)})})},e.create=function(t){return new e(t)},e}();function xn(e){var t;return(t=e!=null?e:Ae.Promise)!==null&&t!==void 0?t:Promise}function Vi(e){return e&&A(e.next)&&A(e.error)&&A(e.complete)}function zi(e){return e&&e instanceof xt||Vi(e)&&It(e)}function Ni(e){return A(e==null?void 0:e.lift)}function g(e){return function(t){if(Ni(t))return t.lift(function(r){try{return e(r,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function y(e,t,r,n,o){return new qi(e,t,r,n,o)}var qi=function(e){ne(t,e);function t(r,n,o,i,a,s){var f=e.call(this,r)||this;return f.onFinalize=a,f.shouldUnsubscribe=s,f._next=n?function(c){try{n(c)}catch(u){r.error(u)}}:e.prototype._next,f._error=i?function(c){try{i(c)}catch(u){r.error(u)}finally{this.unsubscribe()}}:e.prototype._error,f._complete=o?function(){try{o()}catch(c){r.error(c)}finally{this.unsubscribe()}}:e.prototype._complete,f}return t.prototype.unsubscribe=function(){var r;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((r=this.onFinalize)===null||r===void 0||r.call(this))}},t}(xt);var ut={schedule:function(e){var t=requestAnimationFrame,r=cancelAnimationFrame,n=ut.delegate;n&&(t=n.requestAnimationFrame,r=n.cancelAnimationFrame);var o=t(function(i){r=void 0,e(i)});return new Fe(function(){return r==null?void 0:r(o)})},requestAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=ut.delegate;return((r==null?void 0:r.requestAnimationFrame)||requestAnimationFrame).apply(void 0,D([],W(e)))},cancelAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=ut.delegate;return((r==null?void 0:r.cancelAnimationFrame)||cancelAnimationFrame).apply(void 0,D([],W(e)))},delegate:void 0};var En=at(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}});var E=function(e){ne(t,e);function t(){var r=e.call(this)||this;return r.closed=!1,r.currentObservers=null,r.observers=[],r.isStopped=!1,r.hasError=!1,r.thrownError=null,r}return t.prototype.lift=function(r){var n=new wn(this,this);return n.operator=r,n},t.prototype._throwIfClosed=function(){if(this.closed)throw new En},t.prototype.next=function(r){var n=this;ct(function(){var o,i;if(n._throwIfClosed(),!n.isStopped){n.currentObservers||(n.currentObservers=Array.from(n.observers));try{for(var a=xe(n.currentObservers),s=a.next();!s.done;s=a.next()){var f=s.value;f.next(r)}}catch(c){o={error:c}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}}})},t.prototype.error=function(r){var n=this;ct(function(){if(n._throwIfClosed(),!n.isStopped){n.hasError=n.isStopped=!0,n.thrownError=r;for(var o=n.observers;o.length;)o.shift().error(r)}})},t.prototype.complete=function(){var r=this;ct(function(){if(r._throwIfClosed(),!r.isStopped){r.isStopped=!0;for(var n=r.observers;n.length;)n.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var r;return((r=this.observers)===null||r===void 0?void 0:r.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new Fe(function(){n.currentObservers=null,De(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f<s.length&&!r.closed;f+=i?1:2)r.next(s[f]);return this._checkFinalizedStatuses(r),n},t.prototype._trimBuffer=function(){var r=this,n=r._bufferSize,o=r._timestampProvider,i=r._buffer,a=r._infiniteTimeWindow,s=(a?1:2)*n;if(n<1/0&&s<i.length&&i.splice(0,i.length-s),!a){for(var f=o.now(),c=0,u=1;u<i.length&&i[u]<=f;u+=2)c=u;c&&i.splice(0,c+1)}},t}(E);var Sn=function(e){ne(t,e);function t(r,n){return e.call(this)||this}return t.prototype.schedule=function(r,n){return n===void 0&&(n=0),this},t}(Fe);var St={setInterval:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var o=St.delegate;return o!=null&&o.setInterval?o.setInterval.apply(o,D([e,t],W(r))):setInterval.apply(void 0,D([e,t],W(r)))},clearInterval:function(e){var t=St.delegate;return((t==null?void 0:t.clearInterval)||clearInterval)(e)},delegate:void 0};var Ut=function(e){ne(t,e);function t(r,n){var o=e.call(this,r,n)||this;return o.scheduler=r,o.work=n,o.pending=!1,o}return t.prototype.schedule=function(r,n){var o;if(n===void 0&&(n=0),this.closed)return this;this.state=r;var i=this.id,a=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(a,i,n)),this.pending=!0,this.delay=n,this.id=(o=this.id)!==null&&o!==void 0?o:this.requestAsyncId(a,this.id,n),this},t.prototype.requestAsyncId=function(r,n,o){return o===void 0&&(o=0),St.setInterval(r.flush.bind(r,this),o)},t.prototype.recycleAsyncId=function(r,n,o){if(o===void 0&&(o=0),o!=null&&this.delay===o&&this.pending===!1)return n;n!=null&&St.clearInterval(n)},t.prototype.execute=function(r,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var o=this._execute(r,n);if(o)return o;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(r,n){var o=!1,i;try{this.work(r)}catch(a){o=!0,i=a||new Error("Scheduled action threw falsy error")}if(o)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var r=this,n=r.id,o=r.scheduler,i=o.actions;this.work=this.state=this.scheduler=null,this.pending=!1,De(i,this),n!=null&&(this.id=this.recycleAsyncId(o,n,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(Sn);var Cr=function(){function e(t,r){r===void 0&&(r=e.now),this.schedulerActionCtor=t,this.now=r}return e.prototype.schedule=function(t,r,n){return r===void 0&&(r=0),new this.schedulerActionCtor(this,t).schedule(n,r)},e.now=Et.now,e}();var Wt=function(e){ne(t,e);function t(r,n){n===void 0&&(n=Cr.now);var o=e.call(this,r,n)||this;return o.actions=[],o._active=!1,o}return t.prototype.flush=function(r){var n=this.actions;if(this._active){n.push(r);return}var o;this._active=!0;do if(o=r.execute(r.state,r.delay))break;while(r=n.shift());if(this._active=!1,o){for(;r=n.shift();)r.unsubscribe();throw o}},t}(Cr);var ue=new Wt(Ut),Rr=ue;var Tn=function(e){ne(t,e);function t(r,n){var o=e.call(this,r,n)||this;return o.scheduler=r,o.work=n,o}return t.prototype.requestAsyncId=function(r,n,o){return o===void 0&&(o=0),o!==null&&o>0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var On=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r<e.length&&!t.closed;r++)t.next(e[r]);t.complete()})}function Gi(e){return new U(function(t){e.then(function(r){t.closed||(t.next(r),t.complete())},function(r){return t.error(r)}).then(null,Ft)})}function Bi(e){return new U(function(t){var r,n;try{for(var o=xe(e),i=o.next();!i.done;i=o.next()){var a=i.value;if(t.next(a),t.closed)return}}catch(s){r={error:s}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}t.complete()})}function _n(e){return new U(function(t){Xi(e,t).catch(function(r){return t.error(r)})})}function Ji(e){return _n(Gt(e))}function Xi(e,t){var r,n,o,i;return pn(this,void 0,void 0,function(){var a,s;return Pt(this,function(f){switch(f.label){case 0:f.trys.push([0,5,6,11]),r=mn(e),f.label=1;case 1:return[4,r.next()];case 2:if(n=f.sent(),!!n.done)return[3,4];if(a=n.value,t.next(a),t.closed)return[2];f.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return s=f.sent(),o={error:s},[3,11];case 6:return f.trys.push([6,,9,10]),n&&!n.done&&(i=r.return)?[4,i.call(r)]:[3,8];case 7:f.sent(),f.label=8;case 8:return[3,10];case 9:if(o)throw o.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function be(e,t,r,n,o){n===void 0&&(n=0),o===void 0&&(o=!1);var i=t.schedule(function(){r(),o?e.add(this.schedule(null,n)):this.unsubscribe()},n);if(e.add(i),!o)return i}function Ve(e,t){return t===void 0&&(t=0),g(function(r,n){r.subscribe(y(n,function(o){return be(n,e,function(){return n.next(o)},t)},function(){return be(n,e,function(){return n.complete()},t)},function(o){return be(n,e,function(){return n.error(o)},t)}))})}function tt(e,t){return t===void 0&&(t=0),g(function(r,n){n.add(e.schedule(function(){return r.subscribe(n)},t))})}function Mn(e,t){return $(e).pipe(tt(t),Ve(t))}function Ln(e,t){return $(e).pipe(tt(t),Ve(t))}function An(e,t){return new U(function(r){var n=0;return t.schedule(function(){n===e.length?r.complete():(r.next(e[n++]),r.closed||this.schedule())})})}function Cn(e,t){return new U(function(r){var n;return be(r,t,function(){n=e[Qt](),be(r,t,function(){var o,i,a;try{o=n.next(),i=o.value,a=o.done}catch(s){r.error(s);return}a?r.complete():r.next(i)},0,!0)}),function(){return A(n==null?void 0:n.return)&&n.return()}})}function Jt(e,t){if(!e)throw new Error("Iterable cannot be null");return new U(function(r){be(r,t,function(){var n=e[Symbol.asyncIterator]();be(r,t,function(){n.next().then(function(o){o.done?r.complete():r.next(o.value)})},0,!0)})})}function Rn(e,t){return Jt(Gt(e),t)}function kn(e,t){if(e!=null){if(Nt(e))return Mn(e,t);if(pt(e))return An(e,t);if(zt(e))return Ln(e,t);if(qt(e))return Jt(e,t);if(Yt(e))return Cn(e,t);if(Bt(e))return Rn(e,t)}throw Kt(e)}function ve(e,t){return t?kn(e,t):$(e)}function H(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Se(e);return ve(e,r)}function Tt(e,t){var r=A(e)?e:function(){return e},n=function(o){return o.error(r())};return new U(t?function(o){return t.schedule(n,0,o)}:n)}var Xt=at(function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}});function Hn(e){return e instanceof Date&&!isNaN(e)}function l(e,t){return g(function(r,n){var o=0;r.subscribe(y(n,function(i){n.next(e.call(t,i,o++))}))})}var Zi=Array.isArray;function ea(e,t){return Zi(t)?e.apply(void 0,D([],W(t))):e(t)}function Ye(e){return l(function(t){return ea(e,t)})}var ta=Array.isArray,ra=Object.getPrototypeOf,na=Object.prototype,oa=Object.keys;function Pn(e){if(e.length===1){var t=e[0];if(ta(t))return{args:t,keys:null};if(ia(t)){var r=oa(t);return{args:r.map(function(n){return t[n]}),keys:r}}}return{args:e,keys:null}}function ia(e){return e&&typeof e=="object"&&ra(e)===na}function $n(e,t){return e.reduce(function(r,n,o){return r[n]=t[o],r},{})}function Q(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Se(e),n=Qe(e),o=Pn(e),i=o.args,a=o.keys;if(i.length===0)return ve([],r);var s=new U(Hr(i,r,a?function(f){return $n(a,f)}:me));return n?s.pipe(Ye(n)):s}function Hr(e,t,r){return r===void 0&&(r=me),function(n){In(t,function(){for(var o=e.length,i=new Array(o),a=o,s=o,f=function(u){In(t,function(){var p=ve(e[u],t),m=!1;p.subscribe(y(n,function(d){i[u]=d,m||(m=!0,s--),s||n.next(r(i.slice()))},function(){--a||n.complete()}))},n)},c=0;c<o;c++)f(c)},n)}}function In(e,t,r){e?be(r,e,t):t()}function Fn(e,t,r,n,o,i,a,s){var f=[],c=0,u=0,p=!1,m=function(){p&&!f.length&&!c&&t.complete()},d=function(v){return c<n?h(v):f.push(v)},h=function(v){i&&t.next(v),c++;var B=!1;$(r(v,u++)).subscribe(y(t,function(re){o==null||o(re),i?d(re):t.next(re)},function(){B=!0},void 0,function(){if(B)try{c--;for(var re=function(){var z=f.shift();a?be(t,a,function(){return h(z)}):h(z)};f.length&&c<n;)re();m()}catch(z){t.error(z)}}))};return e.subscribe(y(t,d,function(){p=!0,m()})),function(){s==null||s()}}function ie(e,t,r){return r===void 0&&(r=1/0),A(t)?ie(function(n,o){return l(function(i,a){return t(n,i,o,a)})($(e(n,o)))},r):(typeof t=="number"&&(r=t),g(function(n,o){return Fn(n,o,e,r)}))}function lt(e){return e===void 0&&(e=1/0),ie(me,e)}function jn(){return lt(1)}function rt(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return jn()(ve(e,Se(e)))}function I(e){return new U(function(t){$(e()).subscribe(t)})}var aa=["addListener","removeListener"],sa=["addEventListener","removeEventListener"],ca=["on","off"];function b(e,t,r,n){if(A(r)&&(n=r,r=void 0),n)return b(e,t,r).pipe(Ye(n));var o=W(pa(e)?sa.map(function(s){return function(f){return e[s](t,f,r)}}):fa(e)?aa.map(Un(e,t)):ua(e)?ca.map(Un(e,t)):[],2),i=o[0],a=o[1];if(!i&&pt(e))return ie(function(s){return b(s,t,r)})($(e));if(!i)throw new TypeError("Invalid event target");return new U(function(s){var f=function(){for(var c=[],u=0;u<arguments.length;u++)c[u]=arguments[u];return s.next(1<c.length?c:c[0])};return i(f),function(){return a(f)}})}function Un(e,t){return function(r){return function(n){return e[r](t,n)}}}function fa(e){return A(e.addListener)&&A(e.removeListener)}function ua(e){return A(e.on)&&A(e.off)}function pa(e){return A(e.addEventListener)&&A(e.removeEventListener)}function Zt(e,t,r){return r?Zt(e,t).pipe(Ye(r)):new U(function(n){var o=function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return n.next(a.length===1?a[0]:a)},i=e(o);return A(t)?function(){return t(o,i)}:void 0})}function Ge(e,t,r){e===void 0&&(e=0),r===void 0&&(r=Rr);var n=-1;return t!=null&&(Dt(t)?r=t:n=t),new U(function(o){var i=Hn(e)?+e-r.now():e;i<0&&(i=0);var a=0;return r.schedule(function(){o.closed||(o.next(a++),0<=n?this.schedule(void 0,n):o.complete())},i)})}function L(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Se(e),n=Vt(e,1/0),o=e;return o.length?o.length===1?$(o[0]):lt(n)(ve(o,r)):R}var Te=new U(le);var la=Array.isArray;function mt(e){return e.length===1&&la(e[0])?e[0]:e}function _(e,t){return g(function(r,n){var o=0;r.subscribe(y(n,function(i){return e.call(t,i,o++)&&n.next(i)}))})}function Ot(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Qe(e),n=mt(e);return n.length?new U(function(o){var i=n.map(function(){return[]}),a=n.map(function(){return!1});o.add(function(){i=a=null});for(var s=function(c){$(n[c]).subscribe(y(o,function(u){if(i[c].push(u),i.every(function(m){return m.length})){var p=i.map(function(m){return m.shift()});o.next(r?r.apply(void 0,D([],W(p))):p),i.some(function(m,d){return!m.length&&a[d]})&&o.complete()}},function(){a[c]=!0,!i[c].length&&o.complete()}))},f=0;!o.closed&&f<n.length;f++)s(f);return function(){i=a=null}}):R}function Wn(e){return g(function(t,r){var n=!1,o=null,i=null,a=!1,s=function(){if(i==null||i.unsubscribe(),i=null,n){n=!1;var c=o;o=null,r.next(c)}a&&r.complete()},f=function(){i=null,a&&r.complete()};t.subscribe(y(r,function(c){n=!0,o=c,i||$(e(c)).subscribe(i=y(r,s,f))},function(){a=!0,(!n||!i||i.closed)&&r.complete()}))})}function Ce(e,t){return t===void 0&&(t=ue),Wn(function(){return Ge(e,t)})}function Re(e,t){return t===void 0&&(t=null),t=t!=null?t:e,g(function(r,n){var o=[],i=0;r.subscribe(y(n,function(a){var s,f,c,u,p=null;i++%t===0&&o.push([]);try{for(var m=xe(o),d=m.next();!d.done;d=m.next()){var h=d.value;h.push(a),e<=h.length&&(p=p!=null?p:[],p.push(h))}}catch(re){s={error:re}}finally{try{d&&!d.done&&(f=m.return)&&f.call(m)}finally{if(s)throw s.error}}if(p)try{for(var v=xe(p),B=v.next();!B.done;B=v.next()){var h=B.value;De(o,h),n.next(h)}}catch(re){c={error:re}}finally{try{B&&!B.done&&(u=v.return)&&u.call(v)}finally{if(c)throw c.error}}},function(){var a,s;try{for(var f=xe(o),c=f.next();!c.done;c=f.next()){var u=c.value;n.next(u)}}catch(p){a={error:p}}finally{try{c&&!c.done&&(s=f.return)&&s.call(f)}finally{if(a)throw a.error}}n.complete()},void 0,function(){o=null}))})}function ce(e){return g(function(t,r){var n=null,o=!1,i;n=t.subscribe(y(r,void 0,void 0,function(a){i=$(e(a,ce(e)(t))),n?(n.unsubscribe(),n=null,i.subscribe(r)):o=!0})),o&&(n.unsubscribe(),n=null,i.subscribe(r))})}function Dn(e,t,r,n,o){return function(i,a){var s=r,f=t,c=0;i.subscribe(y(a,function(u){var p=c++;f=s?e(f,u,p):(s=!0,u),n&&a.next(f)},o&&function(){s&&a.next(f),a.complete()}))}}function Pr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Qe(e);return r?yn(Pr.apply(void 0,D([],W(e))),Ye(r)):g(function(n,o){Hr(D([n],W(mt(e))))(o)})}function nt(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Pr.apply(void 0,D([],W(e)))}function $r(e,t){return A(t)?ie(e,t,1):ie(e,1)}function ke(e,t){return t===void 0&&(t=ue),g(function(r,n){var o=null,i=null,a=null,s=function(){if(o){o.unsubscribe(),o=null;var c=i;i=null,n.next(c)}};function f(){var c=a+e,u=t.now();if(u<c){o=this.schedule(void 0,c-u),n.add(o);return}s()}r.subscribe(y(n,function(c){i=c,a=t.now(),o||(o=t.schedule(f,e),n.add(o))},function(){s(),n.complete()},void 0,function(){i=o=null}))})}function He(e){return g(function(t,r){var n=!1;t.subscribe(y(r,function(o){n=!0,r.next(o)},function(){n||r.next(e),r.complete()}))})}function Oe(e){return e<=0?function(){return R}:g(function(t,r){var n=0;t.subscribe(y(r,function(o){++n<=e&&(r.next(o),e<=n&&r.complete())}))})}function ee(){return g(function(e,t){e.subscribe(y(t,le))})}function Vn(e){return l(function(){return e})}function Ir(e,t){return t?function(r){return rt(t.pipe(Oe(1),ee()),r.pipe(Ir(e)))}:ie(function(r,n){return $(e(r,n)).pipe(Oe(1),Vn(r))})}function ze(e,t){t===void 0&&(t=ue);var r=Ge(e,t);return Ir(function(){return r})}function Y(e,t){return t===void 0&&(t=me),e=e!=null?e:ma,g(function(r,n){var o,i=!0;r.subscribe(y(n,function(a){var s=t(a);(i||!e(o,s))&&(i=!1,o=s,n.next(a))}))})}function ma(e,t){return e===t}function X(e,t){return Y(function(r,n){return t?t(r[e],n[e]):r[e]===n[e]})}function zn(e){return e===void 0&&(e=da),g(function(t,r){var n=!1;t.subscribe(y(r,function(o){n=!0,r.next(o)},function(){return n?r.complete():r.error(e())}))})}function da(){return new Xt}function oe(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(r){return rt(r,H.apply(void 0,D([],W(e))))}}function C(e){return g(function(t,r){try{t.subscribe(r)}finally{r.add(e)}})}function Pe(e,t){var r=arguments.length>=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):me,Oe(1),r?He(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Se(e),n=Vt(e,1/0);return e=mt(e),g(function(o,i){lt(n)(ve(D([o],W(e)),r)).subscribe(i)})}function Ne(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Nn.apply(void 0,D([],W(e)))}function _t(e){var t,r=1/0,n;return e!=null&&(typeof e=="object"?(t=e.count,r=t===void 0?1/0:t,n=e.delay):r=e),r<=0?function(){return R}:g(function(o,i){var a=0,s,f=function(){if(s==null||s.unsubscribe(),s=null,n!=null){var u=typeof n=="number"?Ge(n):$(n(a)),p=y(i,function(){p.unsubscribe(),c()});u.subscribe(p)}else c()},c=function(){var u=!1;s=o.subscribe(y(i,void 0,function(){++a<r?s?f():u=!0:i.complete()})),u&&f()};c()})}function er(e){return g(function(t,r){var n=!1,o=null;t.subscribe(y(r,function(i){n=!0,o=i})),$(e).subscribe(y(r,function(){if(n){n=!1;var i=o;o=null,r.next(i)}},le))})}function Fr(e,t){return g(Dn(e,t,arguments.length>=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;re(),T==null||T.unsubscribe()};return g(function(T,Ke){d++,!v&&!h&&B();var We=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),We.subscribe(Ke),!u&&d>0&&(u=new et({next:function(Ie){return We.next(Ie)},error:function(Ie){v=!0,B(),p=jr(re,o,Ie),We.error(Ie)},complete:function(){h=!0,B(),p=jr(re,a),We.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];if(t===!0){e();return}if(t!==!1){var o=new et({next:function(){o.unsubscribe(),e()}});return $(t.apply(void 0,D([],W(r)))).subscribe(o)}}function J(e,t,r){var n,o,i,a,s=!1;return e&&typeof e=="object"?(n=e.bufferSize,a=n===void 0?1/0:n,o=e.windowTime,t=o===void 0?1/0:o,i=e.refCount,s=i===void 0?!1:i,r=e.scheduler):a=e!=null?e:1/0,fe({connector:function(){return new wt(a,t,r)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:s})}function $e(e){return _(function(t,r){return e<=r})}function Mt(e){return g(function(t,r){var n=!1,o=y(r,function(){o==null||o.unsubscribe(),n=!0},le);$(e).subscribe(o),t.subscribe(y(r,function(i){return n&&r.next(i)}))})}function N(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Se(e);return g(function(n,o){(r?rt(e,n,r):rt(e,n)).subscribe(o)})}function x(e,t){return g(function(r,n){var o=null,i=0,a=!1,s=function(){return a&&!o&&n.complete()};r.subscribe(y(n,function(f){o==null||o.unsubscribe();var c=0,u=i++;$(e(f,u)).subscribe(o=y(n,function(p){return n.next(t?t(f,p,u,c++):p)},function(){o=null,s()}))},function(){a=!0,s()}))})}function G(e){return g(function(t,r){$(e).subscribe(y(r,function(){return r.complete()},le)),!r.closed&&t.subscribe(r)})}function Ur(e,t){return t===void 0&&(t=!1),g(function(r,n){var o=0;r.subscribe(y(n,function(i){var a=e(i,o++);(a||t)&&n.next(i),!a&&n.complete()}))})}function S(e,t,r){var n=A(e)||t||r?{next:e,error:t,complete:r}:e;return n?g(function(o,i){var a;(a=n.subscribe)===null||a===void 0||a.call(n);var s=!0;o.subscribe(y(i,function(f){var c;(c=n.next)===null||c===void 0||c.call(n,f),i.next(f)},function(){var f;s=!1,(f=n.complete)===null||f===void 0||f.call(n),i.complete()},function(f){var c;s=!1,(c=n.error)===null||c===void 0||c.call(n,f),i.error(f)},function(){var f,c;s&&((f=n.unsubscribe)===null||f===void 0||f.call(n)),(c=n.finalize)===null||c===void 0||c.call(n)}))}):me}var Wr={leading:!0,trailing:!1};function qn(e,t){return t===void 0&&(t=Wr),g(function(r,n){var o=t.leading,i=t.trailing,a=!1,s=null,f=null,c=!1,u=function(){f==null||f.unsubscribe(),f=null,i&&(d(),c&&n.complete())},p=function(){f=null,c&&n.complete()},m=function(h){return f=$(e(h)).subscribe(y(n,u,p))},d=function(){if(a){a=!1;var h=s;s=null,n.next(h),!c&&m(h)}};r.subscribe(y(n,function(h){a=!0,s=h,!(f&&!f.closed)&&(o?d():m(h))},function(){c=!0,!(i&&a&&f&&!f.closed)&&n.complete()}))})}function Dr(e,t,r){t===void 0&&(t=ue),r===void 0&&(r=Wr);var n=Ge(e,t);return qn(function(){return n},r)}function ae(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Qe(e);return g(function(n,o){for(var i=e.length,a=new Array(i),s=e.map(function(){return!1}),f=!1,c=function(p){$(e[p]).subscribe(y(o,function(m){a[p]=m,!f&&!s[p]&&(s[p]=!0,(f=s.every(me))&&(s=null))},le))},u=0;u<i;u++)c(u);n.subscribe(y(o,function(p){if(f){var m=D([p],W(a));o.next(r?r.apply(void 0,D([],W(m))):m)}}))})}function Kn(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return g(function(r,n){Ot.apply(void 0,D([r],W(e))).subscribe(n)})}function Vr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Kn.apply(void 0,D([],W(e)))}function Qn(){let e=new wt(1);return b(document,"DOMContentLoaded",{once:!0}).subscribe(()=>e.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),Y())}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,we),l(()=>Be(e)),N(Be(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,we),l(()=>rr(e)),N(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o<i.length;o++){var a=i[o];r.call(n,a[1],a[0])}},t}()}(),zr=typeof window!="undefined"&&typeof document!="undefined"&&window.document===document,nr=function(){return typeof global!="undefined"&&global.Math===Math?global:typeof self!="undefined"&&self.Math===Math?self:typeof window!="undefined"&&window.Math===Math?window:Function("return this")()}(),ha=function(){return typeof requestAnimationFrame=="function"?requestAnimationFrame.bind(nr):function(e){return setTimeout(function(){return e(Date.now())},1e3/60)}}(),ba=2;function va(e,t){var r=!1,n=!1,o=0;function i(){r&&(r=!1,e()),n&&s()}function a(){ha(i)}function s(){var f=Date.now();if(r){if(f-o<ba)return;n=!0}else r=!0,n=!1,setTimeout(a,t);o=f}return s}var ga=20,ya=["top","right","bottom","left","width","height","size","weight"],xa=typeof MutationObserver!="undefined",Ea=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=va(this.refresh.bind(this),ga)}return e.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},e.prototype.removeObserver=function(t){var r=this.observers_,n=r.indexOf(t);~n&&r.splice(n,1),!r.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){var t=this.updateObservers_();t&&this.refresh()},e.prototype.updateObservers_=function(){var t=this.observers_.filter(function(r){return r.gatherActive(),r.hasActive()});return t.forEach(function(r){return r.broadcastActive()}),t.length>0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r<n.length;r++){var o=n[r];Object.defineProperty(e,o,{value:t[o],enumerable:!1,writable:!1,configurable:!0})}return e},ht=function(e){var t=e&&e.ownerDocument&&e.ownerDocument.defaultView;return t||nr},Xn=ir(0,0,0,0);function or(e){return parseFloat(e)||0}function Gn(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return t.reduce(function(n,o){var i=e["border-"+o+"-width"];return n+or(i)},0)}function wa(e){for(var t=["top","right","bottom","left"],r={},n=0,o=t;n<o.length;n++){var i=o[n],a=e["padding-"+i];r[i]=or(a)}return r}function Sa(e){var t=e.getBBox();return ir(0,0,t.width,t.height)}function Ta(e){var t=e.clientWidth,r=e.clientHeight;if(!t&&!r)return Xn;var n=ht(e).getComputedStyle(e),o=wa(n),i=o.left+o.right,a=o.top+o.bottom,s=or(n.width),f=or(n.height);if(n.boxSizing==="border-box"&&(Math.round(s+i)!==t&&(s-=Gn(n,"left","right")+i),Math.round(f+a)!==r&&(f-=Gn(n,"top","bottom")+a)),!_a(e)){var c=Math.round(s+i)-t,u=Math.round(f+a)-r;Math.abs(c)!==1&&(s-=c),Math.abs(u)!==1&&(f-=u)}return ir(o.left,o.top,s,f)}var Oa=function(){return typeof SVGGraphicsElement!="undefined"?function(e){return e instanceof ht(e).SVGGraphicsElement}:function(e){return e instanceof ht(e).SVGElement&&typeof e.getBBox=="function"}}();function _a(e){return e===ht(e).document.documentElement}function Ma(e){return zr?Oa(e)?Sa(e):Ta(e):Xn}function La(e){var t=e.x,r=e.y,n=e.width,o=e.height,i=typeof DOMRectReadOnly!="undefined"?DOMRectReadOnly:Object,a=Object.create(i.prototype);return Jn(a,{x:t,y:r,width:n,height:o,top:r,right:t+n,bottom:o+r,left:t}),a}function ir(e,t,r,n){return{x:e,y:t,width:r,height:n}}var Aa=function(){function e(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=ir(0,0,0,0),this.target=t}return e.prototype.isActive=function(){var t=Ma(this.target);return this.contentRect_=t,t.width!==this.broadcastWidth||t.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},e}(),Ca=function(){function e(t,r){var n=La(r);Jn(this,{target:t,contentRect:n})}return e}(),Ra=function(){function e(t,r,n){if(this.activeObservations_=[],this.observations_=new Bn,typeof t!="function")throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=r,this.callbackCtx_=n}return e.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element=="undefined"||!(Element instanceof Object))){if(!(t instanceof ht(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)||(r.set(t,new Aa(t)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element=="undefined"||!(Element instanceof Object))){if(!(t instanceof ht(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var r=this.observations_;r.has(t)&&(r.delete(t),r.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach(function(r){r.isActive()&&t.activeObservations_.push(r)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,r=this.activeObservations_.map(function(n){return new Ca(n.target,n.broadcastRect())});this.callback_.call(t,r,t),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),N(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return cr[e].checked}function qe(e,t){cr[e].checked!==t&&cr[e].click()}function je(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>se(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function Ue(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Be(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(`<html><body><script>postMessage=${e};importScripts=${t};addEventListener("error",ev=>{parent.dispatchEvent(new ErrorEvent("error",{filename:"${n}",error:ev.error}))})<\/script><script src="${n}?${+Date.now()}"><\/script></body></html>`),this.w.document.close(),window.onmessage=this.m,window.onerror=this.e,this.r=new Promise((a,s)=>{this.w.onload=a,this.w.onerror=s})}terminate(){document.body.removeChild(this.iframe),window.onmessage=window.onerror=null}postMessage(n){this.r.catch().then(()=>{this.w.dispatchEvent(new MessageEvent("message",{data:n}))})}get w(){return this.iframe.contentWindow}};window.IFrameWorker=r,location.protocol==="file:"&&(window.Worker=r)})();function ja(e){return b(e,"message",t=>t.data)}function Ua(e){let t=new E;return t.subscribe(r=>e.postMessage(r)),t}function xo(e,t=new Worker(e)){let r=ja(t),n=Ua(t),o=new E;o.subscribe(n);let i=n.pipe(ee(),oe(!0));return o.pipe(ee(),Ne(r.pipe(G(i))),fe())}var Wa=V("#__config"),vt=JSON.parse(Wa.textContent);vt.base=`${new URL(vt.base,Me())}`;function pe(){return vt}function Z(e){return vt.features.includes(e)}function he(e,t){return typeof t!="undefined"?vt.translations[e].replace("#",t.toString()):vt.translations[e]}function ye(e,t=document){return V(`[data-md-component=${e}]`,t)}function te(e,t=document){return K(`[data-md-component=${e}]`,t)}function Da(e){let t=V(".md-typeset > :first-child",e);return b(t,"click",{once:!0}).pipe(l(()=>V(".md-typeset",e)),l(r=>({hash:__md_hash(r.innerHTML)})))}function Eo(e){return!Z("announce.dismiss")||!e.childElementCount?R:I(()=>{let t=new E;return t.pipe(N({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),Da(e).pipe(S(r=>t.next(r)),C(()=>t.complete()),l(r=>P({ref:e},r)))})}function Va(e,{target$:t}){return t.pipe(l(r=>({hidden:r!==e})))}function wo(e,t){let r=new E;return r.subscribe(({hidden:n})=>{e.hidden=n}),Va(e,t).pipe(S(n=>r.next(n)),C(()=>r.complete()),l(n=>P({ref:e},n)))}var Ho=yt(Qr());function Yr(e){return M("div",{class:"md-tooltip",id:e},M("div",{class:"md-tooltip__inner md-typeset"}))}function So(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return M("aside",{class:"md-annotation",tabIndex:0},Yr(t),M("a",{href:r,class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}else return M("aside",{class:"md-annotation",tabIndex:0},Yr(t),M("span",{class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}function To(e){return M("button",{class:"md-clipboard md-icon",title:he("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Gr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(f=>!e.terms[f]).reduce((f,c)=>[...f,M("del",null,c)," "],[]).slice(0,-1),i=pe(),a=new URL(e.location,i.base);Z("search.highlight")&&a.searchParams.set("h",Object.entries(e.terms).filter(([,f])=>f).reduce((f,[c])=>`${f} ${c}`.trim(),""));let{tags:s}=pe();return M("a",{href:`${a}`,class:"md-search-result__link",tabIndex:-1},M("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&M("div",{class:"md-search-result__icon md-icon"}),r>0&&M("h1",null,e.title),r<=0&&M("h2",null,e.title),n>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(f=>{let c=s?f in s?`md-tag-icon md-tag-icon--${s[f]}`:"md-tag-icon":"";return M("span",{class:`md-tag ${c}`},f)}),n>0&&o.length>0&&M("p",{class:"md-search-result__terms"},he("search.result.term.missing"),": ",...o)))}function Oo(e){let t=e[0].score,r=[...e],n=pe(),o=r.findIndex(u=>!`${new URL(u.location,n.base)}`.includes("#")),[i]=r.splice(o,1),a=r.findIndex(u=>u.score<t);a===-1&&(a=r.length);let s=r.slice(0,a),f=r.slice(a),c=[Gr(i,2|+(!o&&a===0)),...s.map(u=>Gr(u,1)),...f.length?[M("details",{class:"md-search-result__more"},M("summary",{tabIndex:-1},M("div",null,f.length>0&&f.length===1?he("search.result.more.one"):he("search.result.more.other",f.length))),...f.map(u=>Gr(u,1)))]:[]];return M("li",{class:"md-search-result__item"},c)}function _o(e){return M("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>M("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?fr(r):r)))}function Br(e){let t=`tabbed-control tabbed-control--${e}`;return M("div",{class:t,hidden:!0},M("button",{class:"tabbed-button",tabIndex:-1}))}function Mo(e){return M("div",{class:"md-typeset__scrollwrap"},M("div",{class:"md-typeset__table"},e))}function za(e){let t=pe(),r=new URL(`../${e.version}/`,t.base);return M("li",{class:"md-version__item"},M("a",{href:`${r}`,class:"md-version__link"},e.title))}function Lo(e,t){return M("div",{class:"md-version"},M("button",{class:"md-version__current","aria-label":he("select.version")},t.title),M("ul",{class:"md-version__list"},e.map(za)))}function Na(e,t){let r=I(()=>Q([Yn(e),dt(t)])).pipe(l(([{x:n,y:o},i])=>{let{width:a,height:s}=de(e);return{x:n-i.x+a/2,y:o-i.y+s/2}}));return tr(e).pipe(x(n=>r.pipe(l(o=>({active:n,offset:o})),Oe(+!n||1/0))))}function Ao(e,t,{target$:r}){let[n,o]=Array.from(e.children);return I(()=>{let i=new E,a=i.pipe(ee(),oe(!0));return i.subscribe({next({offset:s}){e.style.setProperty("--md-tooltip-x",`${s.x}px`),e.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),sr(e).pipe(G(a)).subscribe(s=>{e.toggleAttribute("data-md-visible",s)}),L(i.pipe(_(({active:s})=>s)),i.pipe(ke(250),_(({active:s})=>!s))).subscribe({next({active:s}){s?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Ce(16,we)).subscribe(({active:s})=>{n.classList.toggle("md-tooltip--active",s)}),i.pipe(Dr(125,we),_(()=>!!e.offsetParent),l(()=>e.offsetParent.getBoundingClientRect()),l(({x:s})=>s)).subscribe({next(s){s?e.style.setProperty("--md-tooltip-0",`${-s}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),b(o,"click").pipe(G(a),_(s=>!(s.metaKey||s.ctrlKey))).subscribe(s=>s.preventDefault()),b(o,"mousedown").pipe(G(a),ae(i)).subscribe(([s,{active:f}])=>{var c;if(s.button!==0||s.metaKey||s.ctrlKey)s.preventDefault();else if(f){s.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(c=_e())==null||c.blur()}}),r.pipe(G(a),_(s=>s===n),ze(125)).subscribe(()=>e.focus()),Na(e,t).pipe(S(s=>i.next(s)),C(()=>i.complete()),l(s=>P({ref:e},s)))})}function qa(e){let t=[];for(let r of K(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,s,f]=a;if(typeof f=="undefined"){let c=i.splitText(a.index);i=c.splitText(s.length),t.push(c)}else{i.textContent=s,t.push(i);break}}}}return t}function Co(e,t){t.append(...Array.from(e.childNodes))}function Ro(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,a=new Map;for(let s of qa(t)){let[,f]=s.textContent.match(/\((\d+)\)/);se(`li:nth-child(${f})`,e)&&(a.set(f,So(f,i)),s.replaceWith(a.get(f)))}return a.size===0?R:I(()=>{let s=new E,f=[];for(let[c,u]of a)f.push([V(".md-typeset",u),V(`li:nth-child(${c})`,e)]);return n.pipe(G(s.pipe(ee(),oe(!0)))).subscribe(c=>{e.hidden=!c;for(let[u,p]of f)c?Co(u,p):Co(p,u)}),L(...[...a].map(([,c])=>Ao(c,t,{target$:r}))).pipe(C(()=>s.complete()),fe())})}var Ka=0;function Po(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Po(t)}}function ko(e){return ge(e).pipe(l(({width:t})=>({scrollable:bt(e).width>t})),X("scrollable"))}function $o(e,t){let{matches:r}=matchMedia("(hover)"),n=I(()=>{let o=new E;if(o.subscribe(({scrollable:a})=>{a&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),Ho.default.isSupported()&&(e.closest(".copy")||Z("content.code.copy")&&!e.closest(".no-copy"))){let a=e.closest("pre");a.id=`__code_${++Ka}`,a.insertBefore(To(a.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let a=Po(i);if(typeof a!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let s=Ro(a,e,t);return ko(e).pipe(S(f=>o.next(f)),C(()=>o.complete()),l(f=>P({ref:e},f)),Ne(ge(i).pipe(l(({width:f,height:c})=>f&&c),Y(),x(f=>f?s:R))))}}return ko(e).pipe(S(a=>o.next(a)),C(()=>o.complete()),l(a=>P({ref:e},a)))});return Z("content.lazy")?sr(e).pipe(_(o=>o),Oe(1),x(()=>n)):n}var Io=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none;font-family:var(--md-mermaid-font-family)!important}.noteText>tspan{fill:#000}#arrowhead path{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-accent-bg-color)}defs #sequencenumber{fill:var(--md-mermaid-node-fg-color)!important}";var Jr,Ya=0;function Ga(){return typeof mermaid=="undefined"||mermaid instanceof Element?pr("https://unpkg.com/mermaid@9.3.0/dist/mermaid.min.js"):H(void 0)}function Fo(e){return e.classList.remove("mermaid"),Jr||(Jr=Ga().pipe(S(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Io,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),l(()=>{}),J(1))),Jr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${Ya++}`,r=M("div",{class:"mermaid"}),n=e.textContent;mermaid.mermaidAPI.render(t,n,(o,i)=>{let a=r.attachShadow({mode:"closed"});a.innerHTML=o,e.replaceWith(r),i==null||i(a)})}),Jr.pipe(l(()=>({ref:e})))}function Ba(e,{target$:t,print$:r}){let n=!0;return L(t.pipe(l(o=>o.closest("details:not([open])")),_(o=>e===o),l(()=>({action:"open",reveal:!0}))),r.pipe(_(o=>o||!n),S(()=>n=e.open),l(o=>({action:o?"open":"close"}))))}function jo(e,t){return I(()=>{let r=new E;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),Ba(e,t).pipe(S(n=>r.next(n)),C(()=>r.complete()),l(n=>P({ref:e},n)))})}var Uo=M("table");function Wo(e){return e.replaceWith(Uo),Uo.replaceWith(Mo(e)),H({ref:e})}function Ja(e){let t=K(":scope > input",e),r=t.find(n=>n.checked)||t[0];return L(...t.map(n=>b(n,"change").pipe(l(()=>V(`label[for="${n.id}"]`))))).pipe(N(V(`label[for="${r.id}"]`)),l(n=>({active:n})))}function Do(e,{viewport$:t}){let r=Br("prev");e.append(r);let n=Br("next");e.append(n);let o=V(".tabbed-labels",e);return I(()=>{let i=new E,a=i.pipe(ee(),oe(!0));return Q([i,ge(e)]).pipe(Ce(1,we),G(a)).subscribe({next([{active:s},f]){let c=Be(s),{width:u}=de(s);e.style.setProperty("--md-indicator-x",`${c.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let p=rr(o);(c.x<p.x||c.x+u>p.x+f.width)&&o.scrollTo({left:Math.max(0,c.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Q([dt(o),ge(o)]).pipe(G(a)).subscribe(([s,f])=>{let c=bt(o);r.hidden=s.x<16,n.hidden=s.x>c.width-f.width-16}),L(b(r,"click").pipe(l(()=>-1)),b(n,"click").pipe(l(()=>1))).pipe(G(a)).subscribe(s=>{let{width:f}=de(o);o.scrollBy({left:f*s,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe($e(1),ae(t)).subscribe(([{active:s},{offset:f}])=>{let c=s.innerText.trim();if(s.hasAttribute("data-md-switching"))s.removeAttribute("data-md-switching");else{let u=e.offsetTop-f.y;for(let m of K("[data-tabs]"))for(let d of K(":scope > input",m)){let h=V(`label[for="${d.id}"]`);if(h!==s&&h.innerText.trim()===c){h.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-u});let p=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([c,...p])])}}),Ja(e).pipe(S(s=>i.next(s)),C(()=>i.complete()),l(s=>P({ref:e},s)))}).pipe(tt(ue))}function Vo(e,{viewport$:t,target$:r,print$:n}){return L(...K("pre:not(.mermaid) > code",e).map(o=>$o(o,{target$:r,print$:n})),...K("pre.mermaid",e).map(o=>Fo(o)),...K("table:not([class])",e).map(o=>Wo(o)),...K("details",e).map(o=>jo(o,{target$:r,print$:n})),...K("[data-tabs]",e).map(o=>Do(o,{viewport$:t})))}function Xa(e,{alert$:t}){return t.pipe(x(r=>L(H(!0),H(!1).pipe(ze(2e3))).pipe(l(n=>({message:r,active:n})))))}function zo(e,t){let r=V(".md-typeset",e);return I(()=>{let n=new E;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),Xa(e,t).pipe(S(o=>n.next(o)),C(()=>n.complete()),l(o=>P({ref:e},o)))})}function Za({viewport$:e}){if(!Z("header.autohide"))return H(!1);let t=e.pipe(l(({offset:{y:o}})=>o),Re(2,1),l(([o,i])=>[o<i,i]),X(0)),r=Q([e,t]).pipe(_(([{offset:o},[,i]])=>Math.abs(i-o.y)>100),l(([,[o]])=>o),Y()),n=je("search");return Q([e,n]).pipe(l(([{offset:o},i])=>o.y>400&&!i),Y(),x(o=>o?r:H(!1)),N(!1))}function No(e,t){return I(()=>Q([ge(e),Za(t)])).pipe(l(([{height:r},n])=>({height:r,hidden:n})),Y((r,n)=>r.height===n.height&&r.hidden===n.hidden),J(1))}function qo(e,{header$:t,main$:r}){return I(()=>{let n=new E,o=n.pipe(ee(),oe(!0));return n.pipe(X("active"),nt(t)).subscribe(([{active:i},{hidden:a}])=>{e.classList.toggle("md-header--shadow",i&&!a),e.hidden=a}),r.subscribe(n),t.pipe(G(o),l(i=>P({ref:e},i)))})}function es(e,{viewport$:t,header$:r}){return lr(e,{viewport$:t,header$:r}).pipe(l(({offset:{y:n}})=>{let{height:o}=de(e);return{active:n>=o}}),X("active"))}function Ko(e,t){return I(()=>{let r=new E;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=se("article h1");return typeof n=="undefined"?R:es(n,t).pipe(S(o=>r.next(o)),C(()=>r.complete()),l(o=>P({ref:e},o)))})}function Qo(e,{viewport$:t,header$:r}){let n=r.pipe(l(({height:i})=>i),Y()),o=n.pipe(x(()=>ge(e).pipe(l(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),X("bottom"))));return Q([n,o,t]).pipe(l(([i,{top:a,bottom:s},{offset:{y:f},size:{height:c}}])=>(c=Math.max(0,c-Math.max(0,a-f,i)-Math.max(0,c+f-s)),{offset:a-i,height:c,active:a-i<=f})),Y((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function ts(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return H(...e).pipe(ie(r=>b(r,"change").pipe(l(()=>r))),N(e[Math.max(0,t.index)]),l(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),J(1))}function Yo(e){let t=M("meta",{name:"theme-color"});return document.head.appendChild(t),I(()=>{let r=new E;r.subscribe(o=>{document.body.setAttribute("data-md-color-switching","");for(let[i,a]of Object.entries(o.color))document.body.setAttribute(`data-md-color-${i}`,a);for(let i=0;i<n.length;i++){let a=n[i].nextElementSibling;a instanceof HTMLElement&&(a.hidden=o.index!==i)}__md_set("__palette",o)}),r.pipe(l(()=>{let o=ye("header"),{backgroundColor:i}=window.getComputedStyle(o);return i.match(/\d+/g).map(a=>(+a).toString(16).padStart(2,"0")).join("")})).subscribe(o=>t.content=`#${o}`),r.pipe(Ve(ue)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")});let n=K("input",e);return ts(n).pipe(S(o=>r.next(o)),C(()=>r.complete()),l(o=>P({ref:e},o)))})}var Xr=yt(Qr());function rs(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function Go({alert$:e}){Xr.default.isSupported()&&new U(t=>{new Xr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||rs(V(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(S(t=>{t.trigger.focus()}),l(()=>he("clipboard.copied"))).subscribe(e)}function ns(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function mr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return H(t);{let r=pe();return mo(new URL("sitemap.xml",e||r.base)).pipe(l(n=>ns(K("loc",n).map(o=>o.textContent))),ce(()=>R),He([]),S(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Bo({document$:e,location$:t,viewport$:r}){let n=pe();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",b(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=se("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=mr().pipe(l(c=>c.map(u=>`${new URL(u,n.base)}`)),x(c=>b(document.body,"click").pipe(_(u=>!u.metaKey&&!u.ctrlKey),x(u=>{if(u.target instanceof Element){let p=u.target.closest("a");if(p&&!p.target){let m=new URL(p.href);if(m.search="",m.hash="",m.pathname!==location.pathname&&c.includes(m.toString()))return u.preventDefault(),H({url:new URL(p.href)})}}return Te}))),fe()),a=b(window,"popstate").pipe(_(c=>c.state!==null),l(c=>({url:new URL(location.href),offset:c.state})),fe());L(i,a).pipe(Y((c,u)=>c.url.href===u.url.href),l(({url:c})=>c)).subscribe(t);let s=t.pipe(X("pathname"),x(c=>ur(c.href).pipe(ce(()=>(ot(c),Te)))),fe());i.pipe(er(s)).subscribe(({url:c})=>{history.pushState({},"",`${c}`)});let f=new DOMParser;s.pipe(x(c=>c.text()),l(c=>f.parseFromString(c,"text/html"))).subscribe(e),e.pipe($e(1)).subscribe(c=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=se(u),m=se(u,c);typeof p!="undefined"&&typeof m!="undefined"&&p.replaceWith(m)}}),e.pipe($e(1),l(()=>ye("container")),x(c=>K("script",c)),$r(c=>{let u=M("script");if(c.src){for(let p of c.getAttributeNames())u.setAttribute(p,c.getAttribute(p));return c.replaceWith(u),new U(p=>{u.onload=()=>p.complete()})}else return u.textContent=c.textContent,c.replaceWith(u),R})).subscribe(),L(i,a).pipe(er(e)).subscribe(({url:c,offset:u})=>{c.hash&&!u?uo(c.hash):window.scrollTo(0,(u==null?void 0:u.y)||0)}),r.pipe(Mt(i),ke(250),X("offset")).subscribe(({offset:c})=>{history.replaceState(c,"")}),L(i,a).pipe(Re(2,1),_(([c,u])=>c.url.pathname===u.url.pathname),l(([,c])=>c)).subscribe(({offset:c})=>{window.scrollTo(0,(c==null?void 0:c.y)||0)})}var Zo=yt(Xo());function ei(e){let t=e.separator.split("|").map(o=>o.replace(/(\(\?[!=][^)]+\))/g,"").length===0?"\uFFFD":o).join("|"),r=new RegExp(t,"img"),n=(o,i,a)=>`${i}<mark data-md-highlight>${a}</mark>`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(0,Zo.default)(a).replace(i,n).replace(/<\/mark>(\s+)<mark[^>]*>/img,"$1")}}function At(e){return e.type===1}function dr(e){return e.type===3}function ti(e,t){let r=xo(e);return L(H(location.protocol!=="file:"),je("search")).pipe(Pe(n=>n),x(()=>t)).subscribe(({config:n,docs:o})=>r.next({type:0,data:{config:n,docs:o,options:{suggest:Z("search.suggest")}}})),r}function ri({document$:e}){let t=pe(),r=Ue(new URL("../versions.json",t.base)).pipe(ce(()=>R)),n=r.pipe(l(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:a,aliases:s})=>a===i||s.includes(i))||o[0]}));r.pipe(l(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),x(o=>b(document.body,"click").pipe(_(i=>!i.metaKey&&!i.ctrlKey),ae(n),x(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&o.has(s.href)){let f=s.href;return!i.target.closest(".md-version")&&o.get(f)===a?R:(i.preventDefault(),H(f))}}return R}),x(i=>{let{version:a}=o.get(i);return mr(new URL(i)).pipe(l(s=>{let c=Me().href.replace(t.base,"");return s.includes(c.split("#")[0])?new URL(`../${a}/${c}`,t.base):new URL(i)}))})))).subscribe(o=>ot(o)),Q([r,n]).subscribe(([o,i])=>{V(".md-header__topic").appendChild(Lo(o,i))}),e.pipe(x(()=>n)).subscribe(o=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){let s=((a=t.version)==null?void 0:a.default)||"latest";i=!o.aliases.includes(s),__md_set("__outdated",i,sessionStorage)}if(i)for(let s of te("outdated"))s.hidden=!1})}function cs(e,{worker$:t}){let{searchParams:r}=Me();r.has("q")&&(qe("search",!0),e.value=r.get("q"),e.focus(),je("search").pipe(Pe(i=>!i)).subscribe(()=>{let i=new URL(location.href);i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let n=tr(e),o=L(t.pipe(Pe(At)),b(e,"keyup"),n).pipe(l(()=>e.value),Y());return Q([o,n]).pipe(l(([i,a])=>({value:i,focus:a})),J(1))}function ni(e,{worker$:t}){let r=new E,n=r.pipe(ee(),oe(!0));return Q([t.pipe(Pe(At)),r],(o,i)=>i).pipe(X("value")).subscribe(({value:o})=>t.next({type:2,data:o})),r.pipe(X("focus")).subscribe(({focus:o})=>{o&&qe("search",o)}),b(e.form,"reset").pipe(G(n)).subscribe(()=>e.focus()),cs(e,{worker$:t}).pipe(S(o=>r.next(o)),C(()=>r.complete()),l(o=>P({ref:e},o)),J(1))}function oi(e,{worker$:t,query$:r}){let n=new E,o=oo(e.parentElement).pipe(_(Boolean)),i=e.parentElement,a=V(":scope > :first-child",e),s=V(":scope > :last-child",e);je("search").subscribe(u=>s.setAttribute("role",u?"list":"presentation")),n.pipe(ae(r),Mt(t.pipe(Pe(At)))).subscribe(([{items:u},{value:p}])=>{switch(u.length){case 0:a.textContent=p.length?he("search.result.none"):he("search.result.placeholder");break;case 1:a.textContent=he("search.result.one");break;default:let m=fr(u.length);a.textContent=he("search.result.other",m)}});let f=n.pipe(S(()=>s.innerHTML=""),x(({items:u})=>L(H(...u.slice(0,10)),H(...u.slice(10)).pipe(Re(4),Vr(o),x(([p])=>p)))),l(Oo),fe());return f.subscribe(u=>s.appendChild(u)),f.pipe(ie(u=>{let p=se("details",u);return typeof p=="undefined"?R:b(p,"toggle").pipe(G(n),l(()=>p))})).subscribe(u=>{u.open===!1&&u.offsetTop<=i.scrollTop&&i.scrollTo({top:u.offsetTop})}),t.pipe(_(dr),l(({data:u})=>u)).pipe(S(u=>n.next(u)),C(()=>n.complete()),l(u=>P({ref:e},u)))}function fs(e,{query$:t}){return t.pipe(l(({value:r})=>{let n=Me();return n.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),n.search=`q=${r}`,{url:n}}))}function ii(e,t){let r=new E,n=r.pipe(ee(),oe(!0));return r.subscribe(({url:o})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${o}`}),b(e,"click").pipe(G(n)).subscribe(o=>o.preventDefault()),fs(e,t).pipe(S(o=>r.next(o)),C(()=>r.complete()),l(o=>P({ref:e},o)))}function ai(e,{worker$:t,keyboard$:r}){let n=new E,o=ye("search-query"),i=L(b(o,"keydown"),b(o,"focus")).pipe(Ve(ue),l(()=>o.value),Y());return n.pipe(nt(i),l(([{suggest:s},f])=>{let c=f.split(/([\s-]+)/);if(s!=null&&s.length&&c[c.length-1]){let u=s[s.length-1];u.startsWith(c[c.length-1])&&(c[c.length-1]=u)}else c.length=0;return c})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(_(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(_(dr),l(({data:s})=>s)).pipe(S(s=>n.next(s)),C(()=>n.complete()),l(()=>({ref:e})))}function si(e,{index$:t,keyboard$:r}){let n=pe();try{let o=ti(n.search,t),i=ye("search-query",e),a=ye("search-result",e);b(e,"click").pipe(_(({target:f})=>f instanceof Element&&!!f.closest("a"))).subscribe(()=>qe("search",!1)),r.pipe(_(({mode:f})=>f==="search")).subscribe(f=>{let c=_e();switch(f.type){case"Enter":if(c===i){let u=new Map;for(let p of K(":first-child [href]",a)){let m=p.firstElementChild;u.set(p,parseFloat(m.getAttribute("data-md-score")))}if(u.size){let[[p]]=[...u].sort(([,m],[,d])=>d-m);p.click()}f.claim()}break;case"Escape":case"Tab":qe("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")i.focus();else{let u=[i,...K(":not(details) > [href], summary, details[open] [href]",a)],p=Math.max(0,(Math.max(0,u.indexOf(c))+u.length+(f.type==="ArrowUp"?-1:1))%u.length);u[p].focus()}f.claim();break;default:i!==_e()&&i.focus()}}),r.pipe(_(({mode:f})=>f==="global")).subscribe(f=>{switch(f.type){case"f":case"s":case"/":i.focus(),i.select(),f.claim();break}});let s=ni(i,{worker$:o});return L(s,oi(a,{worker$:o,query$:s})).pipe(Ne(...te("search-share",e).map(f=>ii(f,{query$:s})),...te("search-suggest",e).map(f=>ai(f,{worker$:o,keyboard$:r}))))}catch(o){return e.hidden=!0,Te}}function ci(e,{index$:t,location$:r}){return Q([t,r.pipe(N(Me()),_(n=>!!n.searchParams.get("h")))]).pipe(l(([n,o])=>ei(n.config)(o.searchParams.get("h"))),l(n=>{var a;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let f=s.textContent,c=n(f);c.length>f.length&&o.set(s,c)}for(let[s,f]of o){let{childNodes:c}=M("span",null,f);s.replaceWith(...Array.from(c))}return{ref:e,nodes:o}}))}function us(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Q([r,t]).pipe(l(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(o,Math.max(0,s-i))-o,{height:a,locked:s>=i+o})),Y((i,a)=>i.height===a.height&&i.locked===a.locked))}function Zr(e,n){var o=n,{header$:t}=o,r=sn(o,["header$"]);let i=V(".md-sidebar__scrollwrap",e),{y:a}=Be(i);return I(()=>{let s=new E,f=s.pipe(Ce(0,we));return f.pipe(ae(t)).subscribe({next([{height:c},{height:u}]){i.style.height=`${c-2*a}px`,e.style.top=`${u}px`},complete(){i.style.height="",e.style.top=""}}),f.pipe(Pe()).subscribe(()=>{for(let c of K(".md-nav__link--active[href]",e)){let u=ar(c);if(typeof u!="undefined"){let p=c.offsetTop-u.offsetTop,{height:m}=de(u);u.scrollTo({top:p-m/2})}}}),us(e,r).pipe(S(c=>s.next(c)),C(()=>s.complete()),l(c=>P({ref:e},c)))})}function fi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Ot(Ue(`${r}/releases/latest`).pipe(ce(()=>R),l(n=>({version:n.tag_name})),He({})),Ue(r).pipe(ce(()=>R),l(n=>({stars:n.stargazers_count,forks:n.forks_count})),He({}))).pipe(l(([n,o])=>P(P({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return Ue(r).pipe(l(n=>({repositories:n.public_repos})),He({}))}}function ui(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ue(r).pipe(ce(()=>R),l(({star_count:n,forks_count:o})=>({stars:n,forks:o})),He({}))}function pi(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,n]=t;return fi(r,n)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,n]=t;return ui(r,n)}return R}var ps;function ls(e){return ps||(ps=I(()=>{let t=__md_get("__source",sessionStorage);if(t)return H(t);if(te("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return R}return pi(e.href).pipe(S(n=>__md_set("__source",n,sessionStorage)))}).pipe(ce(()=>R),_(t=>Object.keys(t).length>0),l(t=>({facts:t})),J(1)))}function li(e){let t=V(":scope > :last-child",e);return I(()=>{let r=new E;return r.subscribe(({facts:n})=>{t.appendChild(_o(n)),t.classList.add("md-source__repository--active")}),ls(e).pipe(S(n=>r.next(n)),C(()=>r.complete()),l(n=>P({ref:e},n)))})}function ms(e,{viewport$:t,header$:r}){return ge(document.body).pipe(x(()=>lr(e,{header$:r,viewport$:t})),l(({offset:{y:n}})=>({hidden:n>=10})),X("hidden"))}function mi(e,t){return I(()=>{let r=new E;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?H({hidden:!1}):ms(e,t)).pipe(S(n=>r.next(n)),C(()=>r.complete()),l(n=>P({ref:e},n)))})}function ds(e,{viewport$:t,header$:r}){let n=new Map,o=K("[href^=\\#]",e);for(let s of o){let f=decodeURIComponent(s.hash.substring(1)),c=se(`[id="${f}"]`);typeof c!="undefined"&&n.set(s,c)}let i=r.pipe(X("height"),l(({height:s})=>{let f=ye("main"),c=V(":scope > :first-child",f);return s+.8*(c.offsetTop-f.offsetTop)}),fe());return ge(document.body).pipe(X("height"),x(s=>I(()=>{let f=[];return H([...n].reduce((c,[u,p])=>{for(;f.length&&n.get(f[f.length-1]).tagName>=p.tagName;)f.pop();let m=p.offsetTop;for(;!m&&p.parentElement;)p=p.parentElement,m=p.offsetTop;let d=p.offsetParent;for(;d;d=d.offsetParent)m+=d.offsetTop;return c.set([...f=[...f,u]].reverse(),m)},new Map))}).pipe(l(f=>new Map([...f].sort(([,c],[,u])=>c-u))),nt(i),x(([f,c])=>t.pipe(Fr(([u,p],{offset:{y:m},size:d})=>{let h=m+d.height>=Math.floor(s.height);for(;p.length;){let[,v]=p[0];if(v-c<m||h)u=[...u,p.shift()];else break}for(;u.length;){let[,v]=u[u.length-1];if(v-c>=m&&!h)p=[u.pop(),...p];else break}return[u,p]},[[],[...f]]),Y((u,p)=>u[0]===p[0]&&u[1]===p[1])))))).pipe(l(([s,f])=>({prev:s.map(([c])=>c),next:f.map(([c])=>c)})),N({prev:[],next:[]}),Re(2,1),l(([s,f])=>s.prev.length<f.prev.length?{prev:f.prev.slice(Math.max(0,s.prev.length-1),f.prev.length),next:[]}:{prev:f.prev.slice(-1),next:f.next.slice(0,f.next.length-s.next.length)}))}function di(e,{viewport$:t,header$:r,target$:n}){return I(()=>{let o=new E,i=o.pipe(ee(),oe(!0));if(o.subscribe(({prev:a,next:s})=>{for(let[f]of s)f.classList.remove("md-nav__link--passed"),f.classList.remove("md-nav__link--active");for(let[f,[c]]of a.entries())c.classList.add("md-nav__link--passed"),c.classList.toggle("md-nav__link--active",f===a.length-1)}),Z("toc.follow")){let a=L(t.pipe(ke(1),l(()=>{})),t.pipe(ke(250),l(()=>"smooth")));o.pipe(_(({prev:s})=>s.length>0),ae(a)).subscribe(([{prev:s},f])=>{let[c]=s[s.length-1];if(c.offsetHeight){let u=ar(c);if(typeof u!="undefined"){let p=c.offsetTop-u.offsetTop,{height:m}=de(u);u.scrollTo({top:p-m/2,behavior:f})}}})}return Z("navigation.tracking")&&t.pipe(G(i),X("offset"),ke(250),$e(1),G(n.pipe($e(1))),_t({delay:250}),ae(o)).subscribe(([,{prev:a}])=>{let s=Me(),f=a[a.length-1];if(f&&f.length){let[c]=f,{hash:u}=new URL(c.href);s.hash!==u&&(s.hash=u,history.replaceState({},"",`${s}`))}else s.hash="",history.replaceState({},"",`${s}`)}),ds(e,{viewport$:t,header$:r}).pipe(S(a=>o.next(a)),C(()=>o.complete()),l(a=>P({ref:e},a)))})}function hs(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(l(({offset:{y:a}})=>a),Re(2,1),l(([a,s])=>a>s&&s>0),Y()),i=r.pipe(l(({active:a})=>a));return Q([i,o]).pipe(l(([a,s])=>!(a&&s)),Y(),G(n.pipe($e(1))),oe(!0),_t({delay:250}),l(a=>({hidden:a})))}function hi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new E,a=i.pipe(ee(),oe(!0));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(G(a),X("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),hs(e,{viewport$:t,main$:n,target$:o}).pipe(S(s=>i.next(s)),C(()=>i.complete()),l(s=>P({ref:e},s)))}function bi({document$:e,tablet$:t}){e.pipe(x(()=>K(".md-toggle--indeterminate")),S(r=>{r.indeterminate=!0,r.checked=!1}),ie(r=>b(r,"change").pipe(Ur(()=>r.classList.contains("md-toggle--indeterminate")),l(()=>r))),ae(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function bs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function vi({document$:e}){e.pipe(x(()=>K("[data-md-scrollfix]")),S(t=>t.removeAttribute("data-md-scrollfix")),_(bs),ie(t=>b(t,"touchstart").pipe(l(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function gi({viewport$:e,tablet$:t}){Q([je("search"),t]).pipe(l(([r,n])=>r&&!n),x(r=>H(r).pipe(ze(r?400:100))),ae(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n=="string"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));function vs(){return location.protocol==="file:"?pr(`${new URL("search/search_index.js",en.base)}`).pipe(l(()=>__index),J(1)):Ue(new URL("search/search_index.json",en.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var it=Qn(),br=so(),gt=po(),tn=ao(),Ee=yo(),vr=Nr("(min-width: 960px)"),xi=Nr("(min-width: 1220px)"),Ei=lo(),en=pe(),wi=document.forms.namedItem("search")?vs():Te,rn=new E;Go({alert$:rn});Z("navigation.instant")&&Bo({document$:it,location$:br,viewport$:Ee});var yi;((yi=en.version)==null?void 0:yi.provider)==="mike"&&ri({document$:it});L(br,gt).pipe(ze(125)).subscribe(()=>{qe("drawer",!1),qe("search",!1)});tn.pipe(_(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=se("link[rel=prev]");typeof t!="undefined"&&ot(t);break;case"n":case".":let r=se("link[rel=next]");typeof r!="undefined"&&ot(r);break;case"Enter":let n=_e();if(n instanceof HTMLLabelElement){let o=`[id="${n.htmlFor}"]`,i=V(o);n.setAttribute("aria-expanded",`${i.checked=!i.checked}`)}}});bi({document$:it,tablet$:vr});vi({document$:it});gi({viewport$:Ee,tablet$:vr});var Je=No(ye("header"),{viewport$:Ee}),hr=it.pipe(l(()=>ye("main")),x(e=>Qo(e,{viewport$:Ee,header$:Je})),J(1)),gs=L(...te("consent").map(e=>wo(e,{target$:gt})),...te("dialog").map(e=>zo(e,{alert$:rn})),...te("header").map(e=>qo(e,{viewport$:Ee,header$:Je,main$:hr})),...te("palette").map(e=>Yo(e)),...te("search").map(e=>si(e,{index$:wi,keyboard$:tn})),...te("source").map(e=>li(e))),ys=I(()=>L(...te("announce").map(e=>Eo(e)),...te("content").map(e=>Vo(e,{viewport$:Ee,target$:gt,print$:Ei})),...te("content").map(e=>Z("search.highlight")?ci(e,{index$:wi,location$:br}):R),...te("header-title").map(e=>Ko(e,{viewport$:Ee,header$:Je})),...te("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?qr(xi,()=>Zr(e,{viewport$:Ee,header$:Je,main$:hr})):qr(vr,()=>Zr(e,{viewport$:Ee,header$:Je,main$:hr}))),...te("tabs").map(e=>mi(e,{viewport$:Ee,header$:Je})),...te("toc").map(e=>di(e,{viewport$:Ee,header$:Je,target$:gt})),...te("top").map(e=>hi(e,{viewport$:Ee,header$:Je,main$:hr,target$:gt})))),Si=it.pipe(x(()=>ys),Ne(gs),J(1));Si.subscribe();window.document$=it;window.location$=br;window.target$=gt;window.keyboard$=tn;window.viewport$=Ee;window.tablet$=vr;window.screen$=xi;window.print$=Ei;window.alert$=rn;window.component$=Si;})(); +//# sourceMappingURL=bundle.51d95adb.min.js.map + diff --git a/assets/javascripts/bundle.51d95adb.min.js.map b/assets/javascripts/bundle.51d95adb.min.js.map new file mode 100644 index 00000000..46415356 --- /dev/null +++ b/assets/javascripts/bundle.51d95adb.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/first.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/round/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "node_modules/iframe-worker/shim/index.js", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], + "sourceRoot": "../../..", + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on <html> whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getActiveElement,\n getElement,\n getOptionalElement,\n requestJSON,\n setLocation,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchScript,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Functions - @todo refactor\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch search index\n *\n * @returns Search index observable\n */\nfunction fetchSearchIndex(): Observable<SearchIndex> {\n if (location.protocol === \"file:\") {\n return watchScript(\n `${new URL(\"search/search_index.js\", config.base)}`\n )\n .pipe(\n // @ts-ignore - @todo fix typings\n map(() => __index),\n shareReplay(1)\n )\n } else {\n return requestJSON<SearchIndex>(\n new URL(\"search/search_index.json\", config.base)\n )\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? fetchSearchIndex()\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject<string>()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement<HTMLLinkElement>(\"link[rel=prev]\")\n if (typeof prev !== \"undefined\")\n setLocation(prev)\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement<HTMLLinkElement>(\"link[rel=next]\")\n if (typeof next !== \"undefined\")\n setLocation(next)\n break\n\n /* Expand navigation, see https://bit.ly/3ZjG5io */\n case \"Enter\":\n const active = getActiveElement()\n if (active instanceof HTMLLabelElement) {\n const id = `[id=\"${active.htmlFor}\"]`\n const input = getElement<HTMLInputElement>(id)\n active.setAttribute(\n \"aria-expanded\",\n `${input.checked = !input.checked}`\n )\n }\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u={},a=function e(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:e,headers:{keys:function(){return o},entries:function(){return o.map(function(e){return[e,s.getResponseHeader(e)]})},get:function(e){return s.getResponseHeader(e)},has:function(e){return null!=s.getResponseHeader(e)}}}};for(var i in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().toLowerCase().replace(/^(.+?):/gm,function(e,n){u[n]||o.push(u[n]=n)}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(i,n.headers[i]);s.send(n.body||null)})});\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n", "/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n (_super) =>\n function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n }\n);\n", "/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n *\n * @class Subscription\n */\nexport class Subscription implements SubscriptionLike {\n /** @nocollapse */\n public static EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n\n /**\n * A flag to indicate whether this Subscription has already been unsubscribed.\n */\n public closed = false;\n\n private _parentage: Subscription[] | Subscription | null = null;\n\n /**\n * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n * list occurs in the {@link #add} and {@link #remove} methods.\n */\n private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n /**\n * @param initialTeardown A function executed first as part of the finalization\n * process that is kicked off when {@link #unsubscribe} is called.\n */\n constructor(private initialTeardown?: () => void) {}\n\n /**\n * Disposes the resources held by the subscription. May, for instance, cancel\n * an ongoing Observable execution or cancel any other type of work that\n * started when the Subscription was created.\n * @return {void}\n */\n unsubscribe(): void {\n let errors: any[] | undefined;\n\n if (!this.closed) {\n this.closed = true;\n\n // Remove this from it's parents.\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n } else {\n _parentage.remove(this);\n }\n }\n\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n } catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n } catch (err) {\n errors = errors ?? [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n } else {\n errors.push(err);\n }\n }\n }\n }\n\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n\n /**\n * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n * because it has already been unsubscribed, then whatever finalizer is passed to it\n * will automatically be executed (unless the finalizer itself is also a closed subscription).\n *\n * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n * subscription to a any subscription will result in no operation. (A noop).\n *\n * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n * operation at all. (A noop).\n *\n * `Subscription` instances that are added to this instance will automatically remove themselves\n * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n * will need to be removed manually with {@link #remove}\n *\n * @param teardown The finalization logic to add to this subscription.\n */\n add(teardown: TeardownLogic): void {\n // Only add the finalizer if it's not undefined\n // and don't add a subscription to itself.\n if (teardown && teardown !== this) {\n if (this.closed) {\n // If this subscription is already closed,\n // execute whatever finalizer is handed to it automatically.\n execFinalizer(teardown);\n } else {\n if (teardown instanceof Subscription) {\n // We don't add closed subscriptions, and we don't add the same subscription\n // twice. Subscription unsubscribe is idempotent.\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = this._finalizers ?? []).push(teardown);\n }\n }\n }\n\n /**\n * Checks to see if a this subscription already has a particular parent.\n * This will signal that this subscription has already been added to the parent in question.\n * @param parent the parent to check for\n */\n private _hasParent(parent: Subscription) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n\n /**\n * Adds a parent to this subscription so it can be removed from the parent if it\n * unsubscribes on it's own.\n *\n * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n * @param parent The parent subscription to add\n */\n private _addParent(parent: Subscription) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n\n /**\n * Called on a child when it is removed via {@link #remove}.\n * @param parent The parent to remove\n */\n private _removeParent(parent: Subscription) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n } else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n\n /**\n * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n *\n * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n * from every other `Subscription` they have been added to. This means that using the `remove` method\n * is not a common thing and should be used thoughtfully.\n *\n * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n * more than once, you will need to call `remove` the same number of times to remove all instances.\n *\n * All finalizer instances are removed to free up memory upon unsubscription.\n *\n * @param teardown The finalizer to remove from this subscription\n */\n remove(teardown: Exclude<TeardownLogic, void>): void {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n return (\n value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n if (isFunction(finalizer)) {\n finalizer();\n } else {\n finalizer.unsubscribe();\n }\n}\n", "import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n /**\n * A registration point for unhandled errors from RxJS. These are errors that\n * cannot were not handled by consuming code in the usual subscription path. For\n * example, if you have this configured, and you subscribe to an observable without\n * providing an error handler, errors from that subscription will end up here. This\n * will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onUnhandledError: ((err: any) => void) | null;\n\n /**\n * A registration point for notifications that cannot be sent to subscribers because they\n * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n * might want a different behavior. For example, with sources that attempt to report errors\n * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n * This will _always_ be called asynchronously on another job in the runtime. This is because\n * we do not want errors thrown in this user-configured handler to interfere with the\n * behavior of the library.\n */\n onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n /**\n * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n * methods.\n *\n * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n * Promise constructor. If you need a Promise implementation other than native promises,\n * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n */\n Promise?: PromiseConstructorLike;\n\n /**\n * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n * call in a try/catch block. It also enables producer interference, a nasty bug\n * where a multicast can be broken for all observers by a downstream consumer with\n * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n * FOR MIGRATION REASONS.\n *\n * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n * behaviors described above. Will be removed in v8.\n */\n useDeprecatedSynchronousErrorHandling: boolean;\n\n /**\n * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n * `unsubscribe()` via `this` context in `next` functions created in observers passed\n * to `subscribe`.\n *\n * This is being removed because the performance was severely problematic, and it could also cause\n * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n * their `this` context overwritten.\n *\n * @deprecated As of version 8, RxJS will no longer support altering the\n * context of next functions provided as part of an observer to Subscribe. Instead,\n * you will have access to a subscription or a signal or token that will allow you to do things like\n * unsubscribe and test closed status. Will be removed in v8.\n */\n useDeprecatedNextContext: boolean;\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n delegate:\n | {\n setTimeout: SetTimeoutFunction;\n clearTimeout: ClearTimeoutFunction;\n }\n | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setTimeout(handler: () => void, timeout?: number, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate?.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return (delegate?.clearTimeout || clearTimeout)(handle as any);\n },\n delegate: undefined,\n};\n", "import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n // Execute the user-configured error handler.\n onUnhandledError(err);\n } else {\n // Throw so it is picked up by the runtime's uncaught error mechanism.\n throw err;\n }\n });\n}\n", "/* tslint:disable:no-empty */\nexport function noop() { }\n", "import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n return {\n kind,\n value,\n error,\n };\n}\n", "import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context!;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n } else {\n // This is the general non-deprecated path for everyone that\n // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n cb();\n }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n", "import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n *\n * @class Subscriber<T>\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n /**\n * A static factory for a Subscriber, given a (potentially partial) definition\n * of an Observer.\n * @param next The `next` callback of an Observer.\n * @param error The `error` callback of an\n * Observer.\n * @param complete The `complete` callback of an\n * Observer.\n * @return A Subscriber wrapping the (partially defined)\n * Observer represented by the given arguments.\n * @nocollapse\n * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n * method, and there is no reason to be creating instances of `Subscriber` directly.\n * If you have a specific use case, please file an issue.\n */\n static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n return new SafeSubscriber(next, error, complete);\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected isStopped: boolean = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n */\n constructor(destination?: Subscriber<any> | Observer<any>) {\n super();\n if (destination) {\n this.destination = destination;\n // Automatically chain subscriptions together here.\n // if destination is a Subscription, then it is a Subscriber.\n if (isSubscription(destination)) {\n destination.add(this);\n }\n } else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `next` from\n * the Observable, with a value. The Observable may call this method 0 or more\n * times.\n * @param {T} [value] The `next` value.\n * @return {void}\n */\n next(value?: T): void {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n } else {\n this._next(value!);\n }\n }\n\n /**\n * The {@link Observer} callback to receive notifications of type `error` from\n * the Observable, with an attached `Error`. Notifies the Observer that\n * the Observable has experienced an error condition.\n * @param {any} [err] The `error` exception.\n * @return {void}\n */\n error(err?: any): void {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n } else {\n this.isStopped = true;\n this._error(err);\n }\n }\n\n /**\n * The {@link Observer} callback to receive a valueless notification of type\n * `complete` from the Observable. Notifies the Observer that the Observable\n * has finished sending push-based notifications.\n * @return {void}\n */\n complete(): void {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n } else {\n this.isStopped = true;\n this._complete();\n }\n }\n\n unsubscribe(): void {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null!;\n }\n }\n\n protected _next(value: T): void {\n this.destination.next(value);\n }\n\n protected _error(err: any): void {\n try {\n this.destination.error(err);\n } finally {\n this.unsubscribe();\n }\n }\n\n protected _complete(): void {\n try {\n this.destination.complete();\n } finally {\n this.unsubscribe();\n }\n }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n constructor(private partialObserver: Partial<Observer<T>>) {}\n\n next(value: T): void {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n\n error(err: any): void {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n } catch (error) {\n handleUnhandledError(error);\n }\n } else {\n handleUnhandledError(err);\n }\n }\n\n complete(): void {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n } catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n constructor(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((e?: any) => void) | null,\n complete?: (() => void) | null\n ) {\n super();\n\n let partialObserver: Partial<Observer<T>>;\n if (isFunction(observerOrNext) || !observerOrNext) {\n // The first argument is a function, not an observer. The next\n // two arguments *could* be observers, or they could be empty.\n partialObserver = {\n next: (observerOrNext ?? undefined) as (((value: T) => void) | undefined),\n error: error ?? undefined,\n complete: complete ?? undefined,\n };\n } else {\n // The first argument is a partial observer.\n let context: any;\n if (this && config.useDeprecatedNextContext) {\n // This is a deprecated path that made `this.unsubscribe()` available in\n // next handler functions passed to subscribe. This only exists behind a flag\n // now, as it is *very* slow.\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n } else {\n // The \"normal\" path. Just use the partial observer directly.\n partialObserver = observerOrNext;\n }\n }\n\n // Wrap the partial observer to ensure it's a full observer, and\n // make sure proper error handling is accounted for.\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\n\nfunction handleUnhandledError(error: any) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n } else {\n // Ideal path, we report this as an unhandled error,\n // which is thrown on a new call stack.\n reportUnhandledError(error);\n }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent\n * @param subscriber The stopped subscriber\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n", "/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n", "/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n * map(i => range(i)),\n * mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n * next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n return x;\n}\n", "import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n fn1: UnaryFunction<T, A>,\n fn2: UnaryFunction<A, B>,\n fn3: UnaryFunction<B, C>,\n fn4: UnaryFunction<C, D>,\n fn5: UnaryFunction<D, E>,\n fn6: UnaryFunction<E, F>,\n fn7: UnaryFunction<F, G>,\n fn8: UnaryFunction<G, H>,\n fn9: UnaryFunction<H, I>,\n ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on. \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n if (fns.length === 0) {\n return identity as UnaryFunction<any, any>;\n }\n\n if (fns.length === 1) {\n return fns[0];\n }\n\n return function piped(input: T): R {\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n };\n}\n", "import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n *\n * @class Observable<T>\n */\nexport class Observable<T> implements Subscribable<T> {\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n source: Observable<any> | undefined;\n\n /**\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n */\n operator: Operator<any, T> | undefined;\n\n /**\n * @constructor\n * @param {Function} subscribe the function that is called when the Observable is\n * initially subscribed to. This function is given a Subscriber, to which new values\n * can be `next`ed, or an `error` method can be called to raise an error, or\n * `complete` can be called to notify of a successful completion.\n */\n constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n\n // HACK: Since TypeScript inherits static properties too, we have to\n // fight against TypeScript here so Subject can have a different static create signature\n /**\n * Creates a new Observable by calling the Observable constructor\n * @owner Observable\n * @method create\n * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor\n * @return {Observable} a new observable\n * @nocollapse\n * @deprecated Use `new Observable()` instead. Will be removed in v8.\n */\n static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n return new Observable<T>(subscribe);\n };\n\n /**\n * Creates a new Observable, with this Observable instance as the source, and the passed\n * operator defined as the new observable's operator.\n * @method lift\n * @param operator the operator defining the operation to take on the observable\n * @return a new observable with the Operator applied\n * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n * If you have implemented an operator using `lift`, it is recommended that you create an\n * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n * scratch\" section here: https://rxjs.dev/guide/operators\n */\n lift<R>(operator?: Operator<T, R>): Observable<R> {\n const observable = new Observable<R>();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n\n subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n /**\n * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n *\n * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n *\n * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n * might be for example a function that you passed to Observable's constructor, but most of the time it is\n * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n * the thought.\n *\n * Apart from starting the execution of an Observable, this method allows you to listen for values\n * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n * of the following ways.\n *\n * The first way is creating an object that implements {@link Observer} interface. It should have methods\n * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n * an `error` method to avoid missing thrown errors.\n *\n * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n *\n * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n * and you also handled emissions internally by using operators (e.g. using `tap`).\n *\n * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n *\n * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n * It is an Observable itself that decides when these functions will be called. For example {@link of}\n * by default emits all its values synchronously. Always check documentation for how given Observable\n * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n *\n * #### Examples\n *\n * Subscribe with an {@link guide/observer Observer}\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * const sumObserver = {\n * sum: 0,\n * next(value) {\n * console.log('Adding: ' + value);\n * this.sum = this.sum + value;\n * },\n * error() {\n * // We actually could just remove this method,\n * // since we do not really care about errors right now.\n * },\n * complete() {\n * console.log('Sum equals: ' + this.sum);\n * }\n * };\n *\n * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n * .subscribe(sumObserver);\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n *\n * ```ts\n * import { of } from 'rxjs'\n *\n * let sum = 0;\n *\n * of(1, 2, 3).subscribe(\n * value => {\n * console.log('Adding: ' + value);\n * sum = sum + value;\n * },\n * undefined,\n * () => console.log('Sum equals: ' + sum)\n * );\n *\n * // Logs:\n * // 'Adding: 1'\n * // 'Adding: 2'\n * // 'Adding: 3'\n * // 'Sum equals: 6'\n * ```\n *\n * Cancel a subscription\n *\n * ```ts\n * import { interval } from 'rxjs';\n *\n * const subscription = interval(1000).subscribe({\n * next(num) {\n * console.log(num)\n * },\n * complete() {\n * // Will not be called, even when cancelling subscription.\n * console.log('completed!');\n * }\n * });\n *\n * setTimeout(() => {\n * subscription.unsubscribe();\n * console.log('unsubscribed!');\n * }, 2500);\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 'unsubscribed!' after 2.5s\n * ```\n *\n * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,\n * or the first of three possible handlers, which is the handler for each value emitted from the subscribed\n * Observable.\n * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,\n * the error will be thrown asynchronously as unhandled.\n * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.\n * @return {Subscription} a subscription reference to the registered handlers\n * @method subscribe\n */\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n ): Subscription {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(\n operator\n ? // We're dealing with a subscription in the\n // operator chain to one of our lifted operators.\n operator.call(subscriber, source)\n : source\n ? // If `source` has a value, but `operator` does not, something that\n // had intimate knowledge of our API, like our `Subject`, must have\n // set it. We're going to just call `_subscribe` directly.\n this._subscribe(subscriber)\n : // In all other cases, we're likely wrapping a user-provided initializer\n // function, so we need to catch errors and handle them appropriately.\n this._trySubscribe(subscriber)\n );\n });\n\n return subscriber;\n }\n\n /** @internal */\n protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n try {\n return this._subscribe(sink);\n } catch (err) {\n // We don't need to return anything in this case,\n // because it's just going to try to `add()` to a subscription\n // above.\n sink.error(err);\n }\n }\n\n /**\n * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * #### Example\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(4));\n *\n * async function getTotal() {\n * let total = 0;\n *\n * await source$.forEach(value => {\n * total += value;\n * console.log('observable -> ' + value);\n * });\n *\n * return total;\n * }\n *\n * getTotal().then(\n * total => console.log('Total: ' + total)\n * );\n *\n * // Expected:\n * // 'observable -> 0'\n * // 'observable -> 1'\n * // 'observable -> 2'\n * // 'observable -> 3'\n * // 'Total: 6'\n * ```\n *\n * @param next a handler for each value emitted by the observable\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n */\n forEach(next: (value: T) => void): Promise<void>;\n\n /**\n * @param next a handler for each value emitted by the observable\n * @param promiseCtor a constructor function used to instantiate the Promise\n * @return a promise that either resolves on observable completion or\n * rejects with the handled error\n * @deprecated Passing a Promise constructor will no longer be available\n * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n * little benefit. If you need this functionality, it is recommended that you either\n * polyfill Promise, or you create an adapter to convert the returned native promise\n * to whatever promise implementation you wanted. Will be removed in v8.\n */\n forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor<void>((resolve, reject) => {\n const subscriber = new SafeSubscriber<T>({\n next: (value) => {\n try {\n next(value);\n } catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n }) as Promise<void>;\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n return this.source?.subscribe(subscriber);\n }\n\n /**\n * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n * @method Symbol.observable\n * @return {Observable} this instance of the observable\n */\n [Symbol_observable]() {\n return this;\n }\n\n /* tslint:disable:max-line-length */\n pipe(): Observable<T>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n pipe<A, B, C, D>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>\n ): Observable<D>;\n pipe<A, B, C, D, E>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>\n ): Observable<E>;\n pipe<A, B, C, D, E, F>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>\n ): Observable<F>;\n pipe<A, B, C, D, E, F, G>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>\n ): Observable<G>;\n pipe<A, B, C, D, E, F, G, H>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>\n ): Observable<H>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>\n ): Observable<I>;\n pipe<A, B, C, D, E, F, G, H, I>(\n op1: OperatorFunction<T, A>,\n op2: OperatorFunction<A, B>,\n op3: OperatorFunction<B, C>,\n op4: OperatorFunction<C, D>,\n op5: OperatorFunction<D, E>,\n op6: OperatorFunction<E, F>,\n op7: OperatorFunction<F, G>,\n op8: OperatorFunction<G, H>,\n op9: OperatorFunction<H, I>,\n ...operations: OperatorFunction<any, any>[]\n ): Observable<unknown>;\n /* tslint:enable:max-line-length */\n\n /**\n * Used to stitch together functional operators into a chain.\n * @method pipe\n * @return {Observable} the Observable result of all of the operators having\n * been called in the order they were passed in.\n *\n * ## Example\n *\n * ```ts\n * import { interval, filter, map, scan } from 'rxjs';\n *\n * interval(1000)\n * .pipe(\n * filter(x => x % 2 === 0),\n * map(x => x + x),\n * scan((acc, x) => acc + x)\n * )\n * .subscribe(x => console.log(x));\n * ```\n */\n pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n return pipeFromArray(operations)(this);\n }\n\n /* tslint:disable:max-line-length */\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n /* tslint:enable:max-line-length */\n\n /**\n * Subscribe to this Observable and get a Promise resolving on\n * `complete` with the last emission (if any).\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * @method toPromise\n * @param [promiseCtor] a constructor function used to instantiate\n * the Promise\n * @return A Promise that resolves with the last value emit, or\n * rejects on an error. If there were no emissions, Promise\n * resolves with undefined.\n * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n */\n toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n promiseCtor = getPromiseCtor(promiseCtor);\n\n return new promiseCtor((resolve, reject) => {\n let value: T | undefined;\n this.subscribe(\n (x: T) => (value = x),\n (err: any) => reject(err),\n () => resolve(value)\n );\n }) as Promise<T | undefined>;\n }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n return (source: Observable<T>) => {\n if (hasLift(source)) {\n return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n try {\n return init(liftedSource, this);\n } catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n", "import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber<T>(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n onFinalize?: () => void\n): Subscriber<T> {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber<T> extends Subscriber<T> {\n /**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n */\n constructor(\n destination: Subscriber<any>,\n onNext?: (value: T) => void,\n onComplete?: () => void,\n onError?: (err: any) => void,\n private onFinalize?: () => void,\n private shouldUnsubscribe?: () => boolean\n ) {\n // It's important - for performance reasons - that all of this class's\n // members are initialized and that they are always initialized in the same\n // order. This will ensure that all OperatorSubscriber instances have the\n // same hidden class in V8. This, in turn, will help keep the number of\n // hidden classes involved in property accesses within the base class as\n // low as possible. If the number of hidden classes involved exceeds four,\n // the property accesses will become megamorphic and performance penalties\n // will be incurred - i.e. inline caches won't be used.\n //\n // The reasons for ensuring all instances have the same hidden class are\n // further discussed in this blog post from Benedikt Meurer:\n // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n super(destination);\n this._next = onNext\n ? function (this: OperatorSubscriber<T>, value: T) {\n try {\n onNext(value);\n } catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (this: OperatorSubscriber<T>, err: any) {\n try {\n onError(err);\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function (this: OperatorSubscriber<T>) {\n try {\n onComplete();\n } catch (err) {\n // Send any errors that occur down stream.\n destination.error(err);\n } finally {\n // Ensure finalization.\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n\n unsubscribe() {\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n // Execute additional teardown if we have any and we didn't already do so.\n !closed && this.onFinalize?.();\n }\n }\n}\n", "import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n schedule(callback: FrameRequestCallback): Subscription;\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n delegate:\n | {\n requestAnimationFrame: typeof requestAnimationFrame;\n cancelAnimationFrame: typeof cancelAnimationFrame;\n }\n | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n // Clear the cancel function. The request has been fulfilled, so\n // attempting to cancel the request upon unsubscription would be\n // pointless.\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel?.(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n (_super) =>\n function ObjectUnsubscribedErrorImpl(this: any) {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n }\n);\n", "import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n closed = false;\n\n private currentObservers: Observer<T>[] | null = null;\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n observers: Observer<T>[] = [];\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n isStopped = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n hasError = false;\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n thrownError: any = null;\n\n /**\n * Creates a \"subject\" by basically gluing an observer to an observable.\n *\n * @nocollapse\n * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n */\n static create: (...args: any[]) => any = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n return new AnonymousSubject<T>(destination, source);\n };\n\n constructor() {\n // NOTE: This must be here to obscure Observable's constructor.\n super();\n }\n\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n lift<R>(operator: Operator<T, R>): Observable<R> {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator as any;\n return subject as any;\n }\n\n /** @internal */\n protected _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n\n next(value: T) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n\n error(err: any) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.error(err);\n }\n }\n });\n }\n\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift()!.complete();\n }\n }\n });\n }\n\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null!;\n }\n\n get observed() {\n return this.observers?.length > 0;\n }\n\n /** @internal */\n protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n\n /** @internal */\n protected _innerSubscribe(subscriber: Subscriber<any>) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n\n /** @internal */\n protected _checkFinalizedStatuses(subscriber: Subscriber<any>) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n } else if (isStopped) {\n subscriber.complete();\n }\n }\n\n /**\n * Creates a new Observable with this Subject as the source. You can do this\n * to create custom Observer-side logic of the Subject and conceal it from\n * code that uses the Observable.\n * @return {Observable} Observable that the Subject casts to\n */\n asObservable(): Observable<T> {\n const observable: any = new Observable<T>();\n observable.source = this;\n return observable;\n }\n}\n\n/**\n * @class AnonymousSubject<T>\n */\nexport class AnonymousSubject<T> extends Subject<T> {\n constructor(\n /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n public destination?: Observer<T>,\n source?: Observable<T>\n ) {\n super();\n this.source = source;\n }\n\n next(value: T) {\n this.destination?.next?.(value);\n }\n\n error(err: any) {\n this.destination?.error?.(err);\n }\n\n complete() {\n this.destination?.complete?.();\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n }\n}\n", "import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n now() {\n // Use the variable rather than `this` so that the function can be called\n // without being bound to the provider.\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n", "import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject<T> extends Subject<T> {\n private _buffer: (T | number)[] = [];\n private _infiniteTimeWindow = true;\n\n /**\n * @param bufferSize The size of the buffer to replay on subscription\n * @param windowTime The amount of time the buffered items will stay buffered\n * @param timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n * calculate the amount of time something has been buffered.\n */\n constructor(\n private _bufferSize = Infinity,\n private _windowTime = Infinity,\n private _timestampProvider: TimestampProvider = dateTimestampProvider\n ) {\n super();\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n\n next(value: T): void {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n\n /** @internal */\n protected _subscribe(subscriber: Subscriber<T>): Subscription {\n this._throwIfClosed();\n this._trimBuffer();\n\n const subscription = this._innerSubscribe(subscriber);\n\n const { _infiniteTimeWindow, _buffer } = this;\n // We use a copy here, so reentrant code does not mutate our array while we're\n // emitting it to a new subscriber.\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i] as T);\n }\n\n this._checkFinalizedStatuses(subscriber);\n\n return subscription;\n }\n\n private _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n // If we don't have an infinite buffer size, and we're over the length,\n // use splice to truncate the old buffer values off. Note that we have to\n // double the size for instances where we're not using an infinite time window\n // because we're storing the values and the timestamps in the same array.\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n // Now, if we're not in an infinite time window, remove all values where the time is\n // older than what is allowed.\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n // Search the array for the first timestamp that isn't expired and\n // truncate the buffer up to that point.\n for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n * new (scheduler: Scheduler, work: (state?: T) => void);\n * schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n *\n * @class Action<T>\n */\nexport class Action<T> extends Subscription {\n constructor(scheduler: Scheduler, work: (this: SchedulerAction<T>, state?: T) => void) {\n super();\n }\n /**\n * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n * some context object, `state`. May happen at some point in the future,\n * according to the `delay` parameter, if specified.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler.\n * @return {void}\n */\n public schedule(state?: T, delay: number = 0): Subscription {\n return this;\n }\n}\n", "import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n delegate:\n | {\n setInterval: SetIntervalFunction;\n clearInterval: ClearIntervalFunction;\n }\n | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n // When accessing the delegate, use the variable rather than `this` so that\n // the functions can be called without being bound to the provider.\n setInterval(handler: () => void, timeout?: number, ...args) {\n const { delegate } = intervalProvider;\n if (delegate?.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return (delegate?.clearInterval || clearInterval)(handle as any);\n },\n delegate: undefined,\n};\n", "import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction<T> extends Action<T> {\n public id: TimerHandle | undefined;\n public state?: T;\n // @ts-ignore: Property has no initializer and is not definitely assigned\n public delay: number;\n protected pending: boolean = false;\n\n constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n super(scheduler, work);\n }\n\n public schedule(state?: T, delay: number = 0): Subscription {\n if (this.closed) {\n return this;\n }\n\n // Always replace the current state with the new state.\n this.state = state;\n\n const id = this.id;\n const scheduler = this.scheduler;\n\n //\n // Important implementation note:\n //\n // Actions only execute once by default, unless rescheduled from within the\n // scheduled callback. This allows us to implement single and repeat\n // actions via the same code path, without adding API surface area, as well\n // as mimic traditional recursion but across asynchronous boundaries.\n //\n // However, JS runtimes and timers distinguish between intervals achieved by\n // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n // serial `setTimeout` calls can be individually delayed, which delays\n // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n // guarantee the interval callback will be invoked more precisely to the\n // interval period, regardless of load.\n //\n // Therefore, we use `setInterval` to schedule single and repeat actions.\n // If the action reschedules itself with the same delay, the interval is not\n // canceled. If the action doesn't reschedule, or reschedules with a\n // different delay, the interval will be canceled after scheduled callback\n // execution.\n //\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n\n // Set the pending flag indicating that this action has been scheduled, or\n // has recursively rescheduled itself.\n this.pending = true;\n\n this.delay = delay;\n // If this action has already an async Id, don't request a new one.\n this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n return this;\n }\n\n protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n\n protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n // If this action is rescheduled with the same delay time, don't clear the interval id.\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n // Otherwise, if the action's delay time is different from the current delay,\n // or the action has been rescheduled before it's executed, clear the interval id\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n\n return undefined;\n }\n\n /**\n * Immediately executes this action and the `work` it contains.\n * @return {any}\n */\n public execute(state: T, delay: number): any {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n } else if (this.pending === false && this.id != null) {\n // Dequeue if the action didn't reschedule itself. Don't call\n // unsubscribe(), because the action could reschedule later.\n // For example:\n // ```\n // scheduler.schedule(function doWork(counter) {\n // /* ... I'm a busy worker bee ... */\n // var originalAction = this;\n // /* wait 100ms before rescheduling the action */\n // setTimeout(function () {\n // originalAction.schedule(counter + 1);\n // }, 100);\n // }, 1000);\n // ```\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n\n protected _execute(state: T, _delay: number): any {\n let errored: boolean = false;\n let errorValue: any;\n try {\n this.work(state);\n } catch (e) {\n errored = true;\n // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n // return here, we can't have it return \"\" or 0 or false.\n // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n\n this.work = this.state = this.scheduler = null!;\n this.pending = false;\n\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n\n this.delay = null!;\n super.unsubscribe();\n }\n }\n}\n", "import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n * now(): number;\n * schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @class Scheduler\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n public static now: () => number = dateTimestampProvider.now;\n\n constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n this.now = now;\n }\n\n /**\n * A getter method that returns a number representing the current time\n * (at the time this function was called) according to the scheduler's own\n * internal clock.\n * @return {number} A number that represents the current time. May or may not\n * have a relation to wall-clock time. May or may not refer to a time unit\n * (e.g. milliseconds).\n */\n public now: () => number;\n\n /**\n * Schedules a function, `work`, for execution. May happen at some point in\n * the future, according to the `delay` parameter, if specified. May be passed\n * some context object, `state`, which will be passed to the `work` function.\n *\n * The given arguments will be processed an stored as an Action object in a\n * queue of actions.\n *\n * @param {function(state: ?T): ?Subscription} work A function representing a\n * task, or some unit of work to be executed by the Scheduler.\n * @param {number} [delay] Time to wait before executing the work, where the\n * time unit is implicit and defined by the Scheduler itself.\n * @param {T} [state] Some contextual data that the `work` function uses when\n * called by the Scheduler.\n * @return {Subscription} A subscription in order to be able to unsubscribe\n * the scheduled work.\n */\n public schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay: number = 0, state?: T): Subscription {\n return new this.schedulerActionCtor<T>(this, work).schedule(state, delay);\n }\n}\n", "import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n public actions: Array<AsyncAction<any>> = [];\n /**\n * A flag to indicate whether the Scheduler is currently executing a batch of\n * queued actions.\n * @type {boolean}\n * @internal\n */\n public _active: boolean = false;\n /**\n * An internal ID used to track the latest asynchronous task such as those\n * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n * others.\n * @type {any}\n * @internal\n */\n public _scheduled: TimerHandle | undefined;\n\n constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n super(SchedulerAction, now);\n }\n\n public flush(action: AsyncAction<any>): void {\n const { actions } = this;\n\n if (this._active) {\n actions.push(action);\n return;\n }\n\n let error: any;\n this._active = true;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n this._active = false;\n\n if (error) {\n while ((action = actions.shift()!)) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n * console.log(state);\n * this.schedule(state + 1, 1000); // `this` references currently executing Action,\n * // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n", "import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction<T> extends AsyncAction<T> {\n constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If an animation frame has already been requested, don't request another\n // one. If an animation frame hasn't been requested yet, request one. Return\n // the current animation frame request id.\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n\n protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue has no remaining actions with the same async id,\n // cancel the requested animation frame and set the scheduled flag to\n // undefined so the next AnimationFrameAction will request its own.\n const { actions } = scheduler;\n if (id != null && actions[actions.length - 1]?.id !== id) {\n animationFrameProvider.cancelAnimationFrame(id as number);\n scheduler._scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n", "import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction<any>): void {\n this._active = true;\n // The async id that effects a call to flush is stored in _scheduled.\n // Before executing an action, it's necessary to check the action's async\n // id to determine whether it's supposed to be executed in the current\n // flush.\n // Previous implementations of this method used a count to determine this,\n // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n // are removed from the actions array and that can shift actions that are\n // scheduled to be executed in a subsequent flush into positions at which\n // they are executed within the current flush.\n const flushId = this._scheduled;\n this._scheduled = undefined;\n\n const { actions } = this;\n let error: any;\n action = action || actions.shift()!;\n\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n this._active = false;\n\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n", "import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * <span class=\"informal\">Perform task when `window.requestAnimationFrame` would fire</span>\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html: <div style=\"background: #0ff;\"></div>\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n * div.style.height = height + \"px\";\n *\n * this.schedule(height + 1); // `this` references currently executing Action,\n * // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.</span>\n *\n * \n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n * next: () => console.log('Next'),\n * complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable<never>((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n return value && isFunction(value.schedule);\n}\n", "import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n", "export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');", "import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n return isFunction(value?.then);\n}\n", "import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n return isFunction(input[Symbol_observable]);\n}\n", "import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n", "/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n // TODO: We should create error codes that can be looked up, so this can be less verbose.\n return new TypeError(\n `You provided ${\n input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n );\n}\n", "export function getSymbolIterator(): symbol {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator' as any;\n }\n\n return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n", "import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n return isFunction(input?.[Symbol_iterator]);\n}\n", "import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n return;\n }\n yield value!;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {\n // We don't want to use instanceof checks because they would return\n // false for instances from another Realm, like an <iframe>.\n return isFunction(obj?.getReader);\n}\n", "import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\nexport function innerFrom<T>(input: ObservableInput<T>): Observable<T> {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n\n throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable<T>(obj: any) {\n return new Observable((subscriber: Subscriber<T>) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n // Should be caught by observable subscribe function error handling.\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike<T>(array: ArrayLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n // Loop over the array and emit each value. Note two things here:\n // 1. We're making sure that the subscriber is not closed on each loop.\n // This is so we don't continue looping over a very large array after\n // something like a `take`, `takeWhile`, or other synchronous unsubscription\n // has already unsubscribed.\n // 2. In this form, reentrant code can alter that array we're looping over.\n // This is a known issue, but considered an edge case. The alternative would\n // be to copy the array before executing the loop, but this has\n // performance implications.\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\n\nexport function fromPromise<T>(promise: PromiseLike<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n promise\n .then(\n (value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n },\n (err: any) => subscriber.error(err)\n )\n .then(null, reportUnhandledError);\n });\n}\n\nexport function fromIterable<T>(iterable: Iterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\n\nexport function fromAsyncIterable<T>(asyncIterable: AsyncIterable<T>) {\n return new Observable((subscriber: Subscriber<T>) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\n\nexport function fromReadableStreamLike<T>(readableStream: ReadableStreamLike<T>) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process<T>(asyncIterable: AsyncIterable<T>, subscriber: Subscriber<T>) {\n for await (const value of asyncIterable) {\n subscriber.next(value);\n // A side-effect may have closed our subscriber,\n // check before the next iteration.\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n}\n", "import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay: number,\n repeat: true\n): void;\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay?: number,\n repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n parentSubscription: Subscription,\n scheduler: SchedulerLike,\n work: () => void,\n delay = 0,\n repeat = false\n): Subscription | void {\n const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n } else {\n this.unsubscribe();\n }\n }, delay);\n\n parentSubscription.add(scheduleSubscription);\n\n if (!repeat) {\n // Because user-land scheduler implementations are unlikely to properly reuse\n // Actions for repeat scheduling, we can't trust that the returned subscription\n // will control repeat subscription scenarios. So we're trying to avoid using them\n // incorrectly within this library.\n return scheduleSubscription;\n }\n}\n", "/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10); // Intervals are scheduled\n * // with async scheduler by default...\n * intervals.pipe(\n * observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * ) // scheduler to ensure smooth animation.\n * .subscribe(val => {\n * someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * \n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n // The current array index.\n let i = 0;\n // Start iterating over the array like on a schedule.\n return scheduler.schedule(function () {\n if (i === input.length) {\n // If we have hit the end of the array like in the\n // previous job, we can complete.\n subscriber.complete();\n } else {\n // Otherwise let's next the value at the current index,\n // then increment our index.\n subscriber.next(input[i++]);\n // If the last emission didn't cause us to close the subscriber\n // (via take or some side effect), reschedule the job and we'll\n // make another pass.\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n return new Observable<T>((subscriber) => {\n let iterator: Iterator<T, T>;\n\n // Schedule the initial creation of the iterator from\n // the iterable. This is so the code in the iterable is\n // not called until the scheduled job fires.\n executeSchedule(subscriber, scheduler, () => {\n // Create the iterator.\n iterator = (input as any)[Symbol_iterator]();\n\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n let value: T;\n let done: boolean | undefined;\n try {\n // Pull the value out of the iterator\n ({ value, done } = iterator.next());\n } catch (err) {\n // We got an error while pulling from the iterator\n subscriber.error(err);\n return;\n }\n\n if (done) {\n // If it is \"done\" we just complete. This mimics the\n // behavior of JavaScript's `for..of` consumption of\n // iterables, which will not emit the value from an iterator\n // result of `{ done: true: value: 'here' }`.\n subscriber.complete();\n } else {\n // The iterable is not done, emit the value.\n subscriber.next(value);\n }\n },\n 0,\n true\n );\n });\n\n // During finalization, if we see this iterator has a `return` method,\n // then we know it is a Generator, and not just an Iterator. So we call\n // the `return()` function. This will ensure that any `finally { }` blocks\n // inside of the generator we can hit will be hit properly.\n return () => isFunction(iterator?.return) && iterator.return();\n });\n}\n", "import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable<T>((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(\n subscriber,\n scheduler,\n () => {\n iterator.next().then((result) => {\n if (result.done) {\n // This will remove the subscriptions from\n // the parent subscription.\n subscriber.complete();\n } else {\n subscriber.next(result.value);\n }\n });\n },\n 0,\n true\n );\n });\n });\n}\n", "import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n", "import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * \n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n * let i = seed;\n * while (true) {\n * yield i;\n * i = 2 * i; // double it\n * }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param {ObservableInput<T>} A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param {SchedulerLike} An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return {Observable<T>}\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n", "import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable<null>;\nexport function of(value: undefined): Observable<undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable<never>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of<A extends readonly unknown[]>(...valuesAndScheduler: [...A, SchedulerLike]): Observable<ValueFromArray<A>>;\n\nexport function of(): Observable<never>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of<T>(): Observable<T>;\nexport function of<T>(value: T): Observable<T>;\nexport function of<A extends readonly unknown[]>(...values: A): Observable<ValueFromArray<A>>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * <span class=\"informal\">Each argument becomes a `next` notification.</span>\n *\n * \n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n * .subscribe({\n * next: value => console.log('next:', value),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param {...T} values A comma separated list of arguments you want to be emitted\n * @return {Observable} An Observable that emits the arguments\n * described above and then completes.\n */\nexport function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {\n const scheduler = popScheduler(args);\n return from(args as T[], scheduler);\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerLike } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates an observable that will create an error instance and push it to the consumer as an error\n * immediately upon subscription.\n *\n * <span class=\"informal\">Just errors and does nothing else</span>\n *\n * \n *\n * This creation function is useful for creating an observable that will create an error and error every\n * time it is subscribed to. Generally, inside of most operators when you might want to return an errored\n * observable, this is unnecessary. In most cases, such as in the inner return of {@link concatMap},\n * {@link mergeMap}, {@link defer}, and many others, you can simply throw the error, and RxJS will pick\n * that up and notify the consumer of the error.\n *\n * ## Example\n *\n * Create a simple observable that will create a new error with a timestamp and log it\n * and the message every time you subscribe to it\n *\n * ```ts\n * import { throwError } from 'rxjs';\n *\n * let errorCount = 0;\n *\n * const errorWithTimestamp$ = throwError(() => {\n * const error: any = new Error(`This is error number ${ ++errorCount }`);\n * error.timestamp = Date.now();\n * return error;\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * errorWithTimestamp$.subscribe({\n * error: err => console.log(err.timestamp, err.message)\n * });\n *\n * // Logs the timestamp and a new error message for each subscription\n * ```\n *\n * ### Unnecessary usage\n *\n * Using `throwError` inside of an operator or creation function\n * with a callback, is usually not necessary\n *\n * ```ts\n * import { of, concatMap, timer, throwError } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // This is probably overkill.\n * return throwError(() => new Error(`Invalid time ${ ms }`));\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * You can just throw the error instead\n *\n * ```ts\n * import { of, concatMap, timer } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n * concatMap(ms => {\n * if (ms < 10000) {\n * return timer(ms);\n * } else {\n * // Cleaner and easier to read for most folks.\n * throw new Error(`Invalid time ${ ms }`);\n * }\n * })\n * )\n * .subscribe({\n * next: console.log,\n * error: console.error\n * });\n * ```\n *\n * @param errorFactory A factory function that will create the error instance that is pushed.\n */\nexport function throwError(errorFactory: () => any): Observable<never>;\n\n/**\n * Returns an observable that will error with the specified error immediately upon subscription.\n *\n * @param error The error instance to emit\n * @deprecated Support for passing an error value will be removed in v8. Instead, pass a factory function to `throwError(() => new Error('test'))`. This is\n * because it will create the error at the moment it should be created and capture a more appropriate stack trace. If\n * for some reason you need to create the error ahead of time, you can still do that: `const err = new Error('test'); throwError(() => err);`.\n */\nexport function throwError(error: any): Observable<never>;\n\n/**\n * Notifies the consumer of an error using a given scheduler by scheduling it at delay `0` upon subscription.\n *\n * @param errorOrErrorFactory An error instance or error factory\n * @param scheduler A scheduler to use to schedule the error notification\n * @deprecated The `scheduler` parameter will be removed in v8.\n * Use `throwError` in combination with {@link observeOn}: `throwError(() => new Error('test')).pipe(observeOn(scheduler));`.\n * Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function throwError(errorOrErrorFactory: any, scheduler: SchedulerLike): Observable<never>;\n\nexport function throwError(errorOrErrorFactory: any, scheduler?: SchedulerLike): Observable<never> {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber: Subscriber<never>) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init as any, 0, subscriber) : init);\n}\n", "import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n /**\n * @deprecated Internal implementation detail. Do not construct error instances.\n * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n */\n new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n *\n * @class EmptyError\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass((_super) => function EmptyErrorImpl(this: any) {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n", "/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value as any);\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * \n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param {function(value: T, index: number): R} project The function to apply\n * to each `value` emitted by the source Observable. The `index` parameter is\n * the number `i` for the i-th emission that has happened since the\n * subscription, starting from the number `0`.\n * @param {any} [thisArg] An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n return operate((source, subscriber) => {\n // The index of the value from the source. Used with projection.\n let index = 0;\n // Subscribe to the source, all errors and completions are sent along\n // to the consumer.\n source.subscribe(\n createOperatorSubscriber(subscriber, (value: T) => {\n // Call the projection function with the appropriate this context,\n // and send the resulting value to the consumer.\n subscriber.next(project.call(thisArg, value, index++));\n })\n );\n });\n}\n", "import { OperatorFunction } from \"../types\";\nimport { map } from \"../operators/map\";\n\nconst { isArray } = Array;\n\nfunction callOrApply<T, R>(fn: ((...values: T[]) => R), args: T|T[]): R {\n return isArray(args) ? fn(...args) : fn(args);\n}\n\n/**\n * Used in several -- mostly deprecated -- situations where we need to \n * apply a list of arguments or a single argument to a result selector.\n */\nexport function mapOneOrManyArgs<T, R>(fn: ((...values: T[]) => R)): OperatorFunction<T|T[], R> {\n return map(args => callOrApply(fn, args))\n}", "const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\n\n/**\n * Used in functions where either a list of arguments, a single array of arguments, or a\n * dictionary of arguments can be returned. Returns an object with an `args` property with\n * the arguments in an array, if it is a dictionary, it will also return the `keys` in another\n * property.\n */\nexport function argsArgArrayOrObject<T, O extends Record<string, T>>(args: T[] | [O] | [T[]]): { args: T[]; keys: string[] | null } {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n\n return { args: args as T[], keys: null };\n}\n\nfunction isPOJO(obj: any): obj is object {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n", "export function createObject(keys: string[], values: any[]) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {} as any);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf, ObservableInputTuple } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { Subscriber } from '../Subscriber';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { Subscription } from '../Subscription';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { AnyCatcher } from '../AnyCatcher';\nimport { executeSchedule } from '../util/executeSchedule';\n\n// combineLatest(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function combineLatest<T extends AnyCatcher>(arg: T): Observable<unknown>;\n\n// combineLatest([a, b, c])\nexport function combineLatest(sources: []): Observable<never>;\nexport function combineLatest<A extends readonly unknown[]>(sources: readonly [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n sources: readonly [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R,\n scheduler: SchedulerLike\n): Observable<R>;\nexport function combineLatest<A extends readonly unknown[], R>(\n sources: readonly [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n sources: readonly [...ObservableInputTuple<A>],\n scheduler: SchedulerLike\n): Observable<A>;\n\n// combineLatest(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n ...sourcesAndResultSelectorAndScheduler: [...ObservableInputTuple<A>, (...values: A) => R, SchedulerLike]\n): Observable<R>;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): Observable<A>;\n\n// combineLatest({a, b, c})\nexport function combineLatest(sourcesObject: { [K in any]: never }): Observable<never>;\nexport function combineLatest<T extends Record<string, ObservableInput<any>>>(\n sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf<T[K]> }>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * \n *\n * `combineLatest` combines the values from all the Observables passed in the\n * observables array. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to this operator,\n * the returned Observable will always emit an array of `n` values, in an order\n * corresponding to the order of the passed Observables (the value from the first Observable\n * will be at index 0 of the array and so on).\n *\n * Static version of `combineLatest` accepts an array of Observables. Note that an array of\n * Observables is a good choice, if you don't know beforehand how many Observables\n * you will combine. Passing an empty array will result in an Observable that\n * completes immediately.\n *\n * To ensure the output array always has the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will now be impossible to include a value from the\n * completed Observable in the resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, the resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, the result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of a completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * ## Examples\n *\n * Combine two timer Observables\n *\n * ```ts\n * import { timer, combineLatest } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest([firstTimer, secondTimer]);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * Combine a dictionary of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = {\n * a: of(1).pipe(delay(1000), startWith(0)),\n * b: of(5).pipe(delay(5000), startWith(0)),\n * c: of(10).pipe(delay(10000), startWith(0))\n * };\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // { a: 0, b: 0, c: 0 } immediately\n * // { a: 1, b: 0, c: 0 } after 1s\n * // { a: 1, b: 5, c: 0 } after 5s\n * // { a: 1, b: 5, c: 10 } after 10s\n * ```\n *\n * Combine an array of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = [1, 5, 10].map(\n * n => of(n).pipe(\n * delay(n * 1000), // emit 0 and then emit n after n seconds\n * startWith(0)\n * )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n * Use map operator to dynamically calculate the Body-Mass Index\n *\n * ```ts\n * import { of, combineLatest, map } from 'rxjs';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest([weight, height]).pipe(\n * map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param {ObservableInput} [observables] An array of input Observables to combine with each other.\n * An array of Observables must be given as the first argument.\n * @param {function} [project] An optional function to project the values from\n * the combined latest values into a new value on the output Observable.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for subscribing to\n * each input Observable.\n * @return {Observable} An Observable of projected values from the most recent\n * values from each input Observable, or an array of the most recent values from\n * each input Observable.\n */\nexport function combineLatest<O extends ObservableInput<any>, R>(...args: any[]): Observable<R> | Observable<ObservedValueOf<O>[]> {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n\n const { args: observables, keys } = argsArgArrayOrObject(args);\n\n if (observables.length === 0) {\n // If no observables are passed, or someone has passed an empty array\n // of observables, or even an empty object POJO, we need to just\n // complete (EMPTY), but we have to honor the scheduler provided if any.\n return from([], scheduler as any);\n }\n\n const result = new Observable<ObservedValueOf<O>[]>(\n combineLatestInit(\n observables as ObservableInput<ObservedValueOf<O>>[],\n scheduler,\n keys\n ? // A handler for scrubbing the array of args into a dictionary.\n (values) => createObject(keys, values)\n : // A passthrough to just return the array\n identity\n )\n );\n\n return resultSelector ? (result.pipe(mapOneOrManyArgs(resultSelector)) as Observable<R>) : result;\n}\n\nexport function combineLatestInit(\n observables: ObservableInput<any>[],\n scheduler?: SchedulerLike,\n valueTransform: (values: any[]) => any = identity\n) {\n return (subscriber: Subscriber<any>) => {\n // The outer subscription. We're capturing this in a function\n // because we may have to schedule it.\n maybeSchedule(\n scheduler,\n () => {\n const { length } = observables;\n // A store for the values each observable has emitted so far. We match observable to value on index.\n const values = new Array(length);\n // The number of currently active subscriptions, as they complete, we decrement this number to see if\n // we are all done combining values, so we can complete the result.\n let active = length;\n // The number of inner sources that still haven't emitted the first value\n // We need to track this because all sources need to emit one value in order\n // to start emitting values.\n let remainingFirstValues = length;\n // The loop to kick off subscription. We're keying everything on index `i` to relate the observables passed\n // in to the slot in the output array or the key in the array of keys in the output dictionary.\n for (let i = 0; i < length; i++) {\n maybeSchedule(\n scheduler,\n () => {\n const source = from(observables[i], scheduler as any);\n let hasFirstValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // When we get a value, record it in our set of values.\n values[i] = value;\n if (!hasFirstValue) {\n // If this is our first value, record that.\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n // We're not waiting for any more\n // first values, so we can emit!\n subscriber.next(valueTransform(values.slice()));\n }\n },\n () => {\n if (!--active) {\n // We only complete the result if we have no more active\n // inner observables.\n subscriber.complete();\n }\n }\n )\n );\n },\n subscriber\n );\n }\n },\n subscriber\n );\n };\n}\n\n/**\n * A small utility to handle the couple of locations where we want to schedule if a scheduler was provided,\n * but we don't if there was no scheduler.\n */\nfunction maybeSchedule(scheduler: SchedulerLike | undefined, execute: () => void, subscription: Subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n } else {\n execute();\n }\n}\n", "import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n source: Observable<T>,\n subscriber: Subscriber<R>,\n project: (value: T, index: number) => ObservableInput<R>,\n concurrent: number,\n onBeforeNext?: (innerValue: R) => void,\n expand?: boolean,\n innerSubScheduler?: SchedulerLike,\n additionalFinalizer?: () => void\n) {\n // Buffered values, in the event of going over our concurrency limit\n const buffer: T[] = [];\n // The number of active inner subscriptions.\n let active = 0;\n // An index to pass to our accumulator function\n let index = 0;\n // Whether or not the outer source has completed.\n let isComplete = false;\n\n /**\n * Checks to see if we can complete our result or not.\n */\n const checkComplete = () => {\n // If the outer has completed, and nothing is left in the buffer,\n // and we don't have any active inner subscriptions, then we can\n // Emit the state and complete.\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n\n // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n const doInnerSub = (value: T) => {\n // If we're expanding, we need to emit the outer values and the inner values\n // as the inners will \"become outers\" in a way as they are recursively fed\n // back to the projection mechanism.\n expand && subscriber.next(value as any);\n\n // Increment the number of active subscriptions so we can track it\n // against our concurrency limit later.\n active++;\n\n // A flag used to show that the inner observable completed.\n // This is checked during finalization to see if we should\n // move to the next item in the buffer, if there is on.\n let innerComplete = false;\n\n // Start our inner subscription.\n innerFrom(project(value, index++)).subscribe(\n createOperatorSubscriber(\n subscriber,\n (innerValue) => {\n // `mergeScan` has additional handling here. For example\n // taking the inner value and updating state.\n onBeforeNext?.(innerValue);\n\n if (expand) {\n // If we're expanding, then just recurse back to our outer\n // handler. It will emit the value first thing.\n outerNext(innerValue as any);\n } else {\n // Otherwise, emit the inner value.\n subscriber.next(innerValue);\n }\n },\n () => {\n // Flag that we have completed, so we know to check the buffer\n // during finalization.\n innerComplete = true;\n },\n // Errors are passed to the destination.\n undefined,\n () => {\n // During finalization, if the inner completed (it wasn't errored or\n // cancelled), then we want to try the next item in the buffer if\n // there is one.\n if (innerComplete) {\n // We have to wrap this in a try/catch because it happens during\n // finalization, possibly asynchronously, and we want to pass\n // any errors that happen (like in a projection function) to\n // the outer Subscriber.\n try {\n // INNER SOURCE COMPLETE\n // Decrement the active count to ensure that the next time\n // we try to call `doInnerSub`, the number is accurate.\n active--;\n // If we have more values in the buffer, try to process those\n // Note that this call will increment `active` ahead of the\n // next conditional, if there were any more inner subscriptions\n // to start.\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift()!;\n // Particularly for `expand`, we need to check to see if a scheduler was provided\n // for when we want to start our inner subscription. Otherwise, we just start\n // are next inner subscription.\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n } else {\n doInnerSub(bufferedValue);\n }\n }\n // Check to see if we can complete, and complete if so.\n checkComplete();\n } catch (err) {\n subscriber.error(err);\n }\n }\n }\n )\n );\n };\n\n // Subscribe to our source observable.\n source.subscribe(\n createOperatorSubscriber(subscriber, outerNext, () => {\n // Outer completed, make a note of it, and check to see if we can complete everything.\n isComplete = true;\n checkComplete();\n })\n );\n\n // Additional finalization (for when the destination is torn down).\n // Other finalization is added implicitly via subscription above.\n return () => {\n additionalFinalizer?.();\n };\n}\n", "import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined,\n concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n * mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n if (isFunction(resultSelector)) {\n // DEPRECATED PATH\n return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n } else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n", "import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * \n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param {number} [concurrent=Infinity] Maximum number of inner\n * Observables being subscribed to concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll<O extends ObservableInput<any>>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf<O>> {\n return mergeMap(identity, concurrent);\n}\n", "import { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * \n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, map, interval, take, concatAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n * map(() => interval(1000).pipe(take(4)))\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaustAll}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable emitting values from all the\n * inner Observables concatenated.\n */\nexport function concatAll<O extends ObservableInput<any>>(): OperatorFunction<O, ObservedValueOf<O>> {\n return mergeAll(1);\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInputTuple, SchedulerLike } from '../types';\nimport { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function concat<T extends readonly unknown[]>(...inputs: [...ObservableInputTuple<T>]): Observable<T[number]>;\nexport function concat<T extends readonly unknown[]>(\n ...inputsAndScheduler: [...ObservableInputTuple<T>, SchedulerLike]\n): Observable<T[number]>;\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * \n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n *\n * Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n *\n * ```ts\n * import { interval, take, range, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * Concatenate 3 Observables\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * Concatenate the same Observable to repeat it\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n * .subscribe({\n * next: value => console.log(value),\n * complete: () => console.log('...and it is done!')\n * });\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // '...and it is done!' also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param args Input Observables to concatenate.\n */\nexport function concat(...args: any[]): Observable<unknown> {\n return concatAll()(from(args, popScheduler(args)));\n}\n", "import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n * is subscribed.\n * </span>\n *\n * \n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n *\n * Subscribe to either an Observable of clicks or an Observable of interval, at random\n *\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(() => {\n * return Math.random() > 0.5\n * ? fromEvent(document, 'click')\n * : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param {function(): ObservableInput} observableFactory The Observable\n * factory function to invoke for each Observer that subscribes to the output\n * Observable. May also return a Promise, which will be converted on the fly\n * to an Observable.\n * @return {Observable} An Observable whose Observers' subscriptions trigger\n * an invocation of the given Observable factory function.\n */\nexport function defer<R extends ObservableInput<any>>(observableFactory: () => R): Observable<ObservedValueOf<R>> {\n return new Observable<ObservedValueOf<R>>((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n// These constants are used to create handler registry functions using array mapping below.\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'] as const;\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'] as const;\nconst jqueryMethods = ['on', 'off'] as const;\n\nexport interface NodeStyleEventEmitter {\n addListener(eventName: string | symbol, handler: NodeEventHandler): this;\n removeListener(eventName: string | symbol, handler: NodeEventHandler): this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener(eventName: string, handler: NodeEventHandler): void | {};\n removeListener(eventName: string, handler: NodeEventHandler): void | {};\n}\n\n// Use handler types like those in @types/jquery. See:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\nexport interface JQueryStyleEventEmitter<TContext, T> {\n on(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n off(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n}\n\nexport interface EventListenerObject<E> {\n handleEvent(evt: E): void;\n}\n\nexport interface HasEventTargetAddRemove<E> {\n addEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject<E> | null,\n options?: boolean | AddEventListenerOptions\n ): void;\n removeEventListener(\n type: string,\n listener: ((evt: E) => void) | EventListenerObject<E> | null,\n options?: EventListenerOptions | boolean\n ): void;\n}\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\nexport function fromEvent<T>(target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>, eventName: string): Observable<T>;\nexport function fromEvent<T, R>(\n target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n eventName: string,\n resultSelector: (event: T) => R\n): Observable<R>;\nexport function fromEvent<T>(\n target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n eventName: string,\n options: EventListenerOptions\n): Observable<T>;\nexport function fromEvent<T, R>(\n target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n eventName: string,\n options: EventListenerOptions,\n resultSelector: (event: T) => R\n): Observable<R>;\n\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent(\n target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n eventName: string\n): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n eventName: string,\n resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent<T>(\n target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n eventName: string\n): Observable<T>;\nexport function fromEvent<T, R>(\n target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n eventName: string,\n resultSelector: (value: T, ...args: any[]) => R\n): Observable<R>;\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * \n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n *\n * Emit clicks happening on the DOM document\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * Use `addEventListener` with capture option\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget<T>} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable<T>}\n */\nexport function fromEvent<T>(\n target: any,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: (...args: any[]) => T\n): Observable<T> {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent<T>(target, eventName, options as EventListenerOptions).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n // Figure out our add and remove methods. In order to do this,\n // we are going to analyze the target in a preferred order, if\n // the target matches a given signature, we take the two \"add\" and \"remove\"\n // method names and apply them to a map to create opposite versions of the\n // same function. This is because they all operate in duplicate pairs,\n // `addListener(name, handler)`, `removeListener(name, handler)`, for example.\n // The call only differs by method name, as to whether or not you're adding or removing.\n const [add, remove] =\n // If it is an EventTarget, we need to use a slightly different method than the other two patterns.\n isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler: any) => target[methodName](eventName, handler, options as EventListenerOptions))\n : // In all other cases, the call pattern is identical with the exception of the method names.\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n\n // If add is falsy, it's because we didn't match a pattern above.\n // Check to see if it is an ArrayLike, because if it is, we want to\n // try to apply fromEvent to all of it's items. We do this check last,\n // because there are may be some types that are both ArrayLike *and* implement\n // event registry points, and we'd rather delegate to that when possible.\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget: any) => fromEvent(subTarget, eventName, options as EventListenerOptions))(\n innerFrom(target)\n ) as Observable<T>;\n }\n }\n\n // If add is falsy and we made it here, it's because we didn't\n // match any valid target objects above.\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n\n return new Observable<T>((subscriber) => {\n // The handler we are going to register. Forwards the event object, by itself, or\n // an array of arguments to the event handler, if there is more than one argument,\n // to the consumer.\n const handler = (...args: any[]) => subscriber.next(1 < args.length ? args : args[0]);\n // Do the work of adding the handler to the target.\n add(handler);\n // When we finalize, we want to remove the handler and free up memory.\n return () => remove!(handler);\n });\n}\n\n/**\n * Used to create `add` and `remove` functions to register and unregister event handlers\n * from a target in the most common handler pattern, where there are only two arguments.\n * (e.g. `on(name, fn)`, `off(name, fn)`, `addListener(name, fn)`, or `removeListener(name, fn)`)\n * @param target The target we're calling methods on\n * @param eventName The event name for the event we're creating register or unregister functions for\n */\nfunction toCommonHandlerRegistry(target: any, eventName: string) {\n return (methodName: string) => (handler: any) => target[methodName](eventName, handler);\n}\n\n/**\n * Checks to see if the target implements the required node-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isNodeStyleEventEmitter(target: any): target is NodeStyleEventEmitter {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\n/**\n * Checks to see if the target implements the required jQuery-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isJQueryStyleEventEmitter(target: any): target is JQueryStyleEventEmitter<any, any> {\n return isFunction(target.on) && isFunction(target.off);\n}\n\n/**\n * Checks to see if the target implements the required EventTarget methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isEventTarget(target: any): target is HasEventTargetAddRemove<any> {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n", "import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern<T>(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void\n): Observable<T>;\nexport function fromEventPattern<T>(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T\n): Observable<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * <span class=\"informal\">When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.</span>\n *\n * \n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * than one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Examples\n *\n * Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n * // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n * function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n * function(handler, token) { someAPI.unregisterEventHandler(token); } // ...to then use it here.\n * );\n * ```\n *\n * Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n * console.log(eventType, eventMessage); // Logs 'EVENT_TYPE' 'EVENT_MESSAGE' to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n * handler => someAPI.registerEventHandler(handler),\n * handler => someAPI.unregisterEventHandler(handler)\n * (eventType, eventMessage) => eventType + ' --- ' + eventMessage // without that function only 'EVENT_TYPE'\n * ); // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // 'EVENT_TYPE --- EVENT_MESSAGE'\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, token?: any): void} [removeHandler] A function that\n * takes a `handler` function as an argument and removes it from the event source. If `addHandler`\n * returns some kind of token, `removeHandler` function will have it as a second parameter.\n * @param {function(...args: any): T} [project] A function to\n * transform results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable<T>} Observable which, when an event happens, emits first parameter\n * passed to registered event handler. Alternatively it emits whatever project function returns\n * at that moment.\n */\nexport function fromEventPattern<T>(\n addHandler: (handler: NodeEventHandler) => any,\n removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n resultSelector?: (...args: any[]) => T\n): Observable<T | T[]> {\n if (resultSelector) {\n return fromEventPattern<T>(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n\n return new Observable<T | T[]>((subscriber) => {\n const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n const retValue = addHandler(handler);\n return isFunction(removeHandler) ? () => removeHandler(handler, retValue) : undefined;\n });\n}\n", "import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * <span class=\"informal\">Used to emit a notification after a delay.</span>\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { of, timer, concatMap } from 'rxjs';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * timer(3000)\n * .pipe(concatMap(() => source))\n * .subscribe(console.log);\n * ```\n *\n * Take all values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, takeUntil, timer } from 'rxjs';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n * currentDate.getFullYear(),\n * currentDate.getMonth(),\n * currentDate.getDate(),\n * currentDate.getHours(),\n * currentDate.getMinutes() + 1\n * );\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n * takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n dueTime: number | Date = 0,\n intervalOrScheduler?: number | SchedulerLike,\n scheduler: SchedulerLike = asyncScheduler\n): Observable<number> {\n // Since negative intervalDuration is treated as though no\n // interval was specified at all, we start with a negative number.\n let intervalDuration = -1;\n\n if (intervalOrScheduler != null) {\n // If we have a second argument, and it's a scheduler,\n // override the scheduler we had defaulted. Otherwise,\n // it must be an interval.\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n } else {\n // Note that this *could* be negative, in which case\n // it's like not passing an intervalDuration at all.\n intervalDuration = intervalOrScheduler;\n }\n }\n\n return new Observable((subscriber) => {\n // If a valid date is passed, calculate how long to wait before\n // executing the first value... otherwise, if it's a number just schedule\n // that many milliseconds (or scheduler-specified unit size) in the future.\n let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n if (due < 0) {\n // Ensure we don't schedule in the future.\n due = 0;\n }\n\n // The incrementing value we emit.\n let n = 0;\n\n // Start the timer.\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n // Emit the next value and increment.\n subscriber.next(n++);\n\n if (0 <= intervalDuration) {\n // If we have a interval after the initial timer,\n // reschedule with the period.\n this.schedule(undefined, intervalDuration);\n } else {\n // We didn't have an interval. So just complete.\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\nexport function merge<A extends readonly unknown[]>(...sourcesAndConcurrency: [...ObservableInputTuple<A>, number?]): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike?]\n): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number?, SchedulerLike?]\n): Observable<A[number]>;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * \n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Merge together two Observables: 1s interval and clicks\n *\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console every time the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * Merge together 3 Observables, but run only 2 concurrently\n *\n * ```ts\n * import { interval, take, merge } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * // continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * // timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param {...ObservableInput} observables Input Observables to merge together.\n * @param {number} [concurrent=Infinity] Maximum number of input\n * Observables being subscribed to concurrently.\n * @param {SchedulerLike} [scheduler=null] The {@link SchedulerLike} to use for managing\n * concurrency of input Observables.\n * @return {Observable} an Observable that emits items that are the result of\n * every input Observable.\n */\nexport function merge(...args: (ObservableInput<unknown> | number | SchedulerLike)[]): Observable<unknown> {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args as ObservableInput<unknown>[];\n return !sources.length\n ? // No source provided\n EMPTY\n : sources.length === 1\n ? // One source? Just return it.\n innerFrom(sources[0])\n : // Merge all sources\n mergeAll(concurrent)(from(sources, scheduler));\n}\n", "import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * \n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ## Example\n *\n * Emit the number 7, then never emit anything else (not even complete)\n *\n * ```ts\n * import { NEVER, startWith } from 'rxjs';\n *\n * const info = () => console.log('Will not be called');\n *\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe({\n * next: x => console.log(x),\n * error: info,\n * complete: info\n * });\n * ```\n *\n * @see {@link Observable}\n * @see {@link EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable<never>(noop);\n\n/**\n * @deprecated Replaced with the {@link NEVER} constant. Will be removed in v8.\n */\nexport function never() {\n return NEVER;\n}\n", "const { isArray } = Array;\n\n/**\n * Used in operators and functions that accept either a list of arguments, or an array of arguments\n * as a single argument.\n */\nexport function argsOrArgArray<T>(args: (T | T[])[]): T[] {\n return args.length === 1 && isArray(args[0]) ? args[0] : (args as T[]);\n}\n", "import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, S extends T, A>(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function filter<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, A>(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction<T>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * \n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n // An index passed to our predicate function on each call.\n let index = 0;\n\n // Subscribe to the source, all errors and completions are\n // forwarded to the consumer.\n source.subscribe(\n // Call the predicate with the appropriate `this` context,\n // if the predicate returns `true`, then send the value\n // to the consumer.\n createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n );\n });\n}\n", "import { Observable } from '../Observable';\nimport { ObservableInputTuple } from '../types';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\n\nexport function zip<A extends readonly unknown[]>(sources: [...ObservableInputTuple<A>]): Observable<A>;\nexport function zip<A extends readonly unknown[], R>(\n sources: [...ObservableInputTuple<A>],\n resultSelector: (...values: A) => R\n): Observable<R>;\nexport function zip<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\nexport function zip<A extends readonly unknown[], R>(\n ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n *\n * Combine age and name from different sources\n *\n * ```ts\n * import { of, zip, map } from 'rxjs';\n *\n * const age$ = of(27, 25, 29);\n * const name$ = of('Foo', 'Bar', 'Beer');\n * const isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n * map(([age, name, isDev]) => ({ age, name, isDev }))\n * )\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n *\n * @param sources\n * @return {Observable<R>}\n */\nexport function zip(...args: unknown[]): Observable<unknown> {\n const resultSelector = popResultSelector(args);\n\n const sources = argsOrArgArray(args) as Observable<unknown>[];\n\n return sources.length\n ? new Observable<unknown[]>((subscriber) => {\n // A collection of buffers of values from each source.\n // Keyed by the same index with which the sources were passed in.\n let buffers: unknown[][] = sources.map(() => []);\n\n // An array of flags of whether or not the sources have completed.\n // This is used to check to see if we should complete the result.\n // Keyed by the same index with which the sources were passed in.\n let completed = sources.map(() => false);\n\n // When everything is done, release the arrays above.\n subscriber.add(() => {\n buffers = completed = null!;\n });\n\n // Loop over our sources and subscribe to each one. The index `i` is\n // especially important here, because we use it in closures below to\n // access the related buffers and completion properties\n for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n innerFrom(sources[sourceIndex]).subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n buffers[sourceIndex].push(value);\n // if every buffer has at least one value in it, then we\n // can shift out the oldest value from each buffer and emit\n // them as an array.\n if (buffers.every((buffer) => buffer.length)) {\n const result: any = buffers.map((buffer) => buffer.shift()!);\n // Emit the array. If theres' a result selector, use that.\n subscriber.next(resultSelector ? resultSelector(...result) : result);\n // If any one of the sources is both complete and has an empty buffer\n // then we complete the result. This is because we cannot possibly have\n // any more values to zip together.\n if (buffers.some((buffer, i) => !buffer.length && completed[i])) {\n subscriber.complete();\n }\n }\n },\n () => {\n // This source completed. Mark it as complete so we can check it later\n // if we have to.\n completed[sourceIndex] = true;\n // But, if this complete source has nothing in its buffer, then we\n // can complete the result, because we can't possibly have any more\n // values from this to zip together with the other values.\n !buffers[sourceIndex].length && subscriber.complete();\n }\n )\n );\n }\n\n // When everything is done, release the arrays above.\n return () => {\n buffers = completed = null!;\n };\n })\n : EMPTY;\n}\n", "import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\n\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * \n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, audit, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function audit<T>(durationSelector: (value: T) => ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n let durationSubscriber: Subscriber<any> | null = null;\n let isComplete = false;\n\n const endDuration = () => {\n durationSubscriber?.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe(\n (durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration))\n );\n }\n },\n () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }\n )\n );\n });\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * <span class=\"informal\">When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.</span>\n *\n * \n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, auditTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function auditTime<T>(duration: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n return audit(() => timer(duration, scheduler));\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.</span>\n *\n * \n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent, bufferCount } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent, bufferCount } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param {number} bufferSize The maximum size of the buffer emitted.\n * @param {number} [startBufferEvery] Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferCount<T>(bufferSize: number, startBufferEvery: number | null = null): OperatorFunction<T, T[]> {\n // If no `startBufferEvery` value was supplied, then we're\n // opening and closing on the bufferSize itself.\n startBufferEvery = startBufferEvery ?? bufferSize;\n\n return operate((source, subscriber) => {\n let buffers: T[][] = [];\n let count = 0;\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n let toEmit: T[][] | null = null;\n\n // Check to see if we need to start a buffer.\n // This will start one at the first value, and then\n // a new one every N after that.\n if (count++ % startBufferEvery! === 0) {\n buffers.push([]);\n }\n\n // Push our value into our active buffers.\n for (const buffer of buffers) {\n buffer.push(value);\n // Check to see if we're over the bufferSize\n // if we are, record it so we can emit it later.\n // If we emitted it now and removed it, it would\n // mutate the `buffers` array while we're looping\n // over it.\n if (bufferSize <= buffer.length) {\n toEmit = toEmit ?? [];\n toEmit.push(buffer);\n }\n }\n\n if (toEmit) {\n // We have found some buffers that are over the\n // `bufferSize`. Emit them, and remove them from our\n // buffers list.\n for (const buffer of toEmit) {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n },\n () => {\n // When the source completes, emit all of our\n // active buffers.\n for (const buffer of buffers) {\n subscriber.next(buffer);\n }\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Clean up our memory when we finalize\n buffers = null!;\n }\n )\n );\n });\n}\n", "import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\n/* tslint:disable:max-line-length */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n/* tslint:enable:max-line-length */\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <span class=\"informal\">\n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * </span>\n *\n * \n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n *\n * Continue with a different Observable when there's an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => of('I', 'II', 'III', 'IV', 'V'))\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retry the caught source Observable again in case of error, similar to `retry()` operator\n *\n * ```ts\n * import { of, map, catchError, take } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError((err, caught) => caught),\n * take(30)\n * )\n * .subscribe(x => console.log(x));\n * // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throw a new error when the source Observable throws an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n * .pipe(\n * map(n => {\n * if (n === 4) {\n * throw 'four!';\n * }\n * return n;\n * }),\n * catchError(err => {\n * throw 'error in source. Details: ' + err;\n * })\n * )\n * .subscribe({\n * next: x => console.log(x),\n * error: err => console.log(err)\n * });\n * // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param {function} selector a function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again. Whatever observable\n * is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError<T, O extends ObservableInput<any>>(\n selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n return operate((source, subscriber) => {\n let innerSub: Subscription | null = null;\n let syncUnsub = false;\n let handledResult: Observable<ObservedValueOf<O>>;\n\n innerSub = source.subscribe(\n createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n } else {\n // We don't have an innerSub yet, that means the error was synchronous\n // because the subscribe call hasn't returned yet.\n syncUnsub = true;\n }\n })\n );\n\n if (syncUnsub) {\n // We have a synchronous error, we need to make sure to\n // finalize right away. This ensures that callbacks in the `finalize` operator are called\n // at the right time, and that finalization occurs at the expected\n // time between the source error and the subscription to the\n // next observable.\n innerSub.unsubscribe();\n innerSub = null;\n handledResult!.subscribe(subscriber);\n }\n });\n}\n", "import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A basic scan operation. This is used for `scan` and `reduce`.\n * @param accumulator The accumulator to use\n * @param seed The seed value for the state to accumulate\n * @param hasSeed Whether or not a seed was provided\n * @param emitOnNext Whether or not to emit the state on next\n * @param emitBeforeComplete Whether or not to emit the before completion\n */\n\nexport function scanInternals<V, A, S>(\n accumulator: (acc: V | A | S, value: V, index: number) => A,\n seed: S,\n hasSeed: boolean,\n emitOnNext: boolean,\n emitBeforeComplete?: undefined | true\n) {\n return (source: Observable<V>, subscriber: Subscriber<any>) => {\n // Whether or not we have state yet. This will only be\n // false before the first value arrives if we didn't get\n // a seed value.\n let hasState = hasSeed;\n // The state that we're tracking, starting with the seed,\n // if there is one, and then updated by the return value\n // from the accumulator on each emission.\n let state: any = seed;\n // An index to pass to the accumulator function.\n let index = 0;\n\n // Subscribe to our source. All errors and completions are passed through.\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Always increment the index.\n const i = index++;\n // Set the state\n state = hasState\n ? // We already have state, so we can get the new state from the accumulator\n accumulator(state, value, i)\n : // We didn't have state yet, a seed value was not provided, so\n\n // we set the state to the first value, and mark that we have state now\n ((hasState = true), value);\n\n // Maybe send it to the consumer.\n emitOnNext && subscriber.next(state);\n },\n // If an onComplete was given, call it, otherwise\n // just pass through the complete notification to the consumer.\n emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })\n )\n );\n };\n}\n", "import { combineLatestInit } from '../observable/combineLatest';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(\n sources: [...ObservableInputTuple<A>],\n project: (...values: [T, ...A]) => R\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(sources: [...ObservableInputTuple<A>]): OperatorFunction<T, [T, ...A]>;\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(\n ...sourcesAndProject: [...ObservableInputTuple<A>, (...values: [T, ...A]) => R]\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(...sources: [...ObservableInputTuple<A>]): OperatorFunction<T, [T, ...A]>;\n\n/**\n * @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8.\n */\nexport function combineLatest<T, R>(...args: (ObservableInput<any> | ((...values: any[]) => R))[]): OperatorFunction<T, unknown> {\n const resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest(...(args as Array<ObservableInput<any>>)), mapOneOrManyArgs(resultSelector))\n : operate((source, subscriber) => {\n combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);\n });\n}\n", "import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { combineLatest } from './combineLatest';\n\n/**\n * Create an observable that combines the latest values from all passed observables and the source\n * into arrays and emits them.\n *\n * Returns an observable, that when subscribed to, will subscribe to the source observable and all\n * sources provided as arguments. Once all sources emit at least one value, all of the latest values\n * will be emitted as an array. After that, every time any source emits a value, all of the latest values\n * will be emitted as an array.\n *\n * This is a useful operator for eagerly calculating values based off of changed inputs.\n *\n * ## Example\n *\n * Simple concatenation of values from two inputs\n *\n * ```ts\n * import { fromEvent, combineLatestWith, map } from 'rxjs';\n *\n * // Setup: Add two inputs to the page\n * const input1 = document.createElement('input');\n * document.body.appendChild(input1);\n * const input2 = document.createElement('input');\n * document.body.appendChild(input2);\n *\n * // Get streams of changes\n * const input1Changes$ = fromEvent(input1, 'change');\n * const input2Changes$ = fromEvent(input2, 'change');\n *\n * // Combine the changes by adding them together\n * input1Changes$.pipe(\n * combineLatestWith(input2Changes$),\n * map(([e1, e2]) => (<HTMLInputElement>e1.target).value + ' - ' + (<HTMLInputElement>e2.target).value)\n * )\n * .subscribe(x => console.log(x));\n * ```\n *\n * @param otherSources the other sources to subscribe to.\n * @return A function that returns an Observable that emits the latest\n * emissions from both source and provided Observables.\n */\nexport function combineLatestWith<T, A extends readonly unknown[]>(\n ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, Cons<T, A>> {\n return combineLatest(...otherSources);\n}\n", "import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n * concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param {function(value: T, ?index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent notification from each burst of emissions.</span>\n *\n * \n *\n * `debounceTime` delays notifications emitted by the source Observable, but drops\n * previous pending delayed emissions if a new notification arrives on the source\n * Observable. This operator keeps track of the most recent notification from the\n * source Observable, and emits that only when `dueTime` has passed\n * without any other notification appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous notification will be dropped\n * and will not be emitted and a new `dueTime` is scheduled.\n * If the completing event happens during `dueTime` the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during `dueTime` or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * notification to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n *\n * Emit the most recent click after a burst of clicks\n *\n * ```ts\n * import { fromEvent, debounceTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param {number} dueTime The timeout duration in milliseconds (or the time\n * unit determined internally by the optional `scheduler`) for the window of\n * time required to wait for emission silence before emitting the most recent\n * source value.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the timeout for each value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified `dueTime`, and may drop some values\n * if they occur too frequently.\n */\nexport function debounceTime<T>(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let activeTask: Subscription | null = null;\n let lastValue: T | null = null;\n let lastTime: number | null = null;\n\n const emit = () => {\n if (activeTask) {\n // We have a value! Free up memory first, then emit the value.\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle(this: SchedulerAction<unknown>) {\n // This is called `dueTime` after the first value\n // but we might have received new values during this window!\n\n const targetTime = lastTime! + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n // On that case, re-schedule to the new target\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n\n emit();\n }\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value: T) => {\n lastValue = value;\n lastTime = scheduler.now();\n\n // Only set up a task if it's not already up\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n },\n () => {\n // Source completed.\n // Emit any pending debounced values then complete\n emit();\n subscriber.complete();\n },\n // Pass all errors through to consumer.\n undefined,\n () => {\n // Finalization.\n lastValue = activeTask = null;\n }\n )\n );\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * <span class=\"informal\">If the source Observable turns out to be empty, then\n * this operator will emit a default value.</span>\n *\n * \n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n *\n * If no clicks happen in 5 seconds, then emit 'no clicks'\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, defaultIfEmpty } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param defaultValue The default value used if the source\n * Observable is empty.\n * @return A function that returns an Observable that emits either the\n * specified `defaultValue` if the source Observable emits no items, or the\n * values emitted by the source Observable.\n */\nexport function defaultIfEmpty<T, R>(defaultValue: R): OperatorFunction<T, T | R> {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => {\n if (!hasValue) {\n subscriber.next(defaultValue!);\n }\n subscriber.complete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * \n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n *\n * Take the first 5 seconds of an infinite 1-second interval Observable\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable, or all of the values from\n * the source if the source emits fewer than `count` values.\n */\nexport function take<T>(count: number): MonoTypeOperatorFunction<T> {\n return count <= 0\n ? // If we are taking no values, that's empty.\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // Increment the number of values we have seen,\n // then check it against the allowed count to see\n // if we are still letting values through.\n if (++seen <= count) {\n subscriber.next(value);\n // If we have met or passed our allowed count,\n // we need to complete. We have to do <= here,\n // because re-entrant code will increment `seen` twice.\n if (count <= seen) {\n subscriber.complete();\n }\n }\n })\n );\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * \n *\n * The `ignoreElements` operator suppresses all items emitted by the source Observable,\n * but allows its termination notification (either `error` or `complete`) to pass through unchanged.\n *\n * If you do not care about the items being emitted by an Observable, but you do want to be notified\n * when it completes or when it terminates with an error, you can apply the `ignoreElements` operator\n * to the Observable, which will ensure that it will never call its observers\u2019 `next` handlers.\n *\n * ## Example\n *\n * Ignore all `next` emissions from the source\n *\n * ```ts\n * import { of, ignoreElements } from 'rxjs';\n *\n * of('you', 'talking', 'to', 'me')\n * .pipe(ignoreElements())\n * .subscribe({\n * next: word => console.log(word),\n * error: err => console.log('error:', err),\n * complete: () => console.log('the end'),\n * });\n *\n * // result:\n * // 'the end'\n * ```\n *\n * @return A function that returns an empty Observable that only calls\n * `complete` or `error`, based on which one is called by the source\n * Observable.\n */\nexport function ignoreElements(): OperatorFunction<unknown, never> {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { map } from './map';\n\n/** @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`. */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R>;\n/**\n * @deprecated Do not specify explicit type parameters. Signatures with type parameters\n * that cannot be inferred will be removed in v8. `mapTo` itself will be removed in v9,\n * use {@link map} instead: `map(() => value)`.\n * */\nexport function mapTo<T, R>(value: R): OperatorFunction<T, R>;\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * \n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n *\n * Map every click to the string `'Hi'`\n *\n * ```ts\n * import { fromEvent, mapTo } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n *\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param value The value to map each source value to.\n * @return A function that returns an Observable that emits the given `value`\n * every time the source Observable emits.\n * @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`.\n */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R> {\n return map(() => value);\n}\n", "import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\n\n/** @deprecated The `subscriptionDelay` parameter will be removed in v8. */\nexport function delayWhen<T>(\n delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n subscriptionDelay: Observable<any>\n): MonoTypeOperatorFunction<T>;\nexport function delayWhen<T>(delayDurationSelector: (value: T, index: number) => ObservableInput<any>): MonoTypeOperatorFunction<T>;\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * <span class=\"informal\">It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.</span>\n *\n * \n *\n * `delayWhen` operator shifts each emitted value from the source Observable by\n * a time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the value emitted from\n * the source Observable as the first argument to the `delayDurationSelector`.\n * The `delayDurationSelector` function should return an {@link ObservableInput},\n * that is internally converted to an Observable that is called the \"duration\"\n * Observable.\n *\n * The source value is emitted on the output Observable only when the \"duration\"\n * Observable emits ({@link guide/glossary-and-semantics#next next}s) any value.\n * Upon that, the \"duration\" Observable gets unsubscribed.\n *\n * Before RxJS V7, the {@link guide/glossary-and-semantics#complete completion}\n * of the \"duration\" Observable would have been triggering the emission of the\n * source value to the output Observable, but with RxJS V7, this is not the case\n * anymore.\n *\n * Only next notifications (from the \"duration\" Observable) trigger values from\n * the source Observable to be passed to the output Observable. If the \"duration\"\n * Observable only emits the complete notification (without next), the value\n * emitted by the source Observable will never get to the output Observable - it\n * will be swallowed. If the \"duration\" Observable errors, the error will be\n * propagated to the output Observable.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n *\n * Delay each click by a random amount of time, between 0 and 5 seconds\n *\n * ```ts\n * import { fromEvent, delayWhen, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n * delayWhen(() => interval(Math.random() * 5000))\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param delayDurationSelector A function that returns an `ObservableInput` for\n * each `value` emitted by the source Observable, which is then used to delay the\n * emission of that `value` on the output Observable until the `ObservableInput`\n * returned from this function emits a next value. When called, beside `value`,\n * this function receives a zero-based `index` of the emission order.\n * @param subscriptionDelay An Observable that triggers the subscription to the\n * source Observable once it emits any value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by an amount of time specified by the Observable\n * returned by `delayDurationSelector`.\n */\nexport function delayWhen<T>(\n delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n subscriptionDelay?: Observable<any>\n): MonoTypeOperatorFunction<T> {\n if (subscriptionDelay) {\n // DEPRECATED PATH\n return (source: Observable<T>) =>\n concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * \n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n *\n * Delay each click by one second\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delayWhen}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param {number|Date} due The delay duration in milliseconds (a `number`) or\n * a `Date` until which the emission of the source items is delayed.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the time-shift for each item.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified timeout or Date.\n */\nexport function delay<T>(due: number | Date, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function distinctUntilChanged<T>(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction<T>;\nexport function distinctUntilChanged<T, K>(\n comparator: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * When provided without parameters or with the first parameter (`{@link distinctUntilChanged#comparator comparator}`),\n * it behaves like this:\n *\n * 1. It will always emit the first value from the source.\n * 2. For all subsequent values pushed by the source, they will be compared to the previously emitted values\n * using the provided `comparator` or an `===` equality check.\n * 3. If the value pushed by the source is determined to be unequal by this check, that value is emitted and\n * becomes the new \"previously emitted value\" internally.\n *\n * When the second parameter (`{@link distinctUntilChanged#keySelector keySelector}`) is provided, the behavior\n * changes:\n *\n * 1. It will always emit the first value from the source.\n * 2. The `keySelector` will be run against all values, including the first value.\n * 3. For all values after the first, the selected key will be compared against the key selected from\n * the previously emitted value using the `comparator`.\n * 4. If the keys are determined to be unequal by this check, the value (not the key), is emitted\n * and the selected key from that value is saved for future comparisons against other keys.\n *\n * ## Examples\n *\n * A very basic example with no `{@link distinctUntilChanged#comparator comparator}`. Note that `1` is emitted more than once,\n * because it's distinct in comparison to the _previously emitted_ value,\n * not in comparison to _all other emitted values_.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * of(1, 1, 1, 2, 2, 2, 1, 1, 3, 3)\n * .pipe(distinctUntilChanged())\n * .subscribe(console.log);\n * // Logs: 1, 2, 1, 3\n * ```\n *\n * With a `{@link distinctUntilChanged#comparator comparator}`, you can do custom comparisons. Let's say\n * you only want to emit a value when all of its components have\n * changed:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const totallyDifferentBuilds$ = of(\n * { engineVersion: '1.1.0', transmissionVersion: '1.2.0' },\n * { engineVersion: '1.1.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.4.0' },\n * { engineVersion: '1.3.0', transmissionVersion: '1.5.0' },\n * { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ).pipe(\n * distinctUntilChanged((prev, curr) => {\n * return (\n * prev.engineVersion === curr.engineVersion ||\n * prev.transmissionVersion === curr.transmissionVersion\n * );\n * })\n * );\n *\n * totallyDifferentBuilds$.subscribe(console.log);\n *\n * // Logs:\n * // { engineVersion: '1.1.0', transmissionVersion: '1.2.0' }\n * // { engineVersion: '1.3.0', transmissionVersion: '1.4.0' }\n * // { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ```\n *\n * You can also provide a custom `{@link distinctUntilChanged#comparator comparator}` to check that emitted\n * changes are only in one direction. Let's say you only want to get\n * the next record temperature:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const temps$ = of(30, 31, 20, 34, 33, 29, 35, 20);\n *\n * const recordHighs$ = temps$.pipe(\n * distinctUntilChanged((prevHigh, temp) => {\n * // If the current temp is less than\n * // or the same as the previous record,\n * // the record hasn't changed.\n * return temp <= prevHigh;\n * })\n * );\n *\n * recordHighs$.subscribe(console.log);\n * // Logs: 30, 31, 34, 35\n * ```\n *\n * Selecting update events only when the `updatedBy` field shows\n * the account changed hands.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * // A stream of updates to a given account\n * const accountUpdates$ = of(\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'blesh', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'ncjamieson', data: [] },\n * { updatedBy: 'blesh', data: [] }\n * );\n *\n * // We only want the events where it changed hands\n * const changedHands$ = accountUpdates$.pipe(\n * distinctUntilChanged(undefined, update => update.updatedBy)\n * );\n *\n * changedHands$.subscribe(console.log);\n * // Logs:\n * // { updatedBy: 'blesh', data: Array[0] }\n * // { updatedBy: 'ncjamieson', data: Array[0] }\n * // { updatedBy: 'blesh', data: Array[0] }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param comparator A function used to compare the previous and current keys for\n * equality. Defaults to a `===` check.\n * @param keySelector Used to select a key value to be passed to the `comparator`.\n *\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged<T, K>(\n comparator?: (previous: K, current: K) => boolean,\n keySelector: (value: T) => K = identity as (value: T) => K\n): MonoTypeOperatorFunction<T> {\n // We've been allowing `null` do be passed as the `compare`, so we can't do\n // a default value for the parameter, because that will only work\n // for `undefined`.\n comparator = comparator ?? defaultCompare;\n\n return operate((source, subscriber) => {\n // The previous key, used to compare against keys selected\n // from new arrivals to determine \"distinctiveness\".\n let previousKey: K;\n // Whether or not this is the first value we've gotten.\n let first = true;\n\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n // We always call the key selector.\n const currentKey = keySelector(value);\n\n // If it's the first value, we always emit it.\n // Otherwise, we compare this key to the previous key, and\n // if the comparer returns false, we emit.\n if (first || !comparator!(previousKey, currentKey)) {\n // Update our state *before* we emit the value\n // as emission can be the source of re-entrant code\n // in functional libraries like this. We only really\n // need to do this if it's the first value, or if the\n // key we're tracking in previous needs to change.\n first = false;\n previousKey = currentKey;\n\n // Emit the value!\n subscriber.next(value);\n }\n })\n );\n });\n}\n\nfunction defaultCompare(a: any, b: any) {\n return a === b;\n}\n", "import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilKeyChanged<T>(key: keyof T): MonoTypeOperatorFunction<T>;\nexport function distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item,\n * using a property accessed by using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n *\n * An example comparing the name of persons\n *\n * ```ts\n * import { of, distinctUntilKeyChanged } from 'rxjs';\n *\n * of(\n * { age: 4, name: 'Foo' },\n * { age: 7, name: 'Bar' },\n * { age: 5, name: 'Foo' },\n * { age: 6, name: 'Foo' }\n * ).pipe(\n * distinctUntilKeyChanged('name')\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n *\n * ```ts\n * import { of, distinctUntilKeyChanged } from 'rxjs';\n *\n * of(\n * { age: 4, name: 'Foo1' },\n * { age: 7, name: 'Bar' },\n * { age: 5, name: 'Foo2' },\n * { age: 6, name: 'Foo3' }\n * ).pipe(\n * distinctUntilKeyChanged('name', (x, y) => x.substring(0, 3) === y.substring(0, 3))\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param {string} key String key for object property lookup on each item.\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values based on the key specified.\n */\nexport function distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare?: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T> {\n return distinctUntilChanged((x: T, y: T) => compare ? compare(x[key], y[key]) : x[key] === y[key]);\n}\n", "import { EmptyError } from '../util/EmptyError';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * \n *\n * ## Example\n *\n * Throw an error if the document wasn't clicked within 1 second\n *\n * ```ts\n * import { fromEvent, takeUntil, timer, throwIfEmpty } from 'rxjs';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n * takeUntil(timer(1000)),\n * throwIfEmpty(() => new Error('The document was not clicked within 1 second'))\n * )\n * .subscribe({\n * next() {\n * console.log('The document was clicked');\n * },\n * error(err) {\n * console.error(err.message);\n * }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n * @return A function that returns an Observable that throws an error if the\n * source Observable completed without emitting.\n */\nexport function throwIfEmpty<T>(errorFactory: () => any = defaultErrorFactory): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n hasValue = true;\n subscriber.next(value);\n },\n () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))\n )\n );\n });\n}\n\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n", "/** prettier */\nimport { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ValueFromArray } from '../types';\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith<T>(scheduler: SchedulerLike): MonoTypeOperatorFunction<T>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith<T, A extends unknown[] = T[]>(\n ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction<T, T | ValueFromArray<A>>;\n\nexport function endWith<T, A extends unknown[] = T[]>(...values: A): OperatorFunction<T, T | ValueFromArray<A>>;\n\n/**\n * Returns an observable that will emit all values from the source, then synchronously emit\n * the provided value(s) immediately after the source completes.\n *\n * NOTE: Passing a last argument of a Scheduler is _deprecated_, and may result in incorrect\n * types in TypeScript.\n *\n * This is useful for knowing when an observable ends. Particularly when paired with an\n * operator like {@link takeUntil}\n *\n * \n *\n * ## Example\n *\n * Emit values to know when an interval starts and stops. The interval will\n * stop when a user clicks anywhere on the document.\n *\n * ```ts\n * import { interval, map, fromEvent, startWith, takeUntil, endWith } from 'rxjs';\n *\n * const ticker$ = interval(5000).pipe(\n * map(() => 'tick')\n * );\n *\n * const documentClicks$ = fromEvent(document, 'click');\n *\n * ticker$.pipe(\n * startWith('interval started'),\n * takeUntil(documentClicks$),\n * endWith('interval ended by click')\n * )\n * .subscribe(x => console.log(x));\n *\n * // Result (assuming a user clicks after 15 seconds)\n * // 'interval started'\n * // 'tick'\n * // 'tick'\n * // 'tick'\n * // 'interval ended by click'\n * ```\n *\n * @see {@link startWith}\n * @see {@link concat}\n * @see {@link takeUntil}\n *\n * @param values Items you want the modified Observable to emit last.\n * @return A function that returns an Observable that emits all values from the\n * source, then synchronously emits the provided value(s) immediately after the\n * source completes.\n */\nexport function endWith<T>(...values: Array<T | SchedulerLike>): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => concat(source, of(...values)) as Observable<T>;\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * The specified function will also be called when the subscriber explicitly unsubscribes.\n *\n * ## Examples\n *\n * Execute callback function when the observable completes\n *\n * ```ts\n * import { interval, take, finalize } from 'rxjs';\n *\n * // emit value in sequence every 1 second\n * const source = interval(1000);\n * const example = source.pipe(\n * take(5), //take only the first 5 values\n * finalize(() => console.log('Sequence complete')) // Execute when the observable completes\n * );\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 'Sequence complete'\n * ```\n *\n * Execute callback function when the subscriber explicitly unsubscribes\n *\n * ```ts\n * import { interval, finalize, tap, noop, timer } from 'rxjs';\n *\n * const source = interval(100).pipe(\n * finalize(() => console.log('[finalize] Called')),\n * tap({\n * next: () => console.log('[next] Called'),\n * error: () => console.log('[error] Not called'),\n * complete: () => console.log('[tap complete] Not called')\n * })\n * );\n *\n * const sub = source.subscribe({\n * next: x => console.log(x),\n * error: noop,\n * complete: () => console.log('[complete] Not called')\n * });\n *\n * timer(150).subscribe(() => sub.unsubscribe());\n *\n * // results:\n * // '[next] Called'\n * // 0\n * // '[finalize] Called'\n * ```\n *\n * @param {function} callback Function to be called when source terminates.\n * @return A function that returns an Observable that mirrors the source, but\n * will call the specified function on termination.\n */\nexport function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`.\n // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8.\n try {\n source.subscribe(subscriber);\n } finally {\n subscriber.add(callback);\n }\n });\n}\n", "import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function first<T, D = T>(predicate?: null, defaultValue?: D): OperatorFunction<T, T | D>;\nexport function first<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function first<T, D>(predicate: BooleanConstructor, defaultValue: D): OperatorFunction<T, TruthyTypesOf<T> | D>;\nexport function first<T, S extends T>(\n predicate: (value: T, index: number, source: Observable<T>) => value is S,\n defaultValue?: S\n): OperatorFunction<T, S>;\nexport function first<T, S extends T, D>(\n predicate: (value: T, index: number, source: Observable<T>) => value is S,\n defaultValue: D\n): OperatorFunction<T, S | D>;\nexport function first<T, D = T>(\n predicate: (value: T, index: number, source: Observable<T>) => boolean,\n defaultValue?: D\n): OperatorFunction<T, T | D>;\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * <span class=\"informal\">Emits only the first value. Or emits only the first\n * value that passes some test.</span>\n *\n * \n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. Throws an error if\n * `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n *\n * Emit only the first click that happens on the DOM\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n *\n * @throws {EmptyError} Delivers an EmptyError to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * This is how `first()` is different from {@link take}(1) which completes instead.\n *\n * @param {function(value: T, index: number, source: Observable<T>): boolean} [predicate]\n * An optional function called with each item to test for condition matching.\n * @param {D} [defaultValue] The default value emitted in case no valid value\n * was found on the source.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function first<T, D>(\n predicate?: ((value: T, index: number, source: Observable<T>) => boolean) | null,\n defaultValue?: D\n): OperatorFunction<T, T | D> {\n const hasDefaultValue = arguments.length >= 2;\n return (source: Observable<T>) =>\n source.pipe(\n predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n take(1),\n hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n );\n}\n", "import { ObservableInput, ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\n\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n ...sourcesAndConcurrency: [...ObservableInputTuple<A>, number]\n): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number, SchedulerLike]\n): OperatorFunction<T, T | A[number]>;\n\nexport function merge<T>(...args: unknown[]): OperatorFunction<T, unknown> {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n\n return operate((source, subscriber) => {\n mergeAll(concurrent)(from([source, ...(args as ObservableInput<T>[])], scheduler)).subscribe(subscriber);\n });\n}\n", "import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { merge } from './merge';\n\n/**\n * Merge the values from all observables to a single observable result.\n *\n * Creates an observable, that when subscribed to, subscribes to the source\n * observable, and all other sources provided as arguments. All values from\n * every source are emitted from the resulting subscription.\n *\n * When all sources complete, the resulting observable will complete.\n *\n * When any source errors, the resulting observable will error.\n *\n * ## Example\n *\n * Joining all outputs from multiple user input event streams\n *\n * ```ts\n * import { fromEvent, map, mergeWith } from 'rxjs';\n *\n * const clicks$ = fromEvent(document, 'click').pipe(map(() => 'click'));\n * const mousemoves$ = fromEvent(document, 'mousemove').pipe(map(() => 'mousemove'));\n * const dblclicks$ = fromEvent(document, 'dblclick').pipe(map(() => 'dblclick'));\n *\n * mousemoves$\n * .pipe(mergeWith(clicks$, dblclicks$))\n * .subscribe(x => console.log(x));\n *\n * // result (assuming user interactions)\n * // 'mousemove'\n * // 'mousemove'\n * // 'mousemove'\n * // 'click'\n * // 'click'\n * // 'dblclick'\n * ```\n *\n * @see {@link merge}\n *\n * @param otherSources the sources to combine the current source with.\n * @return A function that returns an Observable that merges the values from\n * all given Observables.\n */\nexport function mergeWith<T, A extends readonly unknown[]>(\n ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]> {\n return merge(...otherSources);\n}\n", "import { Subscription } from '../Subscription';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { timer } from '../observable/timer';\n\nexport interface RepeatConfig {\n /**\n * The number of times to repeat the source. Defaults to `Infinity`.\n */\n count?: number;\n\n /**\n * If a `number`, will delay the repeat of the source by that number of milliseconds.\n * If a function, it will provide the number of times the source has been subscribed to,\n * and the return value should be a valid observable input that will notify when the source\n * should be repeated. If the notifier observable is empty, the result will complete.\n */\n delay?: number | ((count: number) => ObservableInput<any>);\n}\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes.\n *\n * <span class=\"informal\">Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.</span>\n *\n * \n *\n * Repeat will output values from a source until the source completes, then it will resubscribe to the\n * source a specified number of times, with a specified delay. Repeat can be particularly useful in\n * combination with closing operators like {@link take}, {@link takeUntil}, {@link first}, or {@link takeWhile},\n * as it can be used to restart a source again from scratch.\n *\n * Repeat is very similar to {@link retry}, where {@link retry} will resubscribe to the source in the error case, but\n * `repeat` will resubscribe if the source completes.\n *\n * Note that `repeat` will _not_ catch errors. Use {@link retry} for that.\n *\n * - `repeat(0)` returns an empty observable\n * - `repeat()` will repeat forever\n * - `repeat({ delay: 200 })` will repeat forever, with a delay of 200ms between repetitions.\n * - `repeat({ count: 2, delay: 400 })` will repeat twice, with a delay of 400ms between repetitions.\n * - `repeat({ delay: (count) => timer(count * 1000) })` will repeat forever, but will have a delay that grows by one second for each repetition.\n *\n * ## Example\n *\n * Repeat a message stream\n *\n * ```ts\n * import { of, repeat } from 'rxjs';\n *\n * const source = of('Repeat message');\n * const result = source.pipe(repeat(3));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results\n * // 'Repeat message'\n * // 'Repeat message'\n * // 'Repeat message'\n * ```\n *\n * Repeat 3 values, 2 times\n *\n * ```ts\n * import { interval, take, repeat } from 'rxjs';\n *\n * const source = interval(1000);\n * const result = source.pipe(take(3), repeat(2));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * Defining two complex repeats with delays on the same source.\n * Note that the second repeat cannot be called until the first\n * repeat as exhausted it's count.\n *\n * ```ts\n * import { defer, of, repeat } from 'rxjs';\n *\n * const source = defer(() => {\n * return of(`Hello, it is ${new Date()}`)\n * });\n *\n * source.pipe(\n * // Repeat 3 times with a delay of 1 second between repetitions\n * repeat({\n * count: 3,\n * delay: 1000,\n * }),\n *\n * // *Then* repeat forever, but with an exponential step-back\n * // maxing out at 1 minute.\n * repeat({\n * delay: (count) => timer(Math.min(60000, 2 ^ count * 1000))\n * })\n * )\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param count The number of times the source Observable items are repeated, a count of 0 will yield\n * an empty Observable.\n */\nexport function repeat<T>(countOrConfig?: number | RepeatConfig): MonoTypeOperatorFunction<T> {\n let count = Infinity;\n let delay: RepeatConfig['delay'];\n\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n ({ count = Infinity, delay } = countOrConfig);\n } else {\n count = countOrConfig;\n }\n }\n\n return count <= 0\n ? () => EMPTY\n : operate((source, subscriber) => {\n let soFar = 0;\n let sourceSub: Subscription | null;\n\n const resubscribe = () => {\n sourceSub?.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(soFar));\n const notifierSubscriber = createOperatorSubscriber(subscriber, () => {\n notifierSubscriber.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber);\n } else {\n subscribeToSource();\n }\n };\n\n const subscribeToSource = () => {\n let syncUnsub = false;\n sourceSub = source.subscribe(\n createOperatorSubscriber(subscriber, undefined, () => {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n } else {\n syncUnsub = true;\n }\n } else {\n subscriber.complete();\n }\n })\n );\n\n if (syncUnsub) {\n resubscribe();\n }\n };\n\n subscribeToSource();\n });\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * <span class=\"informal\">It's like {@link sampleTime}, but samples whenever\n * the `notifier` `ObservableInput` emits something.</span>\n *\n * \n *\n * Whenever the `notifier` `ObservableInput` emits a value, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n *\n * On every click, sample the most recent `seconds` timer\n *\n * ```ts\n * import { fromEvent, interval, sample } from 'rxjs';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param notifier The `ObservableInput` to use for sampling the\n * source Observable.\n * @return A function that returns an Observable that emits the results of\n * sampling the values emitted by the source Observable whenever the notifier\n * Observable emits value or completes.\n */\nexport function sample<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue: T | null = null;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n })\n );\n innerFrom(notifier).subscribe(\n createOperatorSubscriber(\n subscriber,\n () => {\n if (hasValue) {\n hasValue = false;\n const value = lastValue!;\n lastValue = null;\n subscriber.next(value);\n }\n },\n noop\n )\n );\n });\n}\n", "import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\n\nexport function scan<V, A = V>(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction<V, V | A>;\nexport function scan<V, A>(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction<V, A>;\nexport function scan<V, A, S>(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction<V, A>;\n\n// TODO: link to a \"redux pattern\" section in the guide (location TBD)\n\n/**\n * Useful for encapsulating and managing state. Applies an accumulator (or \"reducer function\")\n * to each value from the source after an initial state is established -- either via\n * a `seed` value (second argument), or from the first value from the source.\n *\n * <span class=\"informal\">It's like {@link reduce}, but emits the current\n * accumulation state after each update</span>\n *\n * \n *\n * This operator maintains an internal state and emits it after processing each value as follows:\n *\n * 1. First value arrives\n * - If a `seed` value was supplied (as the second argument to `scan`), let `state = seed` and `value = firstValue`.\n * - If NO `seed` value was supplied (no second argument), let `state = firstValue` and go to 3.\n * 2. Let `state = accumulator(state, value)`.\n * - If an error is thrown by `accumulator`, notify the consumer of an error. The process ends.\n * 3. Emit `state`.\n * 4. Next value arrives, let `value = nextValue`, go to 2.\n *\n * ## Examples\n *\n * An average of previous numbers. This example shows how\n * not providing a `seed` can prime the stream with the\n * first value from the source.\n *\n * ```ts\n * import { of, scan, map } from 'rxjs';\n *\n * const numbers$ = of(1, 2, 3);\n *\n * numbers$\n * .pipe(\n * // Get the sum of the numbers coming in.\n * scan((total, n) => total + n),\n * // Get the average by dividing the sum by the total number\n * // received so far (which is 1 more than the zero-based index).\n * map((sum, index) => sum / (index + 1))\n * )\n * .subscribe(console.log);\n * ```\n *\n * The Fibonacci sequence. This example shows how you can use\n * a seed to prime accumulation process. Also... you know... Fibonacci.\n * So important to like, computers and stuff that its whiteboarded\n * in job interviews. Now you can show them the Rx version! (Please don't, haha)\n *\n * ```ts\n * import { interval, scan, map, startWith } from 'rxjs';\n *\n * const firstTwoFibs = [0, 1];\n * // An endless stream of Fibonacci numbers.\n * const fibonacci$ = interval(1000).pipe(\n * // Scan to get the fibonacci numbers (after 0, 1)\n * scan(([a, b]) => [b, a + b], firstTwoFibs),\n * // Get the second number in the tuple, it's the one you calculated\n * map(([, n]) => n),\n * // Start with our first two digits :)\n * startWith(...firstTwoFibs)\n * );\n *\n * fibonacci$.subscribe(console.log);\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n * @see {@link switchScan}\n *\n * @param accumulator A \"reducer function\". This will be called for each value after an initial state is\n * acquired.\n * @param seed The initial state. If this is not provided, the first value from the source will\n * be used as the initial state, and emitted without going through the accumulator. All subsequent values\n * will be processed by the accumulator function. If this is provided, all values will go through\n * the accumulator function.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function scan<V, A, S>(accumulator: (acc: V | A | S, value: V, index: number) => A, seed?: S): OperatorFunction<V, V | A> {\n // providing a seed of `undefined` *should* be valid and trigger\n // hasSeed! so don't use `seed !== undefined` checks!\n // For this reason, we have to check it here at the original call site\n // otherwise inside Operator/Subscriber we won't know if `undefined`\n // means they didn't provide anything or if they literally provided `undefined`\n return operate(scanInternals(accumulator, seed as S, arguments.length >= 2, true));\n}\n", "import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubjectLike, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\n\nexport interface ShareConfig<T> {\n /**\n * The factory used to create the subject that will connect the source observable to\n * multicast consumers.\n */\n connector?: () => SubjectLike<T>;\n /**\n * If `true`, the resulting observable will reset internal state on error from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"retried\" in the event of an error.\n * If `false`, when an error comes from the source it will push the error into the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent retries\n * or resubscriptions will resubscribe to that same subject. In all cases, RxJS subjects will emit the same error again, however\n * {@link ReplaySubject} will also push its buffered values before pushing the error.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnError?: boolean | ((error: any) => ObservableInput<any>);\n /**\n * If `true`, the resulting observable will reset internal state on completion from source and return to a \"cold\" state. This\n * allows the resulting observable to be \"repeated\" after it is done.\n * If `false`, when the source completes, it will push the completion through the connecting subject, and the subject\n * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent repeats\n * or resubscriptions will resubscribe to that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnComplete?: boolean | (() => ObservableInput<any>);\n /**\n * If `true`, when the number of subscribers to the resulting observable reaches zero due to those subscribers unsubscribing, the\n * internal state will be reset and the resulting observable will return to a \"cold\" state. This means that the next\n * time the resulting observable is subscribed to, a new subject will be created and the source will be subscribed to\n * again.\n * If `false`, when the number of subscribers to the resulting observable reaches zero due to unsubscription, the subject\n * will remain connected to the source, and new subscriptions to the result will be connected through that same subject.\n * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n */\n resetOnRefCountZero?: boolean | (() => ObservableInput<any>);\n}\n\nexport function share<T>(): MonoTypeOperatorFunction<T>;\n\nexport function share<T>(options: ShareConfig<T>): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * The subscription to the underlying source Observable can be reset (unsubscribe and resubscribe for new subscribers),\n * if the subscriber count to the shared observable drops to 0, or if the source Observable errors or completes. It is\n * possible to use notifier factories for the resets to allow for behaviors like conditional or delayed resets. Please\n * note that resetting on error or complete of the source Observable does not behave like a transparent retry or restart\n * of the source because the error or complete will be forwarded to all subscribers and their subscription will be\n * closed. Only new subscribers after a reset on error or complete happened will cause a fresh subscription to the\n * source. To achieve transparent retries or restarts pipe the source through appropriate operators before sharing.\n *\n * \n *\n * ## Example\n *\n * Generate new multicast Observable from the `source` Observable value\n *\n * ```ts\n * import { interval, tap, map, take, share } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * tap(x => console.log('Processing: ', x)),\n * map(x => x * x),\n * take(6),\n * share()\n * );\n *\n * source.subscribe(x => console.log('subscription 1: ', x));\n * source.subscribe(x => console.log('subscription 2: ', x));\n *\n * // Logs:\n * // Processing: 0\n * // subscription 1: 0\n * // subscription 2: 0\n * // Processing: 1\n * // subscription 1: 1\n * // subscription 2: 1\n * // Processing: 2\n * // subscription 1: 4\n * // subscription 2: 4\n * // Processing: 3\n * // subscription 1: 9\n * // subscription 2: 9\n * // Processing: 4\n * // subscription 1: 16\n * // subscription 2: 16\n * // Processing: 5\n * // subscription 1: 25\n * // subscription 2: 25\n * ```\n *\n * ## Example with notifier factory: Delayed reset\n *\n * ```ts\n * import { interval, take, share, timer } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n * take(3),\n * share({\n * resetOnRefCountZero: () => timer(1000)\n * })\n * );\n *\n * const subscriptionOne = source.subscribe(x => console.log('subscription 1: ', x));\n * setTimeout(() => subscriptionOne.unsubscribe(), 1300);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 2: ', x)), 1700);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 3: ', x)), 5000);\n *\n * // Logs:\n * // subscription 1: 0\n * // (subscription 1 unsubscribes here)\n * // (subscription 2 subscribes here ~400ms later, source was not reset)\n * // subscription 2: 1\n * // subscription 2: 2\n * // (subscription 2 unsubscribes here)\n * // (subscription 3 subscribes here ~2000ms later, source did reset before)\n * // subscription 3: 0\n * // subscription 3: 1\n * // subscription 3: 2\n * ```\n *\n * @see {@link shareReplay}\n *\n * @return A function that returns an Observable that mirrors the source.\n */\nexport function share<T>(options: ShareConfig<T> = {}): MonoTypeOperatorFunction<T> {\n const { connector = () => new Subject<T>(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n // It's necessary to use a wrapper here, as the _operator_ must be\n // referentially transparent. Otherwise, it cannot be used in calls to the\n // static `pipe` function - to create a partial pipeline.\n //\n // The _operator function_ - the function returned by the _operator_ - will\n // not be referentially transparent - as it shares its source - but the\n // _operator function_ is called when the complete pipeline is composed via a\n // call to a source observable's `pipe` method - not when the static `pipe`\n // function is called.\n return (wrapperSource) => {\n let connection: SafeSubscriber<T> | undefined;\n let resetConnection: Subscription | undefined;\n let subject: SubjectLike<T> | undefined;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n\n const cancelReset = () => {\n resetConnection?.unsubscribe();\n resetConnection = undefined;\n };\n // Used to reset the internal state to a \"cold\"\n // state, as though it had never been subscribed to.\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n // We need to capture the connection before\n // we reset (if we need to reset).\n const conn = connection;\n reset();\n conn?.unsubscribe();\n };\n\n return operate<T, T>((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n\n // Create the subject if we don't have one yet. Grab a local reference to\n // it as well, which avoids non-null assertions when using it and, if we\n // connect to it now, then error/complete need a reference after it was\n // reset.\n const dest = (subject = subject ?? connector());\n\n // Add the finalization directly to the subscriber - instead of returning it -\n // so that the handling of the subscriber's unsubscription will be wired\n // up _before_ the subscription to the source occurs. This is done so that\n // the assignment to the source connection's `closed` property will be seen\n // by synchronous firehose sources.\n subscriber.add(() => {\n refCount--;\n\n // If we're resetting on refCount === 0, and it's 0, we only want to do\n // that on \"unsubscribe\", really. Resetting on error or completion is a different\n // configuration.\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n\n // The following line adds the subscription to the subscriber passed.\n // Basically, `subscriber === dest.subscribe(subscriber)` is `true`.\n dest.subscribe(subscriber);\n\n if (\n !connection &&\n // Check this shareReplay is still activate - it can be reset to 0\n // and be \"unsubscribed\" _before_ it actually subscribes.\n // If we were to subscribe then, it'd leak and get stuck.\n refCount > 0\n ) {\n // We need to create a subscriber here - rather than pass an observer and\n // assign the returned subscription to connection - because it's possible\n // for reentrant subscriptions to the shared observable to occur and in\n // those situations we want connection to be already-assigned so that we\n // don't create another connection to the source.\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\n\nfunction handleReset<T extends unknown[] = never[]>(\n reset: () => void,\n on: boolean | ((...args: T) => ObservableInput<any>),\n ...args: T\n): Subscription | undefined {\n if (on === true) {\n reset();\n return;\n }\n\n if (on === false) {\n return;\n }\n\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n", "import { ReplaySubject } from '../ReplaySubject';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { share } from './share';\n\nexport interface ShareReplayConfig {\n bufferSize?: number;\n windowTime?: number;\n refCount: boolean;\n scheduler?: SchedulerLike;\n}\n\nexport function shareReplay<T>(config: ShareReplayConfig): MonoTypeOperatorFunction<T>;\nexport function shareReplay<T>(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplay`ed observable forever,\n * but an errored source can be retried.\n *\n * ## Why use `shareReplay`?\n *\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ## Reference counting\n *\n * By default `shareReplay` will use `refCount` of false, meaning that it will _not_ unsubscribe the\n * source when the reference counter drops to zero, i.e. the inner `ReplaySubject` will _not_ be unsubscribed\n * (and potentially run for ever).\n * This is the default as it is expected that `shareReplay` is often used to keep around expensive to setup\n * observables which we want to keep running instead of having to do the expensive setup again.\n *\n * As of RXJS version 6.4.0 a new overload signature was added to allow for manual control over what\n * happens when the operators internal reference counter drops to zero.\n * If `refCount` is true, the source will be unsubscribed from once the reference count drops to zero, i.e.\n * the inner `ReplaySubject` will be unsubscribed. All new subscribers will receive value emissions from a\n * new `ReplaySubject` which in turn will cause a new subscription to the source observable.\n *\n * ## Examples\n *\n * Example with a third subscriber coming late to the party\n *\n * ```ts\n * import { interval, take, shareReplay } from 'rxjs';\n *\n * const shared$ = interval(2000).pipe(\n * take(6),\n * shareReplay(3)\n * );\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * setTimeout(() => {\n * shared$.subscribe(y => console.log('sub C: ', y));\n * }, 11000);\n *\n * // Logs:\n * // (after ~2000 ms)\n * // sub A: 0\n * // sub B: 0\n * // (after ~4000 ms)\n * // sub A: 1\n * // sub B: 1\n * // (after ~6000 ms)\n * // sub A: 2\n * // sub B: 2\n * // (after ~8000 ms)\n * // sub A: 3\n * // sub B: 3\n * // (after ~10000 ms)\n * // sub A: 4\n * // sub B: 4\n * // (after ~11000 ms, sub C gets the last 3 values)\n * // sub C: 2\n * // sub C: 3\n * // sub C: 4\n * // (after ~12000 ms)\n * // sub A: 5\n * // sub B: 5\n * // sub C: 5\n * ```\n *\n * Example for `refCount` usage\n *\n * ```ts\n * import { Observable, tap, interval, shareReplay, take } from 'rxjs';\n *\n * const log = <T>(name: string, source: Observable<T>) => source.pipe(\n * tap({\n * subscribe: () => console.log(`${ name }: subscribed`),\n * next: value => console.log(`${ name }: ${ value }`),\n * complete: () => console.log(`${ name }: completed`),\n * finalize: () => console.log(`${ name }: unsubscribed`)\n * })\n * );\n *\n * const obs$ = log('source', interval(1000));\n *\n * const shared$ = log('shared', obs$.pipe(\n * shareReplay({ bufferSize: 1, refCount: true }),\n * take(2)\n * ));\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * // PRINTS:\n * // shared: subscribed <-- reference count = 1\n * // source: subscribed\n * // shared: subscribed <-- reference count = 2\n * // source: 0\n * // shared: 0\n * // sub A: 0\n * // shared: 0\n * // sub B: 0\n * // source: 1\n * // shared: 1\n * // sub A: 1\n * // shared: completed <-- take(2) completes the subscription for sub A\n * // shared: unsubscribed <-- reference count = 1\n * // shared: 1\n * // sub B: 1\n * // shared: completed <-- take(2) completes the subscription for sub B\n * // shared: unsubscribed <-- reference count = 0\n * // source: unsubscribed <-- replaySubject unsubscribes from source observable because the reference count dropped to 0 and refCount is true\n *\n * // In case of refCount being false, the unsubscribe is never called on the source and the source would keep on emitting, even if no subscribers\n * // are listening.\n * // source: 2\n * // source: 3\n * // source: 4\n * // ...\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param configOrBufferSize Maximum element count of the replay buffer or {@link ShareReplayConfig configuration}\n * object.\n * @param windowTime Maximum time length of the replay buffer in milliseconds.\n * @param scheduler Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return A function that returns an Observable sequence that contains the\n * elements of a sequence produced by multicasting the source sequence within a\n * selector function.\n */\nexport function shareReplay<T>(\n configOrBufferSize?: ShareReplayConfig | number,\n windowTime?: number,\n scheduler?: SchedulerLike\n): MonoTypeOperatorFunction<T> {\n let bufferSize: number;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n } else {\n bufferSize = (configOrBufferSize ?? Infinity) as number;\n }\n return share<T>({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n", "import { MonoTypeOperatorFunction } from '../types';\nimport { filter } from './filter';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * \n *\n * Skips the values until the sent notifications are equal or less than provided skip count. It raises\n * an error if skip count is equal or more than the actual number of emits and source raises an error.\n *\n * ## Example\n *\n * Skip the values before the emission\n *\n * ```ts\n * import { interval, skip } from 'rxjs';\n *\n * // emit every half second\n * const source = interval(500);\n * // skip the first 10 emitted values\n * const result = source.pipe(skip(10));\n *\n * result.subscribe(value => console.log(value));\n * // output: 10...11...12...13...\n * ```\n *\n * @see {@link last}\n * @see {@link skipWhile}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param {Number} count - The number of times, items emitted by source Observable should be skipped.\n * @return A function that returns an Observable that skips the first `count`\n * values emitted by the source Observable.\n */\nexport function skip<T>(count: number): MonoTypeOperatorFunction<T> {\n return filter((_, index) => count <= index);\n}\n", "import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values until the passed in observable\n * emits the first value. This can be particularly useful in combination with user interactions, responses of HTTP\n * requests or waiting for specific times to pass by.\n *\n * \n *\n * Internally, the `skipUntil` operator subscribes to the passed in `notifier` `ObservableInput` (which gets converted\n * to an Observable) in order to recognize the emission of its first value. When `notifier` emits next, the operator\n * unsubscribes from it and starts emitting the values of the *source* observable until it completes or errors. It\n * will never let the *source* observable emit any values if the `notifier` completes or throws an error without\n * emitting a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values of the interval observable are skipped until the user clicks anywhere\n * within the page\n *\n * ```ts\n * import { interval, fromEvent, skipUntil } from 'rxjs';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n * skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @see {@link last}\n * @see {@link skip}\n * @see {@link skipWhile}\n * @see {@link skipLast}\n *\n * @param notifier An `ObservableInput` that has to emit an item before the source Observable elements begin to\n * be mirrored by the resulting Observable.\n * @return A function that returns an Observable that skips items from the\n * source Observable until the `notifier` Observable emits an item, then emits the\n * remaining items.\n */\nexport function skipUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let taking = false;\n\n const skipSubscriber = createOperatorSubscriber(\n subscriber,\n () => {\n skipSubscriber?.unsubscribe();\n taking = true;\n },\n noop\n );\n\n innerFrom(notifier).subscribe(skipSubscriber);\n\n source.subscribe(createOperatorSubscriber(subscriber, (value) => taking && subscriber.next(value)));\n });\n}\n", "import { concat } from '../observable/concat';\nimport { OperatorFunction, SchedulerLike, ValueFromArray } from '../types';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function startWith<T>(value: null): OperatorFunction<T, T | null>;\nexport function startWith<T>(value: undefined): OperatorFunction<T, T | undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function startWith<T, A extends readonly unknown[] = T[]>(\n ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction<T, T | ValueFromArray<A>>;\nexport function startWith<T, A extends readonly unknown[] = T[]>(...values: A): OperatorFunction<T, T | ValueFromArray<A>>;\n\n/**\n * Returns an observable that, at the moment of subscription, will synchronously emit all\n * values provided to this operator, then subscribe to the source and mirror all of its emissions\n * to subscribers.\n *\n * This is a useful way to know when subscription has occurred on an existing observable.\n *\n * <span class=\"informal\">First emits its arguments in order, and then any\n * emissions from the source.</span>\n *\n * \n *\n * ## Examples\n *\n * Emit a value when a timer starts.\n *\n * ```ts\n * import { timer, map, startWith } from 'rxjs';\n *\n * timer(1000)\n * .pipe(\n * map(() => 'timer emit'),\n * startWith('timer start')\n * )\n * .subscribe(x => console.log(x));\n *\n * // results:\n * // 'timer start'\n * // 'timer emit'\n * ```\n *\n * @param values Items you want the modified Observable to emit first.\n * @return A function that returns an Observable that synchronously emits\n * provided values before subscribing to the source Observable.\n *\n * @see {@link endWith}\n * @see {@link finalize}\n * @see {@link concat}\n */\nexport function startWith<T, D>(...values: D[]): OperatorFunction<T, T | D> {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n // Here we can't pass `undefined` as a scheduler, because if we did, the\n // code inside of `concat` would be confused by the `undefined`, and treat it\n // like an invalid observable. So we have to split it two different ways.\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n", "import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables.</span>\n *\n * \n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param {function(value: T, index: number): ObservableInput} project A function\n * that, when applied to an item emitted by the source Observable, returns an\n * Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n project: (value: T, index: number) => O,\n resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n return operate((source, subscriber) => {\n let innerSubscriber: Subscriber<ObservedValueOf<O>> | null = null;\n let index = 0;\n // Whether or not the source subscription has completed\n let isComplete = false;\n\n // We only complete the result if the source is complete AND we don't have an active inner subscription.\n // This is called both when the source completes and when the inners complete.\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n // Cancel the previous inner subscription if there was one\n innerSubscriber?.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n // Start the next inner subscription\n innerFrom(project(value, outerIndex)).subscribe(\n (innerSubscriber = createOperatorSubscriber(\n subscriber,\n // When we get a new inner value, next it through. Note that this is\n // handling the deprecate result selector here. This is because with this architecture\n // it ends up being smaller than using the map operator.\n (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n () => {\n // The inner has completed. Null out the inner subscriber to\n // free up memory and to signal that we have no inner subscription\n // currently.\n innerSubscriber = null!;\n checkComplete();\n }\n ))\n );\n },\n () => {\n isComplete = true;\n checkComplete();\n }\n )\n );\n });\n}\n", "import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.</span>\n *\n * \n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param {Observable} notifier The Observable whose first emitted value will\n * cause the output Observable of `takeUntil` to stop emitting values from the\n * source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n", "import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function takeWhile<T>(predicate: BooleanConstructor, inclusive: true): MonoTypeOperatorFunction<T>;\nexport function takeWhile<T>(predicate: BooleanConstructor, inclusive: false): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function takeWhile<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function takeWhile<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function takeWhile<T, S extends T>(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction<T, S>;\nexport function takeWhile<T>(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * <span class=\"informal\">Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.</span>\n *\n * \n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n *\n * Emit click events only while the clientX property is greater than 200\n *\n * ```ts\n * import { fromEvent, takeWhile } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param {function(value: T, index: number): boolean} predicate A function that\n * evaluates a value emitted by the source Observable and returns a boolean.\n * Also takes the (zero-based) index as the second argument.\n * @param {boolean} inclusive When set to `true` the value that caused\n * `predicate` to return `false` will also be emitted.\n * @return A function that returns an Observable that emits values from the\n * source Observable so long as each value satisfies the condition defined by\n * the `predicate`, then completes.\n */\nexport function takeWhile<T>(predicate: (value: T, index: number) => boolean, inclusive = false): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n })\n );\n });\n}\n", "import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\nexport interface TapObserver<T> extends Observer<T> {\n subscribe: () => void;\n unsubscribe: () => void;\n finalize: () => void;\n}\nexport function tap<T>(observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void)): MonoTypeOperatorFunction<T>;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap<T>(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * <span class=\"informal\">Used when you want to affect outside state with a notification without altering the notification</span>\n *\n * \n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n * tap(console.log),\n * map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n * tap(n => {\n * if (n > 3) {\n * throw new TypeError(`Value ${ n } is greater than 3`);\n * }\n * })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n * concatMap(n => interval(1000).pipe(\n * take(Math.round(Math.random() * 10)),\n * map(() => 'X'),\n * tap({ complete: () => console.log(`Done with ${ n }`) })\n * ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link Observable#subscribe}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap<T>(\n observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void) | null,\n error?: ((e: any) => void) | null,\n complete?: (() => void) | null\n): MonoTypeOperatorFunction<T> {\n // We have to check to see not only if next is a function,\n // but if error or complete were passed. This is because someone\n // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n const tapObserver =\n isFunction(observerOrNext) || error || complete\n ? // tslint:disable-next-line: no-object-literal-type-assertion\n ({ next: observerOrNext as Exclude<typeof observerOrNext, Partial<TapObserver<T>>>, error, complete } as Partial<TapObserver<T>>)\n : observerOrNext;\n\n return tapObserver\n ? operate((source, subscriber) => {\n tapObserver.subscribe?.();\n let isUnsub = true;\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n tapObserver.next?.(value);\n subscriber.next(value);\n },\n () => {\n isUnsub = false;\n tapObserver.complete?.();\n subscriber.complete();\n },\n (err) => {\n isUnsub = false;\n tapObserver.error?.(err);\n subscriber.error(err);\n },\n () => {\n if (isUnsub) {\n tapObserver.unsubscribe?.();\n }\n tapObserver.finalize?.();\n }\n )\n );\n })\n : // Tap was called with no valid tap observer or handler\n // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n // so we're going to just mirror the source.\n identity;\n}\n", "import { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\nexport interface ThrottleConfig {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport const defaultThrottleConfig: ThrottleConfig = {\n leading: true,\n trailing: false,\n};\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * \n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, throttle, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(() => interval(1000)));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration for each source value, returned as an Observable or a Promise.\n * @param config a configuration object to define `leading` and `trailing` behavior. Defaults\n * to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttle<T>(\n durationSelector: (value: T) => ObservableInput<any>,\n config: ThrottleConfig = defaultThrottleConfig\n): MonoTypeOperatorFunction<T> {\n return operate((source, subscriber) => {\n const { leading, trailing } = config;\n let hasValue = false;\n let sendValue: T | null = null;\n let throttled: Subscription | null = null;\n let isComplete = false;\n\n const endThrottling = () => {\n throttled?.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n\n const cleanupThrottling = () => {\n throttled = null;\n isComplete && subscriber.complete();\n };\n\n const startThrottle = (value: T) =>\n (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n\n const send = () => {\n if (hasValue) {\n // Ensure we clear out our value and hasValue flag\n // before we emit, otherwise reentrant code can cause\n // issues here.\n hasValue = false;\n const value = sendValue!;\n sendValue = null;\n // Emit the value.\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n\n source.subscribe(\n createOperatorSubscriber(\n subscriber,\n // Regarding the presence of throttled.closed in the following\n // conditions, if a synchronous duration selector is specified - weird,\n // but legal - an already-closed subscription will be assigned to\n // throttled, so the subscription's closed property needs to be checked,\n // too.\n (value) => {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n },\n () => {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }\n )\n );\n });\n}\n", "import { asyncScheduler } from '../scheduler/async';\nimport { defaultThrottleConfig, throttle } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { timer } from '../observable/timer';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * \n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * ### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, throttleTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param scheduler The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling. Defaults to {@link asyncScheduler}.\n * @param config a configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttleTime<T>(\n duration: number,\n scheduler: SchedulerLike = asyncScheduler,\n config = defaultThrottleConfig\n): MonoTypeOperatorFunction<T> {\n const duration$ = timer(duration, scheduler);\n return throttle(() => duration$, config);\n}\n", "import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\n\nexport function withLatestFrom<T, O extends unknown[]>(...inputs: [...ObservableInputTuple<O>]): OperatorFunction<T, [T, ...O]>;\n\nexport function withLatestFrom<T, O extends unknown[], R>(\n ...inputs: [...ObservableInputTuple<O>, (...value: [T, ...O]) => R]\n): OperatorFunction<T, R>;\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * <span class=\"informal\">Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.</span>\n *\n * \n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n *\n * On every click event, emit an array with the latest timer event plus the click event\n *\n * ```ts\n * import { fromEvent, interval, withLatestFrom } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param {ObservableInput} other An input Observable to combine with the source\n * Observable. More than one input Observables may be given as argument.\n * @param {Function} [project] Projection function for combining values\n * together. Receives all values in order of the Observables passed, where the\n * first parameter is a value from the source Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this is not\n * passed, arrays will be emitted on the output Observable.\n * @return A function that returns an Observable of projected values from the\n * most recent values from each input Observable, or an array of the most\n * recent values from each input Observable.\n */\nexport function withLatestFrom<T, R>(...inputs: any[]): OperatorFunction<T, R | any[]> {\n const project = popResultSelector(inputs) as ((...args: any[]) => R) | undefined;\n\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n // An array of whether or not the other sources have emitted. Matched with them by index.\n // TODO: At somepoint, we should investigate the performance implications here, and look\n // into using a `Set()` and checking the `size` to see if we're ready.\n let hasValue = inputs.map(() => false);\n // Flipped true when we have at least one value from all other sources and\n // we are ready to start emitting values.\n let ready = false;\n\n // Other sources. Note that here we are not checking `subscriber.closed`,\n // this causes all inputs to be subscribed to, even if nothing can be emitted\n // from them. This is an important distinction because subscription constitutes\n // a side-effect.\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(\n createOperatorSubscriber(\n subscriber,\n (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n // If we're not ready yet, flag to show this observable has emitted.\n hasValue[i] = true;\n // Intentionally terse code.\n // If all of our other observables have emitted, set `ready` to `true`,\n // so we know we can start emitting values, then clean up the `hasValue` array,\n // because we don't need it anymore.\n (ready = hasValue.every(identity)) && (hasValue = null!);\n }\n },\n // Completing one of the other sources has\n // no bearing on the completion of our result.\n noop\n )\n );\n }\n\n // Source subscription\n source.subscribe(\n createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n // We have at least one value from the other sources. Go ahead and emit.\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n })\n );\n });\n}\n", "import { zip as zipStatic } from '../observable/zip';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { operate } from '../util/lift';\n\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[]>(otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[], R>(\n otherInputsAndProject: [...ObservableInputTuple<A>],\n project: (...values: Cons<T, A>) => R\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[]>(...otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[], R>(\n ...otherInputsAndProject: [...ObservableInputTuple<A>, (...values: Cons<T, A>) => R]\n): OperatorFunction<T, R>;\n\n/**\n * @deprecated Replaced with {@link zipWith}. Will be removed in v8.\n */\nexport function zip<T, R>(...sources: Array<ObservableInput<any> | ((...values: Array<any>) => R)>): OperatorFunction<T, any> {\n return operate((source, subscriber) => {\n zipStatic(source as ObservableInput<any>, ...(sources as Array<ObservableInput<any>>)).subscribe(subscriber);\n });\n}\n", "import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { zip } from './zip';\n\n/**\n * Subscribes to the source, and the observable inputs provided as arguments, and combines their values, by index, into arrays.\n *\n * What is meant by \"combine by index\": The first value from each will be made into a single array, then emitted,\n * then the second value from each will be combined into a single array and emitted, then the third value\n * from each will be combined into a single array and emitted, and so on.\n *\n * This will continue until it is no longer able to combine values of the same index into an array.\n *\n * After the last value from any one completed source is emitted in an array, the resulting observable will complete,\n * as there is no way to continue \"zipping\" values together by index.\n *\n * Use-cases for this operator are limited. There are memory concerns if one of the streams is emitting\n * values at a much faster rate than the others. Usage should likely be limited to streams that emit\n * at a similar pace, or finite streams of known length.\n *\n * In many cases, authors want `combineLatestWith` and not `zipWith`.\n *\n * @param otherInputs other observable inputs to collate values from.\n * @return A function that returns an Observable that emits items by index\n * combined from the source Observable and provided Observables, in form of an\n * array.\n */\nexport function zipWith<T, A extends readonly unknown[]>(...otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>> {\n return zip(...otherInputs);\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject<Document> {\n const document$ = new ReplaySubject<Document>(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll<T>(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement<T>(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector<T>(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable<boolean> {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable<ElementOffset> {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable<ElementOffset> {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject<ResizeObserverEntry>()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable<ElementSize> {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n/**\n * Retrieve the overflowing container of an element, if any\n *\n * @param el - Element\n *\n * @returns Overflowing container or nothing\n */\nexport function getElementContainer(\n el: HTMLElement\n): HTMLElement | undefined {\n let parent = el.parentElement\n while (parent)\n if (\n el.scrollWidth <= parent.scrollWidth &&\n el.scrollHeight <= parent.scrollHeight\n )\n parent = (el = parent).parentElement\n else\n break\n\n /* Return overflowing container */\n return parent ? el : undefined\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject<IntersectionObserverEntry>()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable<boolean> {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable<boolean> {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record<Toggle, HTMLInputElement> = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable<boolean> {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n filter,\n fromEvent,\n map,\n merge,\n share,\n startWith,\n switchMap\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch composition events\n *\n * @returns Composition observable\n */\nexport function watchComposition(): Observable<boolean> {\n return merge(\n fromEvent(window, \"compositionstart\").pipe(map(() => true)),\n fromEvent(window, \"compositionend\").pipe(map(() => false))\n )\n .pipe(\n startWith(false)\n )\n}\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable<Keyboard> {\n const keyboard$ = fromEvent<KeyboardEvent>(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n\n /* Don't emit during composition events - see https://bit.ly/3te3Wl8 */\n return watchComposition()\n .pipe(\n switchMap(active => !active ? keyboard$ : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL | HTMLLinkElement): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject<URL> {\n return new Subject<URL>()\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record<string, any>\n\n/**\n * Child element\n */\ntype Child =\n | ChildNode\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h<T extends keyof HTMLElementTagNameMap>(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h<T extends h.JSX.Element>(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h<T extends h.JSX.Element>(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable<string> {\n return fromEvent<HashChangeEvent>(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable<HTMLElement> {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable<boolean> {\n const media = matchMedia(query)\n return fromEventPattern<boolean>(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable<boolean> {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at<T>(\n query$: Observable<boolean>, factory: () => Observable<T>\n): Observable<T> {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable<Response> {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON<T>(\n url: URL | string, options?: RequestInit\n): Observable<T> {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable<Document> {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it wasn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable<void> {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable<ViewportOffset> {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable<ViewportSize> {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable<Viewport> {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<Viewport> {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "\"use strict\";(()=>{function d(i,e){parent.postMessage(i,e||\"*\")}function c(...i){return i.reduce((e,r)=>e.then(()=>new Promise(t=>{let o=document.createElement(\"script\");o.src=r,o.onload=t,document.body.appendChild(o)})),Promise.resolve())}var n=class{constructor(e){this.url=e;this.onerror=null;this.onmessage=null;this.onmessageerror=null;this.m=e=>{e.source===this.w&&(e.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent(\"message\",{data:e.data})),this.onmessage&&this.onmessage(e))};this.e=(e,r,t,o,s)=>{if(r===this.url.toString()){let a=new ErrorEvent(\"error\",{message:e,filename:r,lineno:t,colno:o,error:s});this.dispatchEvent(a),this.onerror&&this.onerror(a)}};let r=new EventTarget;this.addEventListener=r.addEventListener.bind(r),this.removeEventListener=r.removeEventListener.bind(r),this.dispatchEvent=r.dispatchEvent.bind(r);let t=document.createElement(\"iframe\");t.width=t.height=t.frameBorder=\"0\",document.body.appendChild(this.iframe=t),this.w.document.open(),this.w.document.write(`<html><body><script>postMessage=${d};importScripts=${c};addEventListener(\"error\",ev=>{parent.dispatchEvent(new ErrorEvent(\"error\",{filename:\"${e}\",error:ev.error}))})<\\/script><script src=\"${e}?${+Date.now()}\"><\\/script></body></html>`),this.w.document.close(),window.onmessage=this.m,window.onerror=this.e,this.r=new Promise((o,s)=>{this.w.onload=o,this.w.onerror=s})}terminate(){document.body.removeChild(this.iframe),window.onmessage=window.onerror=null}postMessage(e){this.r.catch().then(()=>{this.w.dispatchEvent(new MessageEvent(\"message\",{data:e}))})}get w(){return this.iframe.contentWindow}};window.IFrameWorker=n;location.protocol===\"file:\"&&(window.Worker=n);})();\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"iframe-worker/shim\"\nimport {\n Observable,\n Subject,\n endWith,\n fromEvent,\n ignoreElements,\n mergeWith,\n share,\n takeUntil\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create an observable for receiving from a web worker\n *\n * @template T - Data type\n *\n * @param worker - Web worker\n *\n * @returns Message observable\n */\nfunction recv<T>(worker: Worker): Observable<T> {\n return fromEvent<MessageEvent<T>, T>(worker, \"message\", ev => ev.data)\n}\n\n/**\n * Create a subject for sending to a web worker\n *\n * @template T - Data type\n *\n * @param worker - Web worker\n *\n * @returns Message subject\n */\nfunction send<T>(worker: Worker): Subject<T> {\n const send$ = new Subject<T>()\n send$.subscribe(data => worker.postMessage(data))\n\n /* Return message subject */\n return send$\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a bidirectional communication channel to a web worker\n *\n * @template T - Data type\n *\n * @param url - Worker URL\n * @param worker - Worker\n *\n * @returns Worker subject\n */\nexport function watchWorker<T extends WorkerMessage>(\n url: string, worker = new Worker(url)\n): Subject<T> {\n const recv$ = recv<T>(worker)\n const send$ = send<T>(worker)\n\n /* Create worker subject and forward messages */\n const worker$ = new Subject<T>()\n worker$.subscribe(send$)\n\n /* Return worker subject */\n const done$ = send$.pipe(ignoreElements(), endWith(true))\n return worker$\n .pipe(\n ignoreElements(),\n mergeWith(recv$.pipe(takeUntil(done$))),\n share()\n ) as Subject<T>\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.code.copy\" /* Code copy button */\n | \"content.lazy\" /* Lazy content elements */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.follow\" /* Following table of contents */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations =\n Record<Translation, string>\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n tags?: Record<string, string> /* Tags mapping */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement<T extends ComponentType>(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements<T extends ComponentType>(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable<Announce> {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable<Component<Announce>> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject<Announce>()\n push$\n .pipe(\n startWith({ hash: __md_get<number>(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get<number>(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set<number>(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/**\n * Consent defaults\n */\nexport interface ConsentDefaults {\n analytics?: boolean /* Consent for Analytics */\n github?: boolean /* Consent for GitHub */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable<HTMLElement> /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable<HTMLElement> /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable<Consent> {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable<Component<Consent>> {\n const internal$ = new Subject<Consent>()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable<HTMLElement> /* Location target observable */\n print$: Observable<boolean> /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for code blocks\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable<CodeBlock> {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * Note that code blocks may be mounted eagerly or lazily. If they're mounted\n * lazily (on first visibility), code annotation anchor links will not work,\n * as they are evaluated on initial page load, and code annotations in general\n * might feel a little bumpier.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable<Component<CodeBlock | Annotation>> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject<CodeBlock>()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n if (el.closest(\".copy\") || (\n feature(\"content.code.copy\") && !el.closest(\".no-copy\")\n )) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block lazily */\n if (feature(\"content.lazy\"))\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n\n /* Mount code block */\n return factory$\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a tooltip\n *\n * @param id - Tooltip identifier\n *\n * @returns Element\n */\nexport function renderTooltip(id?: string): HTMLElement {\n return (\n <div class=\"md-tooltip\" id={id}>\n <div class=\"md-tooltip__inner md-typeset\"></div>\n </div>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { renderTooltip } from \"../tooltip\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an annotation\n *\n * @param id - Annotation identifier\n * @param prefix - Tooltip identifier prefix\n *\n * @returns Element\n */\nexport function renderAnnotation(\n id: string | number, prefix?: string\n): HTMLElement {\n prefix = prefix ? `${prefix}_annotation_${id}` : undefined\n\n /* Render tooltip with anchor, if given */\n if (prefix) {\n const anchor = prefix ? `#${prefix}` : undefined\n return (\n <aside class=\"md-annotation\" tabIndex={0}>\n {renderTooltip(prefix)}\n <a href={anchor} class=\"md-annotation__index\" tabIndex={-1}>\n <span data-md-annotation-id={id}></span>\n </a>\n </aside>\n )\n } else {\n return (\n <aside class=\"md-annotation\" tabIndex={0}>\n {renderTooltip(prefix)}\n <span class=\"md-annotation__index\" tabIndex={-1}>\n <span data-md-annotation-id={id}></span>\n </span>\n </aside>\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n <button\n class=\"md-clipboard md-icon\"\n title={translation(\"clipboard.copy\")}\n data-clipboard-target={`#${id} > code`}\n ></button>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { SearchItem } from \"~/integrations/search\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchItem, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce<ComponentChild[]>((list, key) => [\n ...list, <del>{key}</del>, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const config = configuration()\n const url = new URL(document.location, config.base)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n const { tags } = configuration()\n return (\n <a href={`${url}`} class=\"md-search-result__link\" tabIndex={-1}>\n <article\n class=\"md-search-result__article md-typeset\"\n data-md-score={document.score.toFixed(2)}\n >\n {parent > 0 && <div class=\"md-search-result__icon md-icon\"></div>}\n {parent > 0 && <h1>{document.title}</h1>}\n {parent <= 0 && <h2>{document.title}</h2>}\n {teaser > 0 && document.text.length > 0 &&\n document.text\n }\n {document.tags && document.tags.map(tag => {\n const type = tags\n ? tag in tags\n ? `md-tag-icon md-tag-icon--${tags[tag]}`\n : \"md-tag-icon\"\n : \"\"\n return (\n <span class={`md-tag ${type}`}>{tag}</span>\n )\n })}\n {teaser > 0 && missing.length > 0 &&\n <p class=\"md-search-result__terms\">\n {translation(\"search.result.term.missing\")}: {...missing}\n </p>\n }\n </article>\n </a>\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchItem[]\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n const config = configuration()\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => {\n const l = `${new URL(doc.location, config.base)}` // @todo hacky\n return !l.includes(\"#\")\n })\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n <details class=\"md-search-result__more\">\n <summary tabIndex={-1}>\n <div>\n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n </div>\n </summary>\n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n </details>\n ] : []\n ]\n\n /* Render search result */\n return (\n <li class=\"md-search-result__item\">\n {children}\n </li>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n <ul class=\"md-source__facts\">\n {Object.entries(facts).map(([key, value]) => (\n <li class={`md-source__fact md-source__fact--${key}`}>\n {typeof value === \"number\" ? round(value) : value}\n </li>\n ))}\n </ul>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n <div class={classes} hidden>\n <button class=\"tabbed-button\" tabIndex={-1}></button>\n </div>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n <div class=\"md-typeset__scrollwrap\">\n <div class=\"md-typeset__table\">\n {table}\n </div>\n </div>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash - see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n <li class=\"md-version__item\">\n <a href={`${url}`} class=\"md-version__link\">\n {version.title}\n </a>\n </li>\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n <div class=\"md-version\">\n <button\n class=\"md-version__current\"\n aria-label={translation(\"select.version\")}\n >\n {active.title}\n </button>\n <ul class=\"md-version__list\">\n {versions.map(renderVersion)}\n </ul>\n </div>\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n debounceTime,\n defer,\n delay,\n endWith,\n filter,\n finalize,\n fromEvent,\n ignoreElements,\n map,\n merge,\n switchMap,\n take,\n takeUntil,\n tap,\n throttleTime,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getActiveElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable<HTMLElement> /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable<Annotation> {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]): ElementOffset => {\n const { width, height } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y + height / 2\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement, { target$ }: MountOptions\n): Observable<Component<Annotation>> {\n const [tooltip, index] = Array.from(el.children)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject<Annotation>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Toggle tooltip presence to mitigate empty lines when copying */\n merge(\n push$.pipe(filter(({ active }) => active)),\n push$.pipe(debounceTime(250), filter(({ active }) => !active))\n )\n .subscribe({\n\n /* Handle emission */\n next({ active }) {\n if (active)\n el.prepend(tooltip)\n else\n tooltip.remove()\n },\n\n /* Handle complete */\n complete() {\n el.prepend(tooltip)\n }\n })\n\n /* Toggle tooltip visibility */\n push$\n .pipe(\n auditTime(16, animationFrameScheduler)\n )\n .subscribe(({ active }) => {\n tooltip.classList.toggle(\"md-tooltip--active\", active)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(125, animationFrameScheduler),\n filter(() => !!el.offsetParent),\n map(() => el.offsetParent!.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Allow to copy link without scrolling to anchor */\n fromEvent<MouseEvent>(index, \"click\")\n .pipe(\n takeUntil(done$),\n filter(ev => !(ev.metaKey || ev.ctrlKey))\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Allow to open link in new tab or blur on close */\n fromEvent<MouseEvent>(index, \"mousedown\")\n .pipe(\n takeUntil(done$),\n withLatestFrom(push$)\n )\n .subscribe(([ev, { active }]) => {\n\n /* Open in new tab */\n if (ev.button !== 0 || ev.metaKey || ev.ctrlKey) {\n ev.preventDefault()\n\n /* Close annotation */\n } else if (active) {\n ev.preventDefault()\n\n /* Focus parent annotation, if any */\n const parent = el.parentElement!.closest(\".md-annotation\")\n if (parent instanceof HTMLElement)\n parent.focus()\n else\n getActiveElement()?.blur()\n }\n })\n\n /* Open and focus annotation on location target */\n target$\n .pipe(\n takeUntil(done$),\n filter(target => target === tooltip),\n delay(125)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n endWith,\n finalize,\n ignoreElements,\n merge,\n share,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable<HTMLElement> /* Location target observable */\n print$: Observable<boolean> /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const el of getElements(\".c, .c1, .cm\", container)) {\n const nodes: Text[] = []\n\n /* Find all text nodes in current element */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode())\n nodes.push(node as Text)\n\n /* Find all markers in each text node */\n for (let text of nodes) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n while ((match = /(\\(\\d+\\))(!)?/.exec(text.textContent!))) {\n const [, id, force] = match\n if (typeof force === \"undefined\") {\n const marker = text.splitText(match.index)\n text = marker.splitText(id.length)\n markers.push(marker)\n\n /* Replace entire text with marker */\n } else {\n text.textContent = id\n markers.push(text)\n break\n }\n }\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { target$, print$ }: MountOptions\n): Observable<Component<Annotation>> {\n\n /* Compute prefix for tooltip anchors */\n const parent = container.closest(\"[id]\")\n const prefix = parent?.id\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map<string, HTMLElement>()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(id, renderAnnotation(id, prefix))\n marker.replaceWith(annotations.get(id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const done$ = new Subject()\n\n /* Retrieve container pairs for swapping */\n const pairs: [HTMLElement, HTMLElement][] = []\n for (const [id, annotation] of annotations)\n pairs.push([\n getElement(\".md-typeset\", annotation),\n getElement(`li:nth-child(${id})`, el)\n ])\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(ignoreElements(), endWith(true)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [inner, child] of pairs)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container, { target$ })\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable<void>\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable<void> {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.3.0/dist/mermaid.min.js\")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable<Component<Mermaid>> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS,\n sequence: {\n actorFontSize: \"16px\", // Hack: mitigate https://bit.ly/3y0NEi3\n messageFontSize: \"16px\",\n noteFontSize: \"16px\"\n }\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n\n /* Create host element to replace code block */\n const host = h(\"div\", { class: \"mermaid\" })\n const text = el.textContent\n\n /* Render and inject diagram */\n mermaid.mermaidAPI.render(id, text, (svg: string, fn: Function) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram and bind functions */\n el.replaceWith(host)\n fn?.(shadow)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable<HTMLElement> /* Location target observable */\n print$: Observable<boolean> /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable<HTMLElement> /* Location target observable */\n print$: Observable<boolean> /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable<Details> {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable<Component<Details>> {\n return defer(() => {\n const push$ = new Subject<Details>()\n push$.subscribe(({ action, reveal }) => {\n el.toggleAttribute(\"open\", action === \"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable<Component<DataTable>> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n endWith,\n finalize,\n fromEvent,\n ignoreElements,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable<ContentTabs> {\n const inputs = getElements<HTMLInputElement>(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement<HTMLLabelElement>(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement<HTMLLabelElement>(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n * @param options - Options\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement, { viewport$ }: MountOptions\n): Observable<Component<ContentTabs>> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject<ContentTabs>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(\n skip(1),\n withLatestFrom(viewport$)\n )\n .subscribe(([{ active }, { offset }]) => {\n const tab = active.innerText.trim()\n if (active.hasAttribute(\"data-md-switching\")) {\n active.removeAttribute(\"data-md-switching\")\n\n /* Determine viewport offset of active tab */\n } else {\n const y = el.offsetTop - offset.y\n\n /* Passively activate other tabs */\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements<HTMLInputElement>(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (\n label !== active &&\n label.innerText.trim() === tab\n ) {\n label.setAttribute(\"data-md-switching\", \"\")\n input.click()\n break\n }\n }\n\n /* Bring active tab into view */\n window.scrollTo({\n top: el.offsetTop - y\n })\n\n /* Persist active tabs in local storage */\n const tabs = __md_get<string[]>(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n }\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n target$: Observable<HTMLElement> /* Location target observable */\n print$: Observable<boolean> /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { viewport$, target$, print$ }: MountOptions\n): Observable<Component<Content>> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { target$, print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child, { viewport$ }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject<string> /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject<string> /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable<Dialog> {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable<Component<Dialog>> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject<Dialog>()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n filter,\n ignoreElements,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n main$: Observable<Main> /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable<boolean> {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable<Header> {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable<Component<Header>> {\n return defer(() => {\n const push$ = new Subject<Main>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<HeaderTitle> {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable<Component<HeaderTitle>> {\n return defer(() => {\n const push$ = new Subject<HeaderTitle>()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<Main> {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable<Palette> {\n const current = __md_get<Palette>(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable<Component<Palette>> {\n const meta = h(\"meta\", { name: \"theme-color\" })\n document.head.appendChild(meta)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject<Palette>()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Update theme-color meta tag */\n push$\n .pipe(\n map(() => {\n const header = getComponentElement(\"header\")\n const { backgroundColor } = window.getComputedStyle(header)\n\n /* Return color in hexadecimal format */\n return backgroundColor.match(/\\d+/g)!\n .map(value => (+value).toString(16).padStart(2, \"0\"))\n .join(\"\")\n })\n )\n .subscribe(color => meta.content = `#${color}`)\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements<HTMLInputElement>(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject<string> /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable<ClipboardJS.Event>(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable<Sitemap> {\n const cached = __md_get<Sitemap>(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject<Document> /* Document subject */\n location$: Subject<URL> /* Location subject */\n viewport$: Observable<Viewport> /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement<HTMLLinkElement>(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent<MouseEvent>(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share<HistoryState>()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent<PopStateEvent>(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share<HistoryState>()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchConfig } from \"../config\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search configuration\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchConfig\n): SearchHighlightFactoryFn {\n // Hack: temporarily remove pure lookaheads\n const regex = config.separator.split(\"|\").map(term => {\n const temp = term.replace(/(\\(\\?[!=][^)]+\\))/g, \"\")\n return temp.length === 0 ? \"\uFFFD\" : term\n })\n .join(\"|\")\n\n const separator = new RegExp(regex, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}<mark data-md-highlight>${term}</mark>`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator}|)(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => escapeHTML(value)\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)<mark[^>]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchResult } from \"../../_\"\nimport { SearchIndex } from \"../../config\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n first,\n merge,\n of,\n switchMap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { watchToggle, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../config\"\nimport {\n SearchMessage,\n SearchMessageType\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates and initializes a web worker that is used for search,\n * so that the user interface doesn't freeze. In general, the application does\n * not care how search is implemented, as long as the web worker conforms to\n * the format expected by the application as defined in `SearchMessage`. This\n * allows the author to implement custom search functionality, by providing a\n * custom web worker via configuration.\n *\n * Material for MkDocs' built-in search implementation makes use of Lunr.js, an\n * efficient and fast implementation for client-side search. Leveraging a tiny\n * iframe-based web worker shim, search is even supported for the `file://`\n * protocol, enabling search for local non-hosted builds.\n *\n * If the protocol is `file://`, search initialization is deferred to mitigate\n * freezing, as it's now synchronous by design - see https://bit.ly/3C521EO\n *\n * @see https://bit.ly/3igvtQv - How to implement custom search\n *\n * @param url - Worker URL\n * @param index$ - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index$: ObservableInput<SearchIndex>\n): Subject<SearchMessage> {\n const worker$ = watchWorker<SearchMessage>(url)\n merge(\n of(location.protocol !== \"file:\"),\n watchToggle(\"search\")\n )\n .pipe(\n first(active => active),\n switchMap(() => index$)\n )\n .subscribe(({ config, docs }) => worker$.next({\n type: SearchMessageType.SETUP,\n data: {\n config,\n docs,\n options: {\n suggest: feature(\"search.suggest\")\n }\n }\n }))\n\n /* Return search worker */\n return worker$\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject<Document> /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON<Version[]>(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent<MouseEvent>(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path.split(\"#\")[0])\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n first,\n fromEvent,\n ignoreElements,\n map,\n merge,\n shareReplay,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessage,\n SearchMessageType,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n worker$: Subject<SearchMessage> /* Search worker */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n worker$: Subject<SearchMessage> /* Search worker */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { worker$ }: WatchOptions\n): Observable<SearchQuery> {\n\n /* Support search deep linking */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\")) {\n setToggle(\"search\", true)\n\n /* Set query from parameter */\n el.value = searchParams.get(\"q\")!\n el.focus()\n\n /* Remove query parameter on close */\n watchToggle(\"search\")\n .pipe(\n first(active => !active)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n }\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n worker$.pipe(first(isSearchReadyMessage)),\n fromEvent(el, \"keyup\"),\n focus$\n )\n .pipe(\n map(() => el.value),\n distinctUntilChanged()\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { worker$ }: MountOptions\n): Observable<Component<SearchQuery, HTMLInputElement>> {\n const push$ = new Subject<SearchQuery>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n\n /* Handle value change */\n combineLatest([\n worker$.pipe(first(isSearchReadyMessage)),\n push$\n ], (_, query) => query)\n .pipe(\n distinctUntilKeyChanged(\"value\")\n )\n .subscribe(({ value }) => worker$.next({\n type: SearchMessageType.QUERY,\n data: value\n }))\n\n /* Handle focus change */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus)\n setToggle(\"search\", focus)\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { worker$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n first,\n fromEvent,\n map,\n merge,\n mergeMap,\n of,\n share,\n skipUntil,\n switchMap,\n takeUntil,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n getOptionalElement,\n watchElementBoundary,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessage,\n SearchResult,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable<SearchQuery> /* Search query observable */\n worker$: Subject<SearchMessage> /* Search worker */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { worker$, query$ }: MountOptions\n): Observable<Component<SearchResult>> {\n const push$ = new Subject<SearchResult>()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve container */\n const container = el.parentElement!\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Reveal to accessibility tree \u2013 see https://bit.ly/3iAA7t8 */\n watchToggle(\"search\")\n .subscribe(active => list.setAttribute(\n \"role\", active ? \"list\" : \"presentation\"\n ))\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(worker$.pipe(first(isSearchReadyMessage)))\n )\n .subscribe(([{ items }, { value }]) => {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = value.length\n ? translation(\"search.result.none\")\n : translation(\"search.result.placeholder\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n const count = round(items.length)\n meta.textContent = translation(\"search.result.other\", count)\n }\n })\n\n /* Render search result item */\n const render$ = push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n )),\n map(renderSearchResultItem),\n share()\n )\n\n /* Update search result list */\n render$.subscribe(item => list.appendChild(item))\n render$\n .pipe(\n mergeMap(item => {\n const details = getOptionalElement(\"details\", item)\n if (typeof details === \"undefined\")\n return EMPTY\n\n /* Keep position of details element stable */\n return fromEvent(details, \"toggle\")\n .pipe(\n takeUntil(push$),\n map(() => details)\n )\n })\n )\n .subscribe(details => {\n if (\n details.open === false &&\n details.offsetTop <= container.scrollTop\n )\n container.scrollTo({ top: details.offsetTop })\n })\n\n /* Filter search result message */\n const result$ = worker$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n endWith,\n finalize,\n fromEvent,\n ignoreElements,\n map,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable<SearchQuery> /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable<SearchQuery> /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable<SearchShare> {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n\n /* Compute readable query strings */\n value = value\n .replace(/\\s+/g, \"+\") /* Collapse whitespace */\n .replace(/&/g, \"%26\") /* Escape '&' character */\n .replace(/=/g, \"%3D\") /* Escape '=' character */\n\n /* Replace query string */\n url.search = `q=${value}`\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable<Component<SearchShare>> {\n const push$ = new Subject<SearchShare>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchMessage,\n SearchResult,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable<Keyboard> /* Keyboard observable */\n worker$: Subject<SearchMessage> /* Search worker */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { worker$, keyboard$ }: MountOptions\n): Observable<Component<SearchSuggest>> {\n const push$ = new Subject<SearchResult>()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggest }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggest?.length && words[words.length - 1]) {\n const last = suggest[suggest.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = worker$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n fromEvent,\n merge,\n mergeWith\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput<SearchIndex> /* Search index observable */\n keyboard$: Observable<Keyboard> /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable<Component<Search>> {\n const config = configuration()\n try {\n const worker$ = setupSearchWorker(config.search, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Always close search on result selection */\n fromEvent<PointerEvent>(el, \"click\")\n .pipe(\n filter(({ target }) => (\n target instanceof Element && !!target.closest(\"a\")\n ))\n )\n .subscribe(() => setToggle(\"search\", false))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map<HTMLAnchorElement, number>()\n for (const anchor of getElements<HTMLAnchorElement>(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, { worker$ })\n return merge(\n query$,\n mountSearchResult(result, { worker$, query$ })\n )\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, { worker$, keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map<ChildNode, string> /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput<SearchIndex> /* Search index observable */\n location$: Observable<URL> /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable<Component<SearchHighlight>> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map<ChildNode, string>()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n first,\n map,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementOffset,\n getElementSize,\n getElements\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n main$: Observable<Main> /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n main$: Observable<Main> /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable<Sidebar> {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable<Component<Sidebar>> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject<Sidebar>()\n const next$ = push$\n .pipe(\n auditTime(0, animationFrameScheduler)\n )\n\n /* Update sidebar height and offset */\n next$.pipe(withLatestFrom(header$))\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Bring active item into view on initial load */\n next$.pipe(first())\n .subscribe(() => {\n for (const item of getElements(\".md-nav__link--active[href]\", el)) {\n const container = getElementContainer(item)\n if (typeof container !== \"undefined\") {\n const offset = item.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2\n })\n }\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable<SourceFacts> {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON<Release>(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON<Repo>(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON<User>(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable<SourceFacts> {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON<ProjectSchema>(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable<SourceFacts> {\n\n /* Try to match GitHub repository */\n let match = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)\n if (match) {\n const [, user, repo] = match\n return fetchSourceFactsFromGitHub(user, repo)\n }\n\n /* Try to match GitLab repository */\n match = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)\n if (match) {\n const [, base, slug] = match\n return fetchSourceFactsFromGitLab(base, slug)\n }\n\n /* Fallback */\n return EMPTY\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { ConsentDefaults } from \"~/components/consent\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport {\n Component,\n getComponentElements\n} from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable<Source>\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable<Source> {\n return fetch$ ||= defer(() => {\n const cached = __md_get<SourceFacts>(\"__source\", sessionStorage)\n if (cached) {\n return of(cached)\n } else {\n\n /* Check if consent is configured and was given */\n const els = getComponentElements(\"consent\")\n if (els.length) {\n const consent = __md_get<ConsentDefaults>(\"__consent\")\n if (!(consent && consent.github))\n return EMPTY\n }\n\n /* Fetch repository facts */\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n }\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable<Component<Source>> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject<Source>()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<Tabs> {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable<Component<Tabs>> {\n return defer(() => {\n const push$ = new Subject<Tabs>()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n filter,\n finalize,\n ignoreElements,\n map,\n merge,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementSize,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n target$: Observable<HTMLElement> /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<TableOfContents> {\n const table = new Map<HTMLAnchorElement, HTMLElement>()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements<HTMLAnchorElement>(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Fix anchor offsets in tables - see https://bit.ly/3CUFOcn */\n let parent = target.offsetParent as HTMLElement\n for (; parent; parent = parent.offsetParent as HTMLElement)\n offset += parent.offsetTop\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map<HTMLAnchorElement[], number>()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable<Component<TableOfContents>> {\n return defer(() => {\n const push$ = new Subject<TableOfContents>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up following, if enabled */\n if (feature(\"toc.follow\")) {\n\n /* Toggle smooth scrolling only for anchor clicks */\n const smooth$ = merge(\n viewport$.pipe(debounceTime(1), map(() => undefined)),\n viewport$.pipe(debounceTime(250), map(() => \"smooth\" as const))\n )\n\n /* Bring active anchor into view */\n push$\n .pipe(\n filter(({ prev }) => prev.length > 0),\n withLatestFrom(smooth$)\n )\n .subscribe(([{ prev }, behavior]) => {\n const [anchor] = prev[prev.length - 1]\n if (anchor.offsetHeight) {\n\n /* Retrieve overflowing container and scroll */\n const container = getElementContainer(anchor)\n if (typeof container !== \"undefined\") {\n const offset = anchor.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2,\n behavior\n })\n }\n }\n })\n }\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n ignoreElements,\n map,\n repeat,\n skip,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n main$: Observable<Main> /* Main area observable */\n target$: Observable<HTMLElement> /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n header$: Observable<Header> /* Header observable */\n main$: Observable<Main> /* Main area observable */\n target$: Observable<HTMLElement> /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable<BackToTop> {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable<Component<BackToTop>> {\n const push$ = new Subject<BackToTop>()\n const done$ = push$.pipe(ignoreElements(), endWith(true))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable<Document> /* Document observable */\n tablet$: Observable<boolean> /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements<HTMLInputElement>(\n \".md-toggle--indeterminate\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable<Document> /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable<Viewport> /* Viewport observable */\n tablet$: Observable<boolean> /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array<string | Node>\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node === \"string\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], + "mappings": "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", + "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "r", "s", "o", "u", "a", "e", "i", "import_url_polyfill", "extendStatics", "d", "b", "p", "__extends", "__", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "v", "op", "__values", "o", "s", "m", "i", "__read", "n", "r", "ar", "e", "error", "__spreadArray", "to", "from", "pack", "i", "l", "ar", "__await", "v", "__asyncGenerator", "thisArg", "_arguments", "generator", "g", "q", "verb", "n", "a", "b", "resume", "step", "e", "settle", "r", "fulfill", "reject", "value", "f", "__asyncValues", "o", "m", "i", "__values", "verb", "n", "v", "resolve", "reject", "settle", "d", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_a", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "actions", "_a", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "EmptyError", "createErrorClass", "_super", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "innerFrom", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "throwIfEmpty", "errorFactory", "defaultErrorFactory", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "EmptyError", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "first", "predicate", "defaultValue", "hasDefaultValue", "source", "filter", "v", "identity", "take", "defaultIfEmpty", "throwIfEmpty", "EmptyError", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "innerFrom", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "getElementContainer", "parent", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchComposition", "merge", "fromEvent", "map", "startWith", "watchKeyboard", "keyboard$", "filter", "ev", "getToggle", "mode", "active", "getActiveElement", "share", "switchMap", "EMPTY", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "round", "value", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "d", "i", "e", "c", "r", "t", "o", "n", "s", "a", "recv", "worker", "fromEvent", "ev", "send", "send$", "Subject", "data", "watchWorker", "url", "recv$", "worker$", "done$", "ignoreElements", "endWith", "mergeWith", "takeUntil", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderTooltip", "id", "h", "renderAnnotation", "id", "prefix", "anchor", "h", "renderTooltip", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "config", "configuration", "url", "feature", "match", "highlight", "value", "tags", "tag", "type", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "height", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "target$", "tooltip", "index", "push$", "Subject", "done$", "ignoreElements", "endWith", "watchElementVisibility", "takeUntil", "visible", "merge", "filter", "debounceTime", "auditTime", "animationFrameScheduler", "throttleTime", "origin", "fromEvent", "ev", "withLatestFrom", "_a", "parent", "getActiveElement", "target", "delay", "tap", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "el", "getElements", "nodes", "it", "node", "text", "match", "id", "force", "marker", "swap", "source", "target", "mountAnnotationList", "target$", "print$", "parent", "prefix", "annotations", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "pairs", "annotation", "getElement", "takeUntil", "ignoreElements", "endWith", "active", "inner", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "feature", "parent", "renderClipboardButton", "container", "list", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "text", "svg", "fn", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "viewport$", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "ignoreElements", "endWith", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "withLatestFrom", "tab", "y", "set", "label", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "viewport$", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "ignoreElements", "endWith", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "meta", "h", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "header", "getComponentElement", "backgroundColor", "color", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "setupSearchHighlighter", "config", "regex", "term", "separator", "highlight", "_", "data", "query", "match", "value", "escapeHTML", "isSearchReadyMessage", "message", "isSearchResultMessage", "setupSearchWorker", "url", "index$", "worker$", "watchWorker", "merge", "of", "watchToggle", "first", "active", "switchMap", "config", "docs", "feature", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "worker$", "searchParams", "getLocation", "setToggle", "watchToggle", "first", "active", "url", "focus$", "watchElementFocus", "value$", "merge", "isSearchReadyMessage", "fromEvent", "map", "distinctUntilChanged", "combineLatest", "value", "focus", "shareReplay", "mountSearchQuery", "push$", "Subject", "done$", "ignoreElements", "endWith", "_", "query", "distinctUntilKeyChanged", "takeUntil", "tap", "state", "finalize", "__spreadValues", "mountSearchResult", "el", "worker$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "container", "meta", "getElement", "list", "watchToggle", "active", "withLatestFrom", "skipUntil", "first", "isSearchReadyMessage", "items", "value", "translation", "count", "round", "render$", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "map", "renderSearchResultItem", "share", "item", "mergeMap", "details", "getOptionalElement", "EMPTY", "fromEvent", "takeUntil", "isSearchResultMessage", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "done$", "ignoreElements", "endWith", "fromEvent", "takeUntil", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "worker$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggest", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "worker$", "setupSearchWorker", "query", "getComponentElement", "result", "fromEvent", "filter", "target", "setToggle", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "els", "i", "query$", "mountSearchQuery", "merge", "mountSearchResult", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "next$", "auditTime", "animationFrameScheduler", "withLatestFrom", "first", "item", "getElements", "container", "getElementContainer", "getElementSize", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "match", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "getComponentElements", "consent", "EMPTY", "fetchSourceFacts", "tap", "facts", "catchError", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "parent", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "ignoreElements", "endWith", "feature", "smooth$", "merge", "debounceTime", "filter", "withLatestFrom", "behavior", "container", "getElementContainer", "getElementSize", "takeUntil", "skip", "repeat", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "ignoreElements", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "fetchSearchIndex", "watchScript", "config", "map", "shareReplay", "requestJSON", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "configuration", "index$", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "setLocation", "next", "active", "getActiveElement", "id", "input", "getElement", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "switchMap", "el", "watchMain", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] +} diff --git a/assets/javascripts/lunr/min/lunr.ar.min.js b/assets/javascripts/lunr/min/lunr.ar.min.js new file mode 100644 index 00000000..9b06c26c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ar.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWordFilter,e.ar.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ar.stemmer))},e.ar.wordCharacters="ء-ٛٱـ",e.ar.trimmer=e.trimmerSupport.generateTrimmer(e.ar.wordCharacters),e.Pipeline.registerFunction(e.ar.trimmer,"trimmer-ar"),e.ar.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ف ك ب و س ل ن ا ي ت",pre2:"ال لل",pre3:"بال وال فال تال كال ولل",pre4:"فبال كبال وبال وكال"},e.suf={suf1:"ه ك ت ن ا ي",suf2:"نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه",suf3:"تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها",suf4:"كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا"},e.patterns=JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'),e.execArray=["cleanWord","removeDiacritics","cleanAlef","removeStopWords","normalizeHamzaAndAlef","removeStartWaw","removePre432","removeEndTaa","wordCheck"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r<e.execArray.length&&1!=e.result;)e.result=e[e.execArray[r]](),r++},e.setCurrent=function(r){e.word=r},e.getCurrent=function(){return e.word},e.cleanWord=function(){var r=new RegExp("[^ء-ٛٱـ]");return e.word=e.word.replace(new RegExp("ـ","g"),""),!!r.test("")},e.removeDiacritics=function(){new RegExp("[ً-ٛ]");return e.word=e.word.replace(/[\u064b-\u065b]/gi,""),!1},e.cleanAlef=function(){var r=new RegExp("[آأإٱى]");return e.word=e.word.replace(r,"ا"),!1},e.removeStopWords=function(){if("، اض امين اه اها اي ا اب اجل اجمع اخ اخذ اصبح اضحى اقبل اقل اكثر الا ام اما امامك امامك امسى اما ان انا انت انتم انتما انتن انت انشا انى او اوشك اولئك اولئكم اولاء اولالك اوه اي ايا اين اينما اي ان اي اف اذ اذا اذا اذما اذن الى اليكم اليكما اليكن اليك اليك الا اما ان انما اي اياك اياكم اياكما اياكن ايانا اياه اياها اياهم اياهما اياهن اياي ايه ان ا ابتدا اثر اجل احد اخرى اخلولق اذا اربعة ارتد استحال اطار اعادة اعلنت اف اكثر اكد الالاء الالى الا الاخيرة الان الاول الاولى التى التي الثاني الثانية الذاتي الذى الذي الذين السابق الف اللائي اللاتي اللتان اللتيا اللتين اللذان اللذين اللواتي الماضي المقبل الوقت الى اليوم اما امام امس ان انبرى انقلب انه انها او اول اي ايار ايام ايضا ب بات باسم بان بخ برس بسبب بس بشكل بضع بطان بعد بعض بك بكم بكما بكن بل بلى بما بماذا بمن بن بنا به بها بي بيد بين بس بله بئس تان تانك تبدل تجاه تحول تلقاء تلك تلكم تلكما تم تينك تين ته تي ثلاثة ثم ثم ثمة ثم جعل جلل جميع جير حار حاشا حاليا حاي حتى حرى حسب حم حوالى حول حيث حيثما حين حي حبذا حتى حذار خلا خلال دون دونك ذا ذات ذاك ذانك ذان ذلك ذلكم ذلكما ذلكن ذو ذوا ذواتا ذواتي ذيت ذينك ذين ذه ذي راح رجع رويدك ريث رب زيارة سبحان سرعان سنة سنوات سوف سوى ساء ساءما شبه شخصا شرع شتان صار صباح صفر صه صه ضد ضمن طاق طالما طفق طق ظل عاد عام عاما عامة عدا عدة عدد عدم عسى عشر عشرة علق على عليك عليه عليها عل عن عند عندما عوض عين عدس عما غدا غير ف فان فلان فو فى في فيم فيما فيه فيها قال قام قبل قد قط قلما قوة كانما كاين كاي كاين كاد كان كانت كذا كذلك كرب كل كلا كلاهما كلتا كلم كليكما كليهما كلما كلا كم كما كي كيت كيف كيفما كان كخ لئن لا لات لاسيما لدن لدى لعمر لقاء لك لكم لكما لكن لكنما لكي لكيلا للامم لم لما لما لن لنا له لها لو لوكالة لولا لوما لي لست لست لستم لستما لستن لست لسن لعل لكن ليت ليس ليسا ليستا ليست ليسوا لسنا ما ماانفك مابرح مادام ماذا مازال مافتئ مايو متى مثل مذ مساء مع معاذ مقابل مكانكم مكانكما مكانكن مكانك مليار مليون مما ممن من منذ منها مه مهما من من نحن نحو نعم نفس نفسه نهاية نخ نعما نعم ها هاؤم هاك هاهنا هب هذا هذه هكذا هل هلم هلا هم هما هن هنا هناك هنالك هو هي هيا هيت هيا هؤلاء هاتان هاتين هاته هاتي هج هذا هذان هذين هذه هذي هيهات و وا واحد واضاف واضافت واكد وان واها واوضح وراءك وفي وقال وقالت وقد وقف وكان وكانت ولا ولم ومن وهو وهي ويكان وي وشكان يكون يمكن يوم ايان".split(" ").indexOf(e.word)>=0)return!0},e.normalizeHamzaAndAlef=function(){return e.word=e.word.replace("ؤ","ء"),e.word=e.word.replace("ئ","ء"),e.word=e.word.replace(/([\u0627])\1+/gi,"ا"),!1},e.removeEndTaa=function(){return!(e.word.length>2)||(e.word=e.word.replace(/[\u0627]$/,""),e.word=e.word.replace("ة",""),!1)},e.removeStartWaw=function(){return e.word.length>3&&"و"==e.word[0]&&"و"==e.word[1]&&(e.word=e.word.slice(1)),!1},e.removePre432=function(){var r=e.word;if(e.word.length>=7){var t=new RegExp("^("+e.pre.pre4.split(" ").join("|")+")");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=6){var c=new RegExp("^("+e.pre.pre3.split(" ").join("|")+")");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=5){var l=new RegExp("^("+e.pre.pre2.split(" ").join("|")+")");e.word=e.word.replace(l,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.patternCheck=function(r){for(var t=0;t<r.length;t++){for(var c=!0,l=0;l<r[t].pt.length;l++){var n=r[t].pt[l].c.split(","),o=!1;if(n.forEach(function(c){e.word[r[t].pt[l].l]==c&&(o=!0)}),!o){c=!1;break}}if(1==c){if(r[t].mPt){for(var p=[],m=0;m<r[t].mPt.length;m++)null!=r[t].mPt[m].m?p[r[t].mPt[m].l]=e.word[r[t].mPt[m].m]:p[r[t].mPt[m].l]=r[t].mPt[m].c;e.word=p.join("")}e.result=!0;break}}},e.removePre1=function(){var r=e.word;if(0==e.preRemoved&&e.word.length>3){var t=new RegExp("^("+e.pre.pre1.split(" ").join("|")+")");e.word=e.word.replace(t,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.removeSuf1=function(){var r=e.word;if(0==e.sufRemoved&&e.word.length>3){var t=new RegExp("("+e.suf.suf1.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.removeSuf432=function(){var r=e.word;if(e.word.length>=6){var t=new RegExp("("+e.suf.suf4.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=5){var c=new RegExp("("+e.suf.suf3.split(" ").join("|")+")$");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=4){var l=new RegExp("("+e.suf.suf2.split(" ").join("|")+")$");e.word=e.word.replace(l,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.wordCheck=function(){for(var r=(e.word,[e.removeSuf432,e.removeSuf1,e.removePre1]),t=0,c=!1;e.word.length>=7&&!e.result&&t<r.length;)7!=e.word.length||c?(r[t](),t++,c=!1):(e.checkPattern73(),c=!0);var l=[e.checkPattern63,e.removeSuf432,e.removeSuf1,e.removePre1,e.checkPattern64];for(t=0;6==e.word.length&&!e.result&&t<l.length;)l[t](),t++;var n=[e.checkPattern53,e.removeSuf432,e.removeSuf1,e.removePre1,e.checkPattern54];for(t=0;5==e.word.length&&!e.result&&t<n.length;)n[t](),t++;var o=[e.checkPattern43,e.removeSuf1,e.removePre1,e.removeSuf432];for(t=0;4==e.word.length&&!e.result&&t<o.length;)o[t](),t++;return!0},e.checkPattern43=function(){e.patternCheck(e.patterns.pt43)},e.checkPattern53=function(){e.patternCheck(e.patterns.pt53)},e.checkPattern54=function(){e.patternCheck(e.patterns.pt54)},e.checkPattern63=function(){e.patternCheck(e.patterns.pt63)},e.checkPattern64=function(){e.patternCheck(e.patterns.pt64)},e.checkPattern73=function(){e.patternCheck(e.patterns.pt73)},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}}(),e.Pipeline.registerFunction(e.ar.stemmer,"stemmer-ar"),e.ar.stopWordFilter=e.generateStopWordFilter("، اض امين اه اها اي ا اب اجل اجمع اخ اخذ اصبح اضحى اقبل اقل اكثر الا ام اما امامك امامك امسى اما ان انا انت انتم انتما انتن انت انشا انى او اوشك اولئك اولئكم اولاء اولالك اوه اي ايا اين اينما اي ان اي اف اذ اذا اذا اذما اذن الى اليكم اليكما اليكن اليك اليك الا اما ان انما اي اياك اياكم اياكما اياكن ايانا اياه اياها اياهم اياهما اياهن اياي ايه ان ا ابتدا اثر اجل احد اخرى اخلولق اذا اربعة ارتد استحال اطار اعادة اعلنت اف اكثر اكد الالاء الالى الا الاخيرة الان الاول الاولى التى التي الثاني الثانية الذاتي الذى الذي الذين السابق الف اللائي اللاتي اللتان اللتيا اللتين اللذان اللذين اللواتي الماضي المقبل الوقت الى اليوم اما امام امس ان انبرى انقلب انه انها او اول اي ايار ايام ايضا ب بات باسم بان بخ برس بسبب بس بشكل بضع بطان بعد بعض بك بكم بكما بكن بل بلى بما بماذا بمن بن بنا به بها بي بيد بين بس بله بئس تان تانك تبدل تجاه تحول تلقاء تلك تلكم تلكما تم تينك تين ته تي ثلاثة ثم ثم ثمة ثم جعل جلل جميع جير حار حاشا حاليا حاي حتى حرى حسب حم حوالى حول حيث حيثما حين حي حبذا حتى حذار خلا خلال دون دونك ذا ذات ذاك ذانك ذان ذلك ذلكم ذلكما ذلكن ذو ذوا ذواتا ذواتي ذيت ذينك ذين ذه ذي راح رجع رويدك ريث رب زيارة سبحان سرعان سنة سنوات سوف سوى ساء ساءما شبه شخصا شرع شتان صار صباح صفر صه صه ضد ضمن طاق طالما طفق طق ظل عاد عام عاما عامة عدا عدة عدد عدم عسى عشر عشرة علق على عليك عليه عليها عل عن عند عندما عوض عين عدس عما غدا غير ف فان فلان فو فى في فيم فيما فيه فيها قال قام قبل قد قط قلما قوة كانما كاين كاي كاين كاد كان كانت كذا كذلك كرب كل كلا كلاهما كلتا كلم كليكما كليهما كلما كلا كم كما كي كيت كيف كيفما كان كخ لئن لا لات لاسيما لدن لدى لعمر لقاء لك لكم لكما لكن لكنما لكي لكيلا للامم لم لما لما لن لنا له لها لو لوكالة لولا لوما لي لست لست لستم لستما لستن لست لسن لعل لكن ليت ليس ليسا ليستا ليست ليسوا لسنا ما ماانفك مابرح مادام ماذا مازال مافتئ مايو متى مثل مذ مساء مع معاذ مقابل مكانكم مكانكما مكانكن مكانك مليار مليون مما ممن من منذ منها مه مهما من من نحن نحو نعم نفس نفسه نهاية نخ نعما نعم ها هاؤم هاك هاهنا هب هذا هذه هكذا هل هلم هلا هم هما هن هنا هناك هنالك هو هي هيا هيت هيا هؤلاء هاتان هاتين هاته هاتي هج هذا هذان هذين هذه هذي هيهات وا واحد واضاف واضافت واكد وان واها واوضح وراءك وفي وقال وقالت وقد وقف وكان وكانت ولا ولم ومن وهو وهي ويكان وي وشكان يكون يمكن يوم ايان".split(" ")),e.Pipeline.registerFunction(e.ar.stopWordFilter,"stopWordFilter-ar")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.da.min.js b/assets/javascripts/lunr/min/lunr.da.min.js new file mode 100644 index 00000000..b9d85098 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.da.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Danish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.de.min.js b/assets/javascripts/lunr/min/lunr.de.min.js new file mode 100644 index 00000000..f3b5c108 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.de.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m<d&&(m=d),s()||(l=v.cursor)))}function o(){for(var e,r;;){if(r=v.cursor,v.bra=r,!(e=v.find_among(h,6)))return;switch(v.ket=v.cursor,e){case 1:v.slice_from("y");break;case 2:case 5:v.slice_from("u");break;case 3:v.slice_from("a");break;case 4:v.slice_from("o");break;case 6:if(v.cursor>=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.du.min.js b/assets/javascripts/lunr/min/lunr.du.min.js new file mode 100644 index 00000000..49a0f3f0 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.du.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.es.min.js b/assets/javascripts/lunr/min/lunr.es.min.js new file mode 100644 index 00000000..2989d342 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.es.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Spanish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=function(){var s=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(){if(A.out_grouping(x,97,252)){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}return!0}function n(){if(A.in_grouping(x,97,252)){var s=A.cursor;if(e()){if(A.cursor=s,!A.in_grouping(x,97,252))return!0;for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}}return!1}return!0}function i(){var s,r=A.cursor;if(n()){if(A.cursor=r,!A.out_grouping(x,97,252))return;if(s=A.cursor,e()){if(A.cursor=s,!A.in_grouping(x,97,252)||A.cursor>=A.limit)return;A.cursor++}}g=A.cursor}function a(){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}return!0}function t(){var e=A.cursor;g=A.limit,p=g,v=g,i(),A.cursor=e,a()&&(p=A.cursor,a()&&(v=A.cursor))}function o(){for(var e;;){if(A.bra=A.cursor,e=A.find_among(k,6))switch(A.ket=A.cursor,e){case 1:A.slice_from("a");continue;case 2:A.slice_from("e");continue;case 3:A.slice_from("i");continue;case 4:A.slice_from("o");continue;case 5:A.slice_from("u");continue;case 6:if(A.cursor>=A.limit)break;A.cursor++;continue}break}}function u(){return g<=A.cursor}function w(){return p<=A.cursor}function c(){return v<=A.cursor}function m(){var e;if(A.ket=A.cursor,A.find_among_b(y,13)&&(A.bra=A.cursor,(e=A.find_among_b(q,11))&&u()))switch(e){case 1:A.bra=A.cursor,A.slice_from("iendo");break;case 2:A.bra=A.cursor,A.slice_from("ando");break;case 3:A.bra=A.cursor,A.slice_from("ar");break;case 4:A.bra=A.cursor,A.slice_from("er");break;case 5:A.bra=A.cursor,A.slice_from("ir");break;case 6:A.slice_del();break;case 7:A.eq_s_b(1,"u")&&A.slice_del()}}function l(e,s){if(!c())return!0;A.slice_del(),A.ket=A.cursor;var r=A.find_among_b(e,s);return r&&(A.bra=A.cursor,1==r&&c()&&A.slice_del()),!1}function d(e){return!c()||(A.slice_del(),A.ket=A.cursor,A.eq_s_b(2,e)&&(A.bra=A.cursor,c()&&A.slice_del()),!1)}function b(){var e;if(A.ket=A.cursor,e=A.find_among_b(S,46)){switch(A.bra=A.cursor,e){case 1:if(!c())return!1;A.slice_del();break;case 2:if(d("ic"))return!1;break;case 3:if(!c())return!1;A.slice_from("log");break;case 4:if(!c())return!1;A.slice_from("u");break;case 5:if(!c())return!1;A.slice_from("ente");break;case 6:if(!w())return!1;A.slice_del(),A.ket=A.cursor,e=A.find_among_b(C,4),e&&(A.bra=A.cursor,c()&&(A.slice_del(),1==e&&(A.ket=A.cursor,A.eq_s_b(2,"at")&&(A.bra=A.cursor,c()&&A.slice_del()))));break;case 7:if(l(P,3))return!1;break;case 8:if(l(F,3))return!1;break;case 9:if(d("at"))return!1}return!0}return!1}function f(){var e,s;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(W,12),A.limit_backward=s,e)){if(A.bra=A.cursor,1==e){if(!A.eq_s_b(1,"u"))return!1;A.slice_del()}return!0}return!1}function _(){var e,s,r,n;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(L,96),A.limit_backward=s,e))switch(A.bra=A.cursor,e){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"u")?(n=A.limit-A.cursor,A.eq_s_b(1,"g")?A.cursor=A.limit-n:A.cursor=A.limit-r):A.cursor=A.limit-r,A.bra=A.cursor;case 2:A.slice_del()}}function h(){var e,s;if(A.ket=A.cursor,e=A.find_among_b(z,8))switch(A.bra=A.cursor,e){case 1:u()&&A.slice_del();break;case 2:u()&&(A.slice_del(),A.ket=A.cursor,A.eq_s_b(1,"u")&&(A.bra=A.cursor,s=A.limit-A.cursor,A.eq_s_b(1,"g")&&(A.cursor=A.limit-s,u()&&A.slice_del())))}}var v,p,g,k=[new s("",-1,6),new s("á",0,1),new s("é",0,2),new s("í",0,3),new s("ó",0,4),new s("ú",0,5)],y=[new s("la",-1,-1),new s("sela",0,-1),new s("le",-1,-1),new s("me",-1,-1),new s("se",-1,-1),new s("lo",-1,-1),new s("selo",5,-1),new s("las",-1,-1),new s("selas",7,-1),new s("les",-1,-1),new s("los",-1,-1),new s("selos",10,-1),new s("nos",-1,-1)],q=[new s("ando",-1,6),new s("iendo",-1,6),new s("yendo",-1,7),new s("ándo",-1,2),new s("iéndo",-1,1),new s("ar",-1,6),new s("er",-1,6),new s("ir",-1,6),new s("ár",-1,3),new s("ér",-1,4),new s("ír",-1,5)],C=[new s("ic",-1,-1),new s("ad",-1,-1),new s("os",-1,-1),new s("iv",-1,1)],P=[new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,1)],F=[new s("ic",-1,1),new s("abil",-1,1),new s("iv",-1,1)],S=[new s("ica",-1,1),new s("ancia",-1,2),new s("encia",-1,5),new s("adora",-1,2),new s("osa",-1,1),new s("ista",-1,1),new s("iva",-1,9),new s("anza",-1,1),new s("logía",-1,3),new s("idad",-1,8),new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,2),new s("mente",-1,7),new s("amente",13,6),new s("ación",-1,2),new s("ución",-1,4),new s("ico",-1,1),new s("ismo",-1,1),new s("oso",-1,1),new s("amiento",-1,1),new s("imiento",-1,1),new s("ivo",-1,9),new s("ador",-1,2),new s("icas",-1,1),new s("ancias",-1,2),new s("encias",-1,5),new s("adoras",-1,2),new s("osas",-1,1),new s("istas",-1,1),new s("ivas",-1,9),new s("anzas",-1,1),new s("logías",-1,3),new s("idades",-1,8),new s("ables",-1,1),new s("ibles",-1,1),new s("aciones",-1,2),new s("uciones",-1,4),new s("adores",-1,2),new s("antes",-1,2),new s("icos",-1,1),new s("ismos",-1,1),new s("osos",-1,1),new s("amientos",-1,1),new s("imientos",-1,1),new s("ivos",-1,9)],W=[new s("ya",-1,1),new s("ye",-1,1),new s("yan",-1,1),new s("yen",-1,1),new s("yeron",-1,1),new s("yendo",-1,1),new s("yo",-1,1),new s("yas",-1,1),new s("yes",-1,1),new s("yais",-1,1),new s("yamos",-1,1),new s("yó",-1,1)],L=[new s("aba",-1,2),new s("ada",-1,2),new s("ida",-1,2),new s("ara",-1,2),new s("iera",-1,2),new s("ía",-1,2),new s("aría",5,2),new s("ería",5,2),new s("iría",5,2),new s("ad",-1,2),new s("ed",-1,2),new s("id",-1,2),new s("ase",-1,2),new s("iese",-1,2),new s("aste",-1,2),new s("iste",-1,2),new s("an",-1,2),new s("aban",16,2),new s("aran",16,2),new s("ieran",16,2),new s("ían",16,2),new s("arían",20,2),new s("erían",20,2),new s("irían",20,2),new s("en",-1,1),new s("asen",24,2),new s("iesen",24,2),new s("aron",-1,2),new s("ieron",-1,2),new s("arán",-1,2),new s("erán",-1,2),new s("irán",-1,2),new s("ado",-1,2),new s("ido",-1,2),new s("ando",-1,2),new s("iendo",-1,2),new s("ar",-1,2),new s("er",-1,2),new s("ir",-1,2),new s("as",-1,2),new s("abas",39,2),new s("adas",39,2),new s("idas",39,2),new s("aras",39,2),new s("ieras",39,2),new s("ías",39,2),new s("arías",45,2),new s("erías",45,2),new s("irías",45,2),new s("es",-1,1),new s("ases",49,2),new s("ieses",49,2),new s("abais",-1,2),new s("arais",-1,2),new s("ierais",-1,2),new s("íais",-1,2),new s("aríais",55,2),new s("eríais",55,2),new s("iríais",55,2),new s("aseis",-1,2),new s("ieseis",-1,2),new s("asteis",-1,2),new s("isteis",-1,2),new s("áis",-1,2),new s("éis",-1,1),new s("aréis",64,2),new s("eréis",64,2),new s("iréis",64,2),new s("ados",-1,2),new s("idos",-1,2),new s("amos",-1,2),new s("ábamos",70,2),new s("áramos",70,2),new s("iéramos",70,2),new s("íamos",70,2),new s("aríamos",74,2),new s("eríamos",74,2),new s("iríamos",74,2),new s("emos",-1,1),new s("aremos",78,2),new s("eremos",78,2),new s("iremos",78,2),new s("ásemos",78,2),new s("iésemos",78,2),new s("imos",-1,2),new s("arás",-1,2),new s("erás",-1,2),new s("irás",-1,2),new s("ís",-1,2),new s("ará",-1,2),new s("erá",-1,2),new s("irá",-1,2),new s("aré",-1,2),new s("eré",-1,2),new s("iré",-1,2),new s("ió",-1,2)],z=[new s("a",-1,1),new s("e",-1,2),new s("o",-1,1),new s("os",-1,1),new s("á",-1,1),new s("é",-1,2),new s("í",-1,1),new s("ó",-1,1)],x=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],A=new r;this.setCurrent=function(e){A.setCurrent(e)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return t(),A.limit_backward=e,A.cursor=A.limit,m(),A.cursor=A.limit,b()||(A.cursor=A.limit,f()||(A.cursor=A.limit,_())),A.cursor=A.limit,h(),A.cursor=A.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fi.min.js b/assets/javascripts/lunr/min/lunr.fi.min.js new file mode 100644 index 00000000..29f5dfce --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fi.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=function(){var e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){function i(){f=A.limit,d=f,n()||(f=A.cursor,n()||(d=A.cursor))}function n(){for(var i;;){if(i=A.cursor,A.in_grouping(W,97,246))break;if(A.cursor=i,i>=A.limit)return!0;A.cursor++}for(A.cursor=i;!A.out_grouping(W,97,246);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}function t(){return d<=A.cursor}function s(){var i,e;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(h,10)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.in_grouping_b(x,97,246))return;break;case 2:if(!t())return}A.slice_del()}else A.limit_backward=e}function o(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(v,9))switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"k")||(A.cursor=A.limit-r,A.slice_del());break;case 2:A.slice_del(),A.ket=A.cursor,A.eq_s_b(3,"kse")&&(A.bra=A.cursor,A.slice_from("ksi"));break;case 3:A.slice_del();break;case 4:A.find_among_b(p,6)&&A.slice_del();break;case 5:A.find_among_b(g,6)&&A.slice_del();break;case 6:A.find_among_b(j,2)&&A.slice_del()}else A.limit_backward=e}function l(){return A.find_among_b(q,7)}function a(){return A.eq_s_b(1,"i")&&A.in_grouping_b(L,97,246)}function u(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(C,30)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.eq_s_b(1,"a"))return;break;case 2:case 9:if(!A.eq_s_b(1,"e"))return;break;case 3:if(!A.eq_s_b(1,"i"))return;break;case 4:if(!A.eq_s_b(1,"o"))return;break;case 5:if(!A.eq_s_b(1,"ä"))return;break;case 6:if(!A.eq_s_b(1,"ö"))return;break;case 7:if(r=A.limit-A.cursor,!l()&&(A.cursor=A.limit-r,!A.eq_s_b(2,"ie"))){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward){A.cursor=A.limit-r;break}A.cursor--,A.bra=A.cursor;break;case 8:if(!A.in_grouping_b(W,97,246)||!A.out_grouping_b(W,97,246))return}A.slice_del(),k=!0}else A.limit_backward=e}function c(){var i,e,r;if(A.cursor>=d)if(e=A.limit_backward,A.limit_backward=d,A.ket=A.cursor,i=A.find_among_b(P,14)){if(A.bra=A.cursor,A.limit_backward=e,1==i){if(r=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-r}A.slice_del()}else A.limit_backward=e}function m(){var i;A.cursor>=f&&(i=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.find_among_b(F,2)?(A.bra=A.cursor,A.limit_backward=i,A.slice_del()):A.limit_backward=i)}function w(){var i,e,r,n,t,s;if(A.cursor>=f){if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.eq_s_b(1,"t")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.in_grouping_b(W,97,246)&&(A.cursor=A.limit-r,A.slice_del(),A.limit_backward=e,n=A.limit-A.cursor,A.cursor>=d&&(A.cursor=d,t=A.limit_backward,A.limit_backward=A.cursor,A.cursor=A.limit-n,A.ket=A.cursor,i=A.find_among_b(S,2))))){if(A.bra=A.cursor,A.limit_backward=t,1==i){if(s=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-s}return void A.slice_del()}A.limit_backward=e}}function _(){var i,e,r,n;if(A.cursor>=f){for(i=A.limit_backward,A.limit_backward=f,e=A.limit-A.cursor,l()&&(A.cursor=A.limit-e,A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.in_grouping_b(y,97,228)&&(A.bra=A.cursor,A.out_grouping_b(W,97,246)&&A.slice_del()),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"j")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.eq_s_b(1,"o")?A.slice_del():(A.cursor=A.limit-r,A.eq_s_b(1,"u")&&A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"o")&&(A.bra=A.cursor,A.eq_s_b(1,"j")&&A.slice_del()),A.cursor=A.limit-e,A.limit_backward=i;;){if(n=A.limit-A.cursor,A.out_grouping_b(W,97,246)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,b=A.slice_to(),A.eq_v_b(b)&&A.slice_del())}}var k,b,d,f,h=[new e("pa",-1,1),new e("sti",-1,2),new e("kaan",-1,1),new e("han",-1,1),new e("kin",-1,1),new e("hän",-1,1),new e("kään",-1,1),new e("ko",-1,1),new e("pä",-1,1),new e("kö",-1,1)],p=[new e("lla",-1,-1),new e("na",-1,-1),new e("ssa",-1,-1),new e("ta",-1,-1),new e("lta",3,-1),new e("sta",3,-1)],g=[new e("llä",-1,-1),new e("nä",-1,-1),new e("ssä",-1,-1),new e("tä",-1,-1),new e("ltä",3,-1),new e("stä",3,-1)],j=[new e("lle",-1,-1),new e("ine",-1,-1)],v=[new e("nsa",-1,3),new e("mme",-1,3),new e("nne",-1,3),new e("ni",-1,2),new e("si",-1,1),new e("an",-1,4),new e("en",-1,6),new e("än",-1,5),new e("nsä",-1,3)],q=[new e("aa",-1,-1),new e("ee",-1,-1),new e("ii",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1),new e("ää",-1,-1),new e("öö",-1,-1)],C=[new e("a",-1,8),new e("lla",0,-1),new e("na",0,-1),new e("ssa",0,-1),new e("ta",0,-1),new e("lta",4,-1),new e("sta",4,-1),new e("tta",4,9),new e("lle",-1,-1),new e("ine",-1,-1),new e("ksi",-1,-1),new e("n",-1,7),new e("han",11,1),new e("den",11,-1,a),new e("seen",11,-1,l),new e("hen",11,2),new e("tten",11,-1,a),new e("hin",11,3),new e("siin",11,-1,a),new e("hon",11,4),new e("hän",11,5),new e("hön",11,6),new e("ä",-1,8),new e("llä",22,-1),new e("nä",22,-1),new e("ssä",22,-1),new e("tä",22,-1),new e("ltä",26,-1),new e("stä",26,-1),new e("ttä",26,9)],P=[new e("eja",-1,-1),new e("mma",-1,1),new e("imma",1,-1),new e("mpa",-1,1),new e("impa",3,-1),new e("mmi",-1,1),new e("immi",5,-1),new e("mpi",-1,1),new e("impi",7,-1),new e("ejä",-1,-1),new e("mmä",-1,1),new e("immä",10,-1),new e("mpä",-1,1),new e("impä",12,-1)],F=[new e("i",-1,-1),new e("j",-1,-1)],S=[new e("mma",-1,1),new e("imma",0,-1)],y=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],W=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],x=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],A=new r;this.setCurrent=function(i){A.setCurrent(i)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return i(),k=!1,A.limit_backward=e,A.cursor=A.limit,s(),A.cursor=A.limit,o(),A.cursor=A.limit,u(),A.cursor=A.limit,c(),A.cursor=A.limit,k?(m(),A.cursor=A.limit):(A.cursor=A.limit,w(),A.cursor=A.limit),_(),!0}};return function(i){return"function"==typeof i.update?i.update(function(i){return n.setCurrent(i),n.stem(),n.getCurrent()}):(n.setCurrent(i),n.stem(),n.getCurrent())}}(),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fr.min.js b/assets/javascripts/lunr/min/lunr.fr.min.js new file mode 100644 index 00000000..68cd0094 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,s){return!(!W.eq_s(1,e)||(W.ket=W.cursor,!W.in_grouping(F,97,251)))&&(W.slice_from(r),W.cursor=s,!0)}function i(e,r,s){return!!W.eq_s(1,e)&&(W.ket=W.cursor,W.slice_from(r),W.cursor=s,!0)}function n(){for(var r,s;;){if(r=W.cursor,W.in_grouping(F,97,251)){if(W.bra=W.cursor,s=W.cursor,e("u","U",r))continue;if(W.cursor=s,e("i","I",r))continue;if(W.cursor=s,i("y","Y",r))continue}if(W.cursor=r,W.bra=r,!e("y","Y",r)){if(W.cursor=r,W.eq_s(1,"q")&&(W.bra=W.cursor,i("u","U",r)))continue;if(W.cursor=r,r>=W.limit)return;W.cursor++}}}function t(){for(;!W.in_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}for(;!W.out_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}return!1}function u(){var e=W.cursor;if(q=W.limit,g=q,p=q,W.in_grouping(F,97,251)&&W.in_grouping(F,97,251)&&W.cursor<W.limit)W.cursor++;else if(W.cursor=e,!W.find_among(v,3)){W.cursor=e;do{if(W.cursor>=W.limit){W.cursor=q;break}W.cursor++}while(!W.in_grouping(F,97,251))}q=W.cursor,W.cursor=e,t()||(g=W.cursor,t()||(p=W.cursor))}function o(){for(var e,r;;){if(r=W.cursor,W.bra=r,!(e=W.find_among(h,4)))break;switch(W.ket=W.cursor,e){case 1:W.slice_from("i");break;case 2:W.slice_from("u");break;case 3:W.slice_from("y");break;case 4:if(W.cursor>=W.limit)return;W.cursor++}}}function c(){return q<=W.cursor}function a(){return g<=W.cursor}function l(){return p<=W.cursor}function w(){var e,r;if(W.ket=W.cursor,e=W.find_among_b(C,43)){switch(W.bra=W.cursor,e){case 1:if(!l())return!1;W.slice_del();break;case 2:if(!l())return!1;W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")&&(W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU"));break;case 3:if(!l())return!1;W.slice_from("log");break;case 4:if(!l())return!1;W.slice_from("u");break;case 5:if(!l())return!1;W.slice_from("ent");break;case 6:if(!c())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(z,6))switch(W.bra=W.cursor,e){case 1:l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&W.slice_del()));break;case 2:l()?W.slice_del():a()&&W.slice_from("eux");break;case 3:l()&&W.slice_del();break;case 4:c()&&W.slice_from("i")}break;case 7:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(y,3))switch(W.bra=W.cursor,e){case 1:l()?W.slice_del():W.slice_from("abl");break;case 2:l()?W.slice_del():W.slice_from("iqU");break;case 3:l()&&W.slice_del()}break;case 8:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")))){W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU");break}break;case 9:W.slice_from("eau");break;case 10:if(!a())return!1;W.slice_from("al");break;case 11:if(l())W.slice_del();else{if(!a())return!1;W.slice_from("eux")}break;case 12:if(!a()||!W.out_grouping_b(F,97,251))return!1;W.slice_del();break;case 13:return c()&&W.slice_from("ant"),!1;case 14:return c()&&W.slice_from("ent"),!1;case 15:return r=W.limit-W.cursor,W.in_grouping_b(F,97,251)&&c()&&(W.cursor=W.limit-r,W.slice_del()),!1}return!0}return!1}function f(){var e,r;if(W.cursor<q)return!1;if(r=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,!(e=W.find_among_b(x,35)))return W.limit_backward=r,!1;if(W.bra=W.cursor,1==e){if(!W.out_grouping_b(F,97,251))return W.limit_backward=r,!1;W.slice_del()}return W.limit_backward=r,!0}function m(){var e,r,s;if(W.cursor<q)return!1;if(r=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,!(e=W.find_among_b(I,38)))return W.limit_backward=r,!1;switch(W.bra=W.cursor,e){case 1:if(!l())return W.limit_backward=r,!1;W.slice_del();break;case 2:W.slice_del();break;case 3:W.slice_del(),s=W.limit-W.cursor,W.ket=W.cursor,W.eq_s_b(1,"e")?(W.bra=W.cursor,W.slice_del()):W.cursor=W.limit-s}return W.limit_backward=r,!0}function _(){var e,r,s,i,n=W.limit-W.cursor;if(W.ket=W.cursor,W.eq_s_b(1,"s")?(W.bra=W.cursor,r=W.limit-W.cursor,W.out_grouping_b(S,97,232)?(W.cursor=W.limit-r,W.slice_del()):W.cursor=W.limit-n):W.cursor=W.limit-n,W.cursor>=q){if(s=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,e=W.find_among_b(P,7))switch(W.bra=W.cursor,e){case 1:if(l()){if(i=W.limit-W.cursor,!W.eq_s_b(1,"s")&&(W.cursor=W.limit-i,!W.eq_s_b(1,"t")))break;W.slice_del()}break;case 2:W.slice_from("i");break;case 3:W.slice_del();break;case 4:W.eq_s_b(2,"gu")&&W.slice_del()}W.limit_backward=s}}function b(){var e=W.limit-W.cursor;W.find_among_b(U,5)&&(W.cursor=W.limit-e,W.ket=W.cursor,W.cursor>W.limit_backward&&(W.cursor--,W.bra=W.cursor,W.slice_del()))}function d(){for(var e,r=1;W.out_grouping_b(F,97,251);)r--;if(r<=0){if(W.ket=W.cursor,e=W.limit-W.cursor,!W.eq_s_b(1,"é")&&(W.cursor=W.limit-e,!W.eq_s_b(1,"è")))return;W.bra=W.cursor,W.slice_from("e")}}function k(){if(!w()&&(W.cursor=W.limit,!f()&&(W.cursor=W.limit,!m())))return W.cursor=W.limit,void _();W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"Y")?(W.bra=W.cursor,W.slice_from("i")):(W.cursor=W.limit,W.eq_s_b(1,"ç")&&(W.bra=W.cursor,W.slice_from("c")))}var p,g,q,v=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],h=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],z=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],y=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],C=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],x=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],I=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],P=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],U=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],F=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],S=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],W=new s;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){var e=W.cursor;return n(),W.cursor=e,u(),W.limit_backward=e,W.cursor=W.limit,k(),W.cursor=W.limit,b(),W.cursor=W.limit,d(),W.cursor=W.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hi.min.js b/assets/javascripts/lunr/min/lunr.hi.min.js new file mode 100644 index 00000000..7dbc4140 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hu.min.js b/assets/javascripts/lunr/min/lunr.hu.min.js new file mode 100644 index 00000000..ed9d909f --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hu.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,n=L.cursor;if(d=L.limit,L.in_grouping(W,97,252))for(;;){if(e=L.cursor,L.out_grouping(W,97,252))return L.cursor=e,L.find_among(g,8)||(L.cursor=e,e<L.limit&&L.cursor++),void(d=L.cursor);if(L.cursor=e,e>=L.limit)return void(d=e);L.cursor++}if(L.cursor=n,L.out_grouping(W,97,252)){for(;!L.in_grouping(W,97,252);){if(L.cursor>=L.limit)return;L.cursor++}d=L.cursor}}function i(){return d<=L.cursor}function a(){var e;if(L.ket=L.cursor,(e=L.find_among_b(h,2))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e")}}function t(){var e=L.limit-L.cursor;return!!L.find_among_b(p,23)&&(L.cursor=L.limit-e,!0)}function s(){if(L.cursor>L.limit_backward){L.cursor--,L.ket=L.cursor;var e=L.cursor-1;L.limit_backward<=e&&e<=L.limit&&(L.cursor=e,L.bra=e,L.slice_del())}}function c(){var e;if(L.ket=L.cursor,(e=L.find_among_b(_,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function o(){L.ket=L.cursor,L.find_among_b(v,44)&&(L.bra=L.cursor,i()&&(L.slice_del(),a()))}function w(){var e;if(L.ket=L.cursor,(e=L.find_among_b(z,3))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("e");break;case 2:case 3:L.slice_from("a")}}function l(){var e;if(L.ket=L.cursor,(e=L.find_among_b(y,6))&&(L.bra=L.cursor,i()))switch(e){case 1:case 2:L.slice_del();break;case 3:L.slice_from("a");break;case 4:L.slice_from("e")}}function u(){var e;if(L.ket=L.cursor,(e=L.find_among_b(j,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function m(){var e;if(L.ket=L.cursor,(e=L.find_among_b(C,7))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:L.slice_del()}}function k(){var e;if(L.ket=L.cursor,(e=L.find_among_b(P,12))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 9:L.slice_del();break;case 2:case 5:case 8:L.slice_from("e");break;case 3:case 6:L.slice_from("a")}}function f(){var e;if(L.ket=L.cursor,(e=L.find_among_b(F,31))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:L.slice_del();break;case 2:case 5:case 10:case 14:case 19:L.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:L.slice_from("e")}}function b(){var e;if(L.ket=L.cursor,(e=L.find_among_b(S,42))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:L.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:L.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:L.slice_from("e")}}var d,g=[new n("cs",-1,-1),new n("dzs",-1,-1),new n("gy",-1,-1),new n("ly",-1,-1),new n("ny",-1,-1),new n("sz",-1,-1),new n("ty",-1,-1),new n("zs",-1,-1)],h=[new n("á",-1,1),new n("é",-1,2)],p=[new n("bb",-1,-1),new n("cc",-1,-1),new n("dd",-1,-1),new n("ff",-1,-1),new n("gg",-1,-1),new n("jj",-1,-1),new n("kk",-1,-1),new n("ll",-1,-1),new n("mm",-1,-1),new n("nn",-1,-1),new n("pp",-1,-1),new n("rr",-1,-1),new n("ccs",-1,-1),new n("ss",-1,-1),new n("zzs",-1,-1),new n("tt",-1,-1),new n("vv",-1,-1),new n("ggy",-1,-1),new n("lly",-1,-1),new n("nny",-1,-1),new n("tty",-1,-1),new n("ssz",-1,-1),new n("zz",-1,-1)],_=[new n("al",-1,1),new n("el",-1,2)],v=[new n("ba",-1,-1),new n("ra",-1,-1),new n("be",-1,-1),new n("re",-1,-1),new n("ig",-1,-1),new n("nak",-1,-1),new n("nek",-1,-1),new n("val",-1,-1),new n("vel",-1,-1),new n("ul",-1,-1),new n("nál",-1,-1),new n("nél",-1,-1),new n("ból",-1,-1),new n("ról",-1,-1),new n("tól",-1,-1),new n("bõl",-1,-1),new n("rõl",-1,-1),new n("tõl",-1,-1),new n("ül",-1,-1),new n("n",-1,-1),new n("an",19,-1),new n("ban",20,-1),new n("en",19,-1),new n("ben",22,-1),new n("képpen",22,-1),new n("on",19,-1),new n("ön",19,-1),new n("képp",-1,-1),new n("kor",-1,-1),new n("t",-1,-1),new n("at",29,-1),new n("et",29,-1),new n("ként",29,-1),new n("anként",32,-1),new n("enként",32,-1),new n("onként",32,-1),new n("ot",29,-1),new n("ért",29,-1),new n("öt",29,-1),new n("hez",-1,-1),new n("hoz",-1,-1),new n("höz",-1,-1),new n("vá",-1,-1),new n("vé",-1,-1)],z=[new n("án",-1,2),new n("én",-1,1),new n("ánként",-1,3)],y=[new n("stul",-1,2),new n("astul",0,1),new n("ástul",0,3),new n("stül",-1,2),new n("estül",3,1),new n("éstül",3,4)],j=[new n("á",-1,1),new n("é",-1,2)],C=[new n("k",-1,7),new n("ak",0,4),new n("ek",0,6),new n("ok",0,5),new n("ák",0,1),new n("ék",0,2),new n("ök",0,3)],P=[new n("éi",-1,7),new n("áéi",0,6),new n("ééi",0,5),new n("é",-1,9),new n("ké",3,4),new n("aké",4,1),new n("eké",4,1),new n("oké",4,1),new n("áké",4,3),new n("éké",4,2),new n("öké",4,1),new n("éé",3,8)],F=[new n("a",-1,18),new n("ja",0,17),new n("d",-1,16),new n("ad",2,13),new n("ed",2,13),new n("od",2,13),new n("ád",2,14),new n("éd",2,15),new n("öd",2,13),new n("e",-1,18),new n("je",9,17),new n("nk",-1,4),new n("unk",11,1),new n("ánk",11,2),new n("énk",11,3),new n("ünk",11,1),new n("uk",-1,8),new n("juk",16,7),new n("ájuk",17,5),new n("ük",-1,8),new n("jük",19,7),new n("éjük",20,6),new n("m",-1,12),new n("am",22,9),new n("em",22,9),new n("om",22,9),new n("ám",22,10),new n("ém",22,11),new n("o",-1,18),new n("á",-1,19),new n("é",-1,20)],S=[new n("id",-1,10),new n("aid",0,9),new n("jaid",1,6),new n("eid",0,9),new n("jeid",3,6),new n("áid",0,7),new n("éid",0,8),new n("i",-1,15),new n("ai",7,14),new n("jai",8,11),new n("ei",7,14),new n("jei",10,11),new n("ái",7,12),new n("éi",7,13),new n("itek",-1,24),new n("eitek",14,21),new n("jeitek",15,20),new n("éitek",14,23),new n("ik",-1,29),new n("aik",18,26),new n("jaik",19,25),new n("eik",18,26),new n("jeik",21,25),new n("áik",18,27),new n("éik",18,28),new n("ink",-1,20),new n("aink",25,17),new n("jaink",26,16),new n("eink",25,17),new n("jeink",28,16),new n("áink",25,18),new n("éink",25,19),new n("aitok",-1,21),new n("jaitok",32,20),new n("áitok",-1,22),new n("im",-1,5),new n("aim",35,4),new n("jaim",36,1),new n("eim",35,4),new n("jeim",38,1),new n("áim",35,2),new n("éim",35,3)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var n=L.cursor;return e(),L.limit_backward=n,L.cursor=L.limit,c(),L.cursor=L.limit,o(),L.cursor=L.limit,w(),L.cursor=L.limit,l(),L.cursor=L.limit,u(),L.cursor=L.limit,k(),L.cursor=L.limit,f(),L.cursor=L.limit,b(),L.cursor=L.limit,m(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.it.min.js b/assets/javascripts/lunr/min/lunr.it.min.js new file mode 100644 index 00000000..344b6a3c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.it.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!x.eq_s(1,e)||(x.ket=x.cursor,!x.in_grouping(L,97,249)))&&(x.slice_from(r),x.cursor=n,!0)}function i(){for(var r,n,i,o,t=x.cursor;;){if(x.bra=x.cursor,r=x.find_among(h,7))switch(x.ket=x.cursor,r){case 1:x.slice_from("à");continue;case 2:x.slice_from("è");continue;case 3:x.slice_from("ì");continue;case 4:x.slice_from("ò");continue;case 5:x.slice_from("ù");continue;case 6:x.slice_from("qU");continue;case 7:if(x.cursor>=x.limit)break;x.cursor++;continue}break}for(x.cursor=t;;)for(n=x.cursor;;){if(i=x.cursor,x.in_grouping(L,97,249)){if(x.bra=x.cursor,o=x.cursor,e("u","U",i))break;if(x.cursor=o,e("i","I",i))break}if(x.cursor=i,x.cursor>=x.limit)return void(x.cursor=n);x.cursor++}}function o(e){if(x.cursor=e,!x.in_grouping(L,97,249))return!1;for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function t(){if(x.in_grouping(L,97,249)){var e=x.cursor;if(x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return o(e);x.cursor++}return!0}return o(e)}return!1}function s(){var e,r=x.cursor;if(!t()){if(x.cursor=r,!x.out_grouping(L,97,249))return;if(e=x.cursor,x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return x.cursor=e,void(x.in_grouping(L,97,249)&&x.cursor<x.limit&&x.cursor++);x.cursor++}return void(k=x.cursor)}if(x.cursor=e,!x.in_grouping(L,97,249)||x.cursor>=x.limit)return;x.cursor++}k=x.cursor}function a(){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function u(){var e=x.cursor;k=x.limit,p=k,g=k,s(),x.cursor=e,a()&&(p=x.cursor,a()&&(g=x.cursor))}function c(){for(var e;;){if(x.bra=x.cursor,!(e=x.find_among(q,3)))break;switch(x.ket=x.cursor,e){case 1:x.slice_from("i");break;case 2:x.slice_from("u");break;case 3:if(x.cursor>=x.limit)return;x.cursor++}}}function w(){return k<=x.cursor}function l(){return p<=x.cursor}function m(){return g<=x.cursor}function f(){var e;if(x.ket=x.cursor,x.find_among_b(C,37)&&(x.bra=x.cursor,(e=x.find_among_b(z,5))&&w()))switch(e){case 1:x.slice_del();break;case 2:x.slice_from("e")}}function v(){var e;if(x.ket=x.cursor,!(e=x.find_among_b(S,51)))return!1;switch(x.bra=x.cursor,e){case 1:if(!m())return!1;x.slice_del();break;case 2:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del());break;case 3:if(!m())return!1;x.slice_from("log");break;case 4:if(!m())return!1;x.slice_from("u");break;case 5:if(!m())return!1;x.slice_from("ente");break;case 6:if(!w())return!1;x.slice_del();break;case 7:if(!l())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(P,4),e&&(x.bra=x.cursor,m()&&(x.slice_del(),1==e&&(x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&x.slice_del()))));break;case 8:if(!m())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(F,3),e&&(x.bra=x.cursor,1==e&&m()&&x.slice_del());break;case 9:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del())))}return!0}function b(){var e,r;x.cursor>=k&&(r=x.limit_backward,x.limit_backward=k,x.ket=x.cursor,e=x.find_among_b(W,87),e&&(x.bra=x.cursor,1==e&&x.slice_del()),x.limit_backward=r)}function d(){var e=x.limit-x.cursor;if(x.ket=x.cursor,x.in_grouping_b(y,97,242)&&(x.bra=x.cursor,w()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(1,"i")&&(x.bra=x.cursor,w()))))return void x.slice_del();x.cursor=x.limit-e}function _(){d(),x.ket=x.cursor,x.eq_s_b(1,"h")&&(x.bra=x.cursor,x.in_grouping_b(U,99,103)&&w()&&x.slice_del())}var g,p,k,h=[new r("",-1,7),new r("qu",0,6),new r("á",0,1),new r("é",0,2),new r("í",0,3),new r("ó",0,4),new r("ú",0,5)],q=[new r("",-1,3),new r("I",0,1),new r("U",0,2)],C=[new r("la",-1,-1),new r("cela",0,-1),new r("gliela",0,-1),new r("mela",0,-1),new r("tela",0,-1),new r("vela",0,-1),new r("le",-1,-1),new r("cele",6,-1),new r("gliele",6,-1),new r("mele",6,-1),new r("tele",6,-1),new r("vele",6,-1),new r("ne",-1,-1),new r("cene",12,-1),new r("gliene",12,-1),new r("mene",12,-1),new r("sene",12,-1),new r("tene",12,-1),new r("vene",12,-1),new r("ci",-1,-1),new r("li",-1,-1),new r("celi",20,-1),new r("glieli",20,-1),new r("meli",20,-1),new r("teli",20,-1),new r("veli",20,-1),new r("gli",20,-1),new r("mi",-1,-1),new r("si",-1,-1),new r("ti",-1,-1),new r("vi",-1,-1),new r("lo",-1,-1),new r("celo",31,-1),new r("glielo",31,-1),new r("melo",31,-1),new r("telo",31,-1),new r("velo",31,-1)],z=[new r("ando",-1,1),new r("endo",-1,1),new r("ar",-1,2),new r("er",-1,2),new r("ir",-1,2)],P=[new r("ic",-1,-1),new r("abil",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],F=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],S=[new r("ica",-1,1),new r("logia",-1,3),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,9),new r("anza",-1,1),new r("enza",-1,5),new r("ice",-1,1),new r("atrice",7,1),new r("iche",-1,1),new r("logie",-1,3),new r("abile",-1,1),new r("ibile",-1,1),new r("usione",-1,4),new r("azione",-1,2),new r("uzione",-1,4),new r("atore",-1,2),new r("ose",-1,1),new r("ante",-1,1),new r("mente",-1,1),new r("amente",19,7),new r("iste",-1,1),new r("ive",-1,9),new r("anze",-1,1),new r("enze",-1,5),new r("ici",-1,1),new r("atrici",25,1),new r("ichi",-1,1),new r("abili",-1,1),new r("ibili",-1,1),new r("ismi",-1,1),new r("usioni",-1,4),new r("azioni",-1,2),new r("uzioni",-1,4),new r("atori",-1,2),new r("osi",-1,1),new r("anti",-1,1),new r("amenti",-1,6),new r("imenti",-1,6),new r("isti",-1,1),new r("ivi",-1,9),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,6),new r("imento",-1,6),new r("ivo",-1,9),new r("ità",-1,8),new r("istà",-1,1),new r("istè",-1,1),new r("istì",-1,1)],W=[new r("isca",-1,1),new r("enda",-1,1),new r("ata",-1,1),new r("ita",-1,1),new r("uta",-1,1),new r("ava",-1,1),new r("eva",-1,1),new r("iva",-1,1),new r("erebbe",-1,1),new r("irebbe",-1,1),new r("isce",-1,1),new r("ende",-1,1),new r("are",-1,1),new r("ere",-1,1),new r("ire",-1,1),new r("asse",-1,1),new r("ate",-1,1),new r("avate",16,1),new r("evate",16,1),new r("ivate",16,1),new r("ete",-1,1),new r("erete",20,1),new r("irete",20,1),new r("ite",-1,1),new r("ereste",-1,1),new r("ireste",-1,1),new r("ute",-1,1),new r("erai",-1,1),new r("irai",-1,1),new r("isci",-1,1),new r("endi",-1,1),new r("erei",-1,1),new r("irei",-1,1),new r("assi",-1,1),new r("ati",-1,1),new r("iti",-1,1),new r("eresti",-1,1),new r("iresti",-1,1),new r("uti",-1,1),new r("avi",-1,1),new r("evi",-1,1),new r("ivi",-1,1),new r("isco",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("Yamo",-1,1),new r("iamo",-1,1),new r("avamo",-1,1),new r("evamo",-1,1),new r("ivamo",-1,1),new r("eremo",-1,1),new r("iremo",-1,1),new r("assimo",-1,1),new r("ammo",-1,1),new r("emmo",-1,1),new r("eremmo",54,1),new r("iremmo",54,1),new r("immo",-1,1),new r("ano",-1,1),new r("iscano",58,1),new r("avano",58,1),new r("evano",58,1),new r("ivano",58,1),new r("eranno",-1,1),new r("iranno",-1,1),new r("ono",-1,1),new r("iscono",65,1),new r("arono",65,1),new r("erono",65,1),new r("irono",65,1),new r("erebbero",-1,1),new r("irebbero",-1,1),new r("assero",-1,1),new r("essero",-1,1),new r("issero",-1,1),new r("ato",-1,1),new r("ito",-1,1),new r("uto",-1,1),new r("avo",-1,1),new r("evo",-1,1),new r("ivo",-1,1),new r("ar",-1,1),new r("ir",-1,1),new r("erà",-1,1),new r("irà",-1,1),new r("erò",-1,1),new r("irò",-1,1)],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],y=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],U=[17],x=new n;this.setCurrent=function(e){x.setCurrent(e)},this.getCurrent=function(){return x.getCurrent()},this.stem=function(){var e=x.cursor;return i(),x.cursor=e,u(),x.limit_backward=e,x.cursor=x.limit,f(),x.cursor=x.limit,v()||(x.cursor=x.limit,b()),x.cursor=x.limit,_(),x.cursor=x.limit_backward,c(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ja.min.js b/assets/javascripts/lunr/min/lunr.ja.min.js new file mode 100644 index 00000000..5f254ebe --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ja.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.jp.min.js b/assets/javascripts/lunr/min/lunr.jp.min.js new file mode 100644 index 00000000..c055ebaf --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.jp.min.js @@ -0,0 +1 @@ +module.exports=require("./lunr.ja"); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ko.min.js b/assets/javascripts/lunr/min/lunr.ko.min.js new file mode 100644 index 00000000..749abfe0 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ko.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ko=function(){this.pipeline.reset(),this.pipeline.add(e.ko.trimmer,e.ko.stopWordFilter)},e.ko.wordCharacters="[A-Za-z가-a]",e.ko.trimmer=e.trimmerSupport.generateTrimmer(e.ko.wordCharacters),e.Pipeline.registerFunction(e.ko.trimmer,"trimmer-ko"),e.ko.stopWordFilter=e.generateStopWordFilter("아 휴 아이구 아이쿠 아이고 어 나 우리 저희 따라 의해 을 를 에 의 가 으로 로 에게 뿐이다 의거하여 근거하여 입각하여 기준으로 예하면 예를 들면 예를 들자면 저 소인 소생 저희 지말고 하지마 하지마라 다른 물론 또한 그리고 비길수 없다 해서는 안된다 뿐만 아니라 만이 아니다 만은 아니다 막론하고 관계없이 그치지 않다 그러나 그런데 하지만 든간에 논하지 않다 따지지 않다 설사 비록 더라도 아니면 만 못하다 하는 편이 낫다 불문하고 향하여 향해서 향하다 쪽으로 틈타 이용하여 타다 오르다 제외하고 이 외에 이 밖에 하여야 비로소 한다면 몰라도 외에도 이곳 여기 부터 기점으로 따라서 할 생각이다 하려고하다 이리하여 그리하여 그렇게 함으로써 하지만 일때 할때 앞에서 중에서 보는데서 으로써 로써 까지 해야한다 일것이다 반드시 할줄알다 할수있다 할수있어 임에 틀림없다 한다면 등 등등 제 겨우 단지 다만 할뿐 딩동 댕그 대해서 대하여 대하면 훨씬 얼마나 얼마만큼 얼마큼 남짓 여 얼마간 약간 다소 좀 조금 다수 몇 얼마 지만 하물며 또한 그러나 그렇지만 하지만 이외에도 대해 말하자면 뿐이다 다음에 반대로 반대로 말하자면 이와 반대로 바꾸어서 말하면 바꾸어서 한다면 만약 그렇지않으면 까악 툭 딱 삐걱거리다 보드득 비걱거리다 꽈당 응당 해야한다 에 가서 각 각각 여러분 각종 각자 제각기 하도록하다 와 과 그러므로 그래서 고로 한 까닭에 하기 때문에 거니와 이지만 대하여 관하여 관한 과연 실로 아니나다를가 생각한대로 진짜로 한적이있다 하곤하였다 하 하하 허허 아하 거바 와 오 왜 어째서 무엇때문에 어찌 하겠는가 무슨 어디 어느곳 더군다나 하물며 더욱이는 어느때 언제 야 이봐 어이 여보시오 흐흐 흥 휴 헉헉 헐떡헐떡 영차 여차 어기여차 끙끙 아야 앗 아야 콸콸 졸졸 좍좍 뚝뚝 주룩주룩 솨 우르르 그래도 또 그리고 바꾸어말하면 바꾸어말하자면 혹은 혹시 답다 및 그에 따르는 때가 되어 즉 지든지 설령 가령 하더라도 할지라도 일지라도 지든지 몇 거의 하마터면 인젠 이젠 된바에야 된이상 만큼\t어찌됏든 그위에 게다가 점에서 보아 비추어 보아 고려하면 하게될것이다 일것이다 비교적 좀 보다더 비하면 시키다 하게하다 할만하다 의해서 연이서 이어서 잇따라 뒤따라 뒤이어 결국 의지하여 기대여 통하여 자마자 더욱더 불구하고 얼마든지 마음대로 주저하지 않고 곧 즉시 바로 당장 하자마자 밖에 안된다 하면된다 그래 그렇지 요컨대 다시 말하자면 바꿔 말하면 즉 구체적으로 말하자면 시작하여 시초에 이상 허 헉 허걱 바와같이 해도좋다 해도된다 게다가 더구나 하물며 와르르 팍 퍽 펄렁 동안 이래 하고있었다 이었다 에서 로부터 까지 예하면 했어요 해요 함께 같이 더불어 마저 마저도 양자 모두 습니다 가까스로 하려고하다 즈음하여 다른 다른 방면으로 해봐요 습니까 했어요 말할것도 없고 무릎쓰고 개의치않고 하는것만 못하다 하는것이 낫다 매 매번 들 모 어느것 어느 로써 갖고말하자면 어디 어느쪽 어느것 어느해 어느 년도 라 해도 언젠가 어떤것 어느것 저기 저쪽 저것 그때 그럼 그러면 요만한걸 그래 그때 저것만큼 그저 이르기까지 할 줄 안다 할 힘이 있다 너 너희 당신 어찌 설마 차라리 할지언정 할지라도 할망정 할지언정 구토하다 게우다 토하다 메쓰겁다 옆사람 퉤 쳇 의거하여 근거하여 의해 따라 힘입어 그 다음 버금 두번째로 기타 첫번째로 나머지는 그중에서 견지에서 형식으로 쓰여 입장에서 위해서 단지 의해되다 하도록시키다 뿐만아니라 반대로 전후 전자 앞의것 잠시 잠깐 하면서 그렇지만 다음에 그러한즉 그런즉 남들 아무거나 어찌하든지 같다 비슷하다 예컨대 이럴정도로 어떻게 만약 만일 위에서 서술한바와같이 인 듯하다 하지 않는다면 만약에 무엇 무슨 어느 어떤 아래윗 조차 한데 그럼에도 불구하고 여전히 심지어 까지도 조차도 하지 않도록 않기 위하여 때 시각 무렵 시간 동안 어때 어떠한 하여금 네 예 우선 누구 누가 알겠는가 아무도 줄은모른다 줄은 몰랏다 하는 김에 겸사겸사 하는바 그런 까닭에 한 이유는 그러니 그러니까 때문에 그 너희 그들 너희들 타인 것 것들 너 위하여 공동으로 동시에 하기 위하여 어찌하여 무엇때문에 붕붕 윙윙 나 우리 엉엉 휘익 윙윙 오호 아하 어쨋든 만 못하다\t하기보다는 차라리 하는 편이 낫다 흐흐 놀라다 상대적으로 말하자면 마치 아니라면 쉿 그렇지 않으면 그렇지 않다면 안 그러면 아니었다면 하든지 아니면 이라면 좋아 알았어 하는것도 그만이다 어쩔수 없다 하나 일 일반적으로 일단 한켠으로는 오자마자 이렇게되면 이와같다면 전부 한마디 한항목 근거로 하기에 아울러 하지 않도록 않기 위해서 이르기까지 이 되다 로 인하여 까닭으로 이유만으로 이로 인하여 그래서 이 때문에 그러므로 그런 까닭에 알 수 있다 결론을 낼 수 있다 으로 인하여 있다 어떤것 관계가 있다 관련이 있다 연관되다 어떤것들 에 대해 이리하여 그리하여 여부 하기보다는 하느니 하면 할수록 운운 이러이러하다 하구나 하도다 다시말하면 다음으로 에 있다 에 달려 있다 우리 우리들 오히려 하기는한데 어떻게 어떻해 어찌됏어 어때 어째서 본대로 자 이 이쪽 여기 이것 이번 이렇게말하자면 이런 이러한 이와 같은 요만큼 요만한 것 얼마 안 되는 것 이만큼 이 정도의 이렇게 많은 것 이와 같다 이때 이렇구나 것과 같이 끼익 삐걱 따위 와 같은 사람들 부류의 사람들 왜냐하면 중의하나 오직 오로지 에 한하다 하기만 하면 도착하다 까지 미치다 도달하다 정도에 이르다 할 지경이다 결과에 이르다 관해서는 여러분 하고 있다 한 후 혼자 자기 자기집 자신 우에 종합한것과같이 총적으로 보면 총적으로 말하면 총적으로 대로 하다 으로서 참 그만이다 할 따름이다 쿵 탕탕 쾅쾅 둥둥 봐 봐라 아이야 아니 와아 응 아이 참나 년 월 일 령 영 일 이 삼 사 오 육 륙 칠 팔 구 이천육 이천칠 이천팔 이천구 하나 둘 셋 넷 다섯 여섯 일곱 여덟 아홉 령 영".split(" ")),e.Pipeline.registerFunction(e.ko.stopWordFilter,"stopWordFilter-ko"),e.ko.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.ko.stemmer,"stemmer-ko")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.multi.min.js b/assets/javascripts/lunr/min/lunr.multi.min.js new file mode 100644 index 00000000..7debad09 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.multi.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.nl.min.js b/assets/javascripts/lunr/min/lunr.nl.min.js new file mode 100644 index 00000000..c4a25359 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.nl.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.nl=function(){this.pipeline.reset(),this.pipeline.add(r.nl.trimmer,r.nl.stopWordFilter,r.nl.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.nl.stemmer))},r.nl.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.nl.trimmer=r.trimmerSupport.generateTrimmer(r.nl.wordCharacters),r.Pipeline.registerFunction(r.nl.trimmer,"trimmer-nl"),r.nl.stemmer=function(){var e=r.stemmerSupport.Among,i=r.stemmerSupport.SnowballProgram,n=new function(){function r(){for(var r,e,i,o=C.cursor;;){if(C.bra=C.cursor,r=C.find_among(b,11))switch(C.ket=C.cursor,r){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.no.min.js b/assets/javascripts/lunr/min/lunr.no.min.js new file mode 100644 index 00000000..92bc7e4e --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.no.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.pt.min.js b/assets/javascripts/lunr/min/lunr.pt.min.js new file mode 100644 index 00000000..6c16996d --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.pt.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(k,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("a~");continue;case 2:z.slice_from("o~");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function n(){if(z.out_grouping(y,97,250)){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!0;z.cursor++}return!1}return!0}function i(){if(z.in_grouping(y,97,250))for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return g=z.cursor,!0}function o(){var e,r,s=z.cursor;if(z.in_grouping(y,97,250))if(e=z.cursor,n()){if(z.cursor=e,i())return}else g=z.cursor;if(z.cursor=s,z.out_grouping(y,97,250)){if(r=z.cursor,n()){if(z.cursor=r,!z.in_grouping(y,97,250)||z.cursor>=z.limit)return;z.cursor++}g=z.cursor}}function t(){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return!0}function a(){var e=z.cursor;g=z.limit,b=g,h=g,o(),z.cursor=e,t()&&(b=z.cursor,t()&&(h=z.cursor))}function u(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(q,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("ã");continue;case 2:z.slice_from("õ");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function w(){return g<=z.cursor}function m(){return b<=z.cursor}function c(){return h<=z.cursor}function l(){var e;if(z.ket=z.cursor,!(e=z.find_among_b(F,45)))return!1;switch(z.bra=z.cursor,e){case 1:if(!c())return!1;z.slice_del();break;case 2:if(!c())return!1;z.slice_from("log");break;case 3:if(!c())return!1;z.slice_from("u");break;case 4:if(!c())return!1;z.slice_from("ente");break;case 5:if(!m())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(j,4),e&&(z.bra=z.cursor,c()&&(z.slice_del(),1==e&&(z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del()))));break;case 6:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(C,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 7:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(P,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 8:if(!c())return!1;z.slice_del(),z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del());break;case 9:if(!w()||!z.eq_s_b(1,"e"))return!1;z.slice_from("ir")}return!0}function f(){var e,r;if(z.cursor>=g){if(r=z.limit_backward,z.limit_backward=g,z.ket=z.cursor,e=z.find_among_b(S,120))return z.bra=z.cursor,1==e&&z.slice_del(),z.limit_backward=r,!0;z.limit_backward=r}return!1}function d(){var e;z.ket=z.cursor,(e=z.find_among_b(W,7))&&(z.bra=z.cursor,1==e&&w()&&z.slice_del())}function v(e,r){if(z.eq_s_b(1,e)){z.bra=z.cursor;var s=z.limit-z.cursor;if(z.eq_s_b(1,r))return z.cursor=z.limit-s,w()&&z.slice_del(),!1}return!0}function p(){var e;if(z.ket=z.cursor,e=z.find_among_b(L,4))switch(z.bra=z.cursor,e){case 1:w()&&(z.slice_del(),z.ket=z.cursor,z.limit-z.cursor,v("u","g")&&v("i","c"));break;case 2:z.slice_from("c")}}function _(){if(!l()&&(z.cursor=z.limit,!f()))return z.cursor=z.limit,void d();z.cursor=z.limit,z.ket=z.cursor,z.eq_s_b(1,"i")&&(z.bra=z.cursor,z.eq_s_b(1,"c")&&(z.cursor=z.limit,w()&&z.slice_del()))}var h,b,g,k=[new r("",-1,3),new r("ã",0,1),new r("õ",0,2)],q=[new r("",-1,3),new r("a~",0,1),new r("o~",0,2)],j=[new r("ic",-1,-1),new r("ad",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],C=[new r("ante",-1,1),new r("avel",-1,1),new r("ível",-1,1)],P=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],F=[new r("ica",-1,1),new r("ância",-1,1),new r("ência",-1,4),new r("ira",-1,9),new r("adora",-1,1),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,8),new r("eza",-1,1),new r("logía",-1,2),new r("idade",-1,7),new r("ante",-1,1),new r("mente",-1,6),new r("amente",12,5),new r("ável",-1,1),new r("ível",-1,1),new r("ución",-1,3),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,1),new r("imento",-1,1),new r("ivo",-1,8),new r("aça~o",-1,1),new r("ador",-1,1),new r("icas",-1,1),new r("ências",-1,4),new r("iras",-1,9),new r("adoras",-1,1),new r("osas",-1,1),new r("istas",-1,1),new r("ivas",-1,8),new r("ezas",-1,1),new r("logías",-1,2),new r("idades",-1,7),new r("uciones",-1,3),new r("adores",-1,1),new r("antes",-1,1),new r("aço~es",-1,1),new r("icos",-1,1),new r("ismos",-1,1),new r("osos",-1,1),new r("amentos",-1,1),new r("imentos",-1,1),new r("ivos",-1,8)],S=[new r("ada",-1,1),new r("ida",-1,1),new r("ia",-1,1),new r("aria",2,1),new r("eria",2,1),new r("iria",2,1),new r("ara",-1,1),new r("era",-1,1),new r("ira",-1,1),new r("ava",-1,1),new r("asse",-1,1),new r("esse",-1,1),new r("isse",-1,1),new r("aste",-1,1),new r("este",-1,1),new r("iste",-1,1),new r("ei",-1,1),new r("arei",16,1),new r("erei",16,1),new r("irei",16,1),new r("am",-1,1),new r("iam",20,1),new r("ariam",21,1),new r("eriam",21,1),new r("iriam",21,1),new r("aram",20,1),new r("eram",20,1),new r("iram",20,1),new r("avam",20,1),new r("em",-1,1),new r("arem",29,1),new r("erem",29,1),new r("irem",29,1),new r("assem",29,1),new r("essem",29,1),new r("issem",29,1),new r("ado",-1,1),new r("ido",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("indo",-1,1),new r("ara~o",-1,1),new r("era~o",-1,1),new r("ira~o",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("ir",-1,1),new r("as",-1,1),new r("adas",47,1),new r("idas",47,1),new r("ias",47,1),new r("arias",50,1),new r("erias",50,1),new r("irias",50,1),new r("aras",47,1),new r("eras",47,1),new r("iras",47,1),new r("avas",47,1),new r("es",-1,1),new r("ardes",58,1),new r("erdes",58,1),new r("irdes",58,1),new r("ares",58,1),new r("eres",58,1),new r("ires",58,1),new r("asses",58,1),new r("esses",58,1),new r("isses",58,1),new r("astes",58,1),new r("estes",58,1),new r("istes",58,1),new r("is",-1,1),new r("ais",71,1),new r("eis",71,1),new r("areis",73,1),new r("ereis",73,1),new r("ireis",73,1),new r("áreis",73,1),new r("éreis",73,1),new r("íreis",73,1),new r("ásseis",73,1),new r("ésseis",73,1),new r("ísseis",73,1),new r("áveis",73,1),new r("íeis",73,1),new r("aríeis",84,1),new r("eríeis",84,1),new r("iríeis",84,1),new r("ados",-1,1),new r("idos",-1,1),new r("amos",-1,1),new r("áramos",90,1),new r("éramos",90,1),new r("íramos",90,1),new r("ávamos",90,1),new r("íamos",90,1),new r("aríamos",95,1),new r("eríamos",95,1),new r("iríamos",95,1),new r("emos",-1,1),new r("aremos",99,1),new r("eremos",99,1),new r("iremos",99,1),new r("ássemos",99,1),new r("êssemos",99,1),new r("íssemos",99,1),new r("imos",-1,1),new r("armos",-1,1),new r("ermos",-1,1),new r("irmos",-1,1),new r("ámos",-1,1),new r("arás",-1,1),new r("erás",-1,1),new r("irás",-1,1),new r("eu",-1,1),new r("iu",-1,1),new r("ou",-1,1),new r("ará",-1,1),new r("erá",-1,1),new r("irá",-1,1)],W=[new r("a",-1,1),new r("i",-1,1),new r("o",-1,1),new r("os",-1,1),new r("á",-1,1),new r("í",-1,1),new r("ó",-1,1)],L=[new r("e",-1,1),new r("ç",-1,2),new r("é",-1,1),new r("ê",-1,1)],y=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],z=new s;this.setCurrent=function(e){z.setCurrent(e)},this.getCurrent=function(){return z.getCurrent()},this.stem=function(){var r=z.cursor;return e(),z.cursor=r,a(),z.limit_backward=r,z.cursor=z.limit,_(),z.cursor=z.limit,p(),z.cursor=z.limit_backward,u(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ro.min.js b/assets/javascripts/lunr/min/lunr.ro.min.js new file mode 100644 index 00000000..72771401 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ro.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=function(){var i=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(e,i){L.eq_s(1,e)&&(L.ket=L.cursor,L.in_grouping(W,97,259)&&L.slice_from(i))}function n(){for(var i,r;;){if(i=L.cursor,L.in_grouping(W,97,259)&&(r=L.cursor,L.bra=r,e("u","U"),L.cursor=r,e("i","I")),L.cursor=i,L.cursor>=L.limit)break;L.cursor++}}function t(){if(L.out_grouping(W,97,259)){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}return!0}function a(){if(L.in_grouping(W,97,259))for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}function o(){var e,i,r=L.cursor;if(L.in_grouping(W,97,259)){if(e=L.cursor,!t())return void(h=L.cursor);if(L.cursor=e,!a())return void(h=L.cursor)}L.cursor=r,L.out_grouping(W,97,259)&&(i=L.cursor,t()&&(L.cursor=i,L.in_grouping(W,97,259)&&L.cursor<L.limit&&L.cursor++),h=L.cursor)}function u(){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}return!0}function c(){var e=L.cursor;h=L.limit,k=h,g=h,o(),L.cursor=e,u()&&(k=L.cursor,u()&&(g=L.cursor))}function s(){for(var e;;){if(L.bra=L.cursor,e=L.find_among(z,3))switch(L.ket=L.cursor,e){case 1:L.slice_from("i");continue;case 2:L.slice_from("u");continue;case 3:if(L.cursor>=L.limit)break;L.cursor++;continue}break}}function w(){return h<=L.cursor}function m(){return k<=L.cursor}function l(){return g<=L.cursor}function f(){var e,i;if(L.ket=L.cursor,(e=L.find_among_b(C,16))&&(L.bra=L.cursor,m()))switch(e){case 1:L.slice_del();break;case 2:L.slice_from("a");break;case 3:L.slice_from("e");break;case 4:L.slice_from("i");break;case 5:i=L.limit-L.cursor,L.eq_s_b(2,"ab")||(L.cursor=L.limit-i,L.slice_from("i"));break;case 6:L.slice_from("at");break;case 7:L.slice_from("aţi")}}function p(){var e,i=L.limit-L.cursor;if(L.ket=L.cursor,(e=L.find_among_b(P,46))&&(L.bra=L.cursor,m())){switch(e){case 1:L.slice_from("abil");break;case 2:L.slice_from("ibil");break;case 3:L.slice_from("iv");break;case 4:L.slice_from("ic");break;case 5:L.slice_from("at");break;case 6:L.slice_from("it")}return _=!0,L.cursor=L.limit-i,!0}return!1}function d(){var e,i;for(_=!1;;)if(i=L.limit-L.cursor,!p()){L.cursor=L.limit-i;break}if(L.ket=L.cursor,(e=L.find_among_b(F,62))&&(L.bra=L.cursor,l())){switch(e){case 1:L.slice_del();break;case 2:L.eq_s_b(1,"ţ")&&(L.bra=L.cursor,L.slice_from("t"));break;case 3:L.slice_from("ist")}_=!0}}function b(){var e,i,r;if(L.cursor>=h){if(i=L.limit_backward,L.limit_backward=h,L.ket=L.cursor,e=L.find_among_b(q,94))switch(L.bra=L.cursor,e){case 1:if(r=L.limit-L.cursor,!L.out_grouping_b(W,97,259)&&(L.cursor=L.limit-r,!L.eq_s_b(1,"u")))break;case 2:L.slice_del()}L.limit_backward=i}}function v(){var e;L.ket=L.cursor,(e=L.find_among_b(S,5))&&(L.bra=L.cursor,w()&&1==e&&L.slice_del())}var _,g,k,h,z=[new i("",-1,3),new i("I",0,1),new i("U",0,2)],C=[new i("ea",-1,3),new i("aţia",-1,7),new i("aua",-1,2),new i("iua",-1,4),new i("aţie",-1,7),new i("ele",-1,3),new i("ile",-1,5),new i("iile",6,4),new i("iei",-1,4),new i("atei",-1,6),new i("ii",-1,4),new i("ului",-1,1),new i("ul",-1,1),new i("elor",-1,3),new i("ilor",-1,4),new i("iilor",14,4)],P=[new i("icala",-1,4),new i("iciva",-1,4),new i("ativa",-1,5),new i("itiva",-1,6),new i("icale",-1,4),new i("aţiune",-1,5),new i("iţiune",-1,6),new i("atoare",-1,5),new i("itoare",-1,6),new i("ătoare",-1,5),new i("icitate",-1,4),new i("abilitate",-1,1),new i("ibilitate",-1,2),new i("ivitate",-1,3),new i("icive",-1,4),new i("ative",-1,5),new i("itive",-1,6),new i("icali",-1,4),new i("atori",-1,5),new i("icatori",18,4),new i("itori",-1,6),new i("ători",-1,5),new i("icitati",-1,4),new i("abilitati",-1,1),new i("ivitati",-1,3),new i("icivi",-1,4),new i("ativi",-1,5),new i("itivi",-1,6),new i("icităi",-1,4),new i("abilităi",-1,1),new i("ivităi",-1,3),new i("icităţi",-1,4),new i("abilităţi",-1,1),new i("ivităţi",-1,3),new i("ical",-1,4),new i("ator",-1,5),new i("icator",35,4),new i("itor",-1,6),new i("ător",-1,5),new i("iciv",-1,4),new i("ativ",-1,5),new i("itiv",-1,6),new i("icală",-1,4),new i("icivă",-1,4),new i("ativă",-1,5),new i("itivă",-1,6)],F=[new i("ica",-1,1),new i("abila",-1,1),new i("ibila",-1,1),new i("oasa",-1,1),new i("ata",-1,1),new i("ita",-1,1),new i("anta",-1,1),new i("ista",-1,3),new i("uta",-1,1),new i("iva",-1,1),new i("ic",-1,1),new i("ice",-1,1),new i("abile",-1,1),new i("ibile",-1,1),new i("isme",-1,3),new i("iune",-1,2),new i("oase",-1,1),new i("ate",-1,1),new i("itate",17,1),new i("ite",-1,1),new i("ante",-1,1),new i("iste",-1,3),new i("ute",-1,1),new i("ive",-1,1),new i("ici",-1,1),new i("abili",-1,1),new i("ibili",-1,1),new i("iuni",-1,2),new i("atori",-1,1),new i("osi",-1,1),new i("ati",-1,1),new i("itati",30,1),new i("iti",-1,1),new i("anti",-1,1),new i("isti",-1,3),new i("uti",-1,1),new i("işti",-1,3),new i("ivi",-1,1),new i("ităi",-1,1),new i("oşi",-1,1),new i("ităţi",-1,1),new i("abil",-1,1),new i("ibil",-1,1),new i("ism",-1,3),new i("ator",-1,1),new i("os",-1,1),new i("at",-1,1),new i("it",-1,1),new i("ant",-1,1),new i("ist",-1,3),new i("ut",-1,1),new i("iv",-1,1),new i("ică",-1,1),new i("abilă",-1,1),new i("ibilă",-1,1),new i("oasă",-1,1),new i("ată",-1,1),new i("ită",-1,1),new i("antă",-1,1),new i("istă",-1,3),new i("ută",-1,1),new i("ivă",-1,1)],q=[new i("ea",-1,1),new i("ia",-1,1),new i("esc",-1,1),new i("ăsc",-1,1),new i("ind",-1,1),new i("ând",-1,1),new i("are",-1,1),new i("ere",-1,1),new i("ire",-1,1),new i("âre",-1,1),new i("se",-1,2),new i("ase",10,1),new i("sese",10,2),new i("ise",10,1),new i("use",10,1),new i("âse",10,1),new i("eşte",-1,1),new i("ăşte",-1,1),new i("eze",-1,1),new i("ai",-1,1),new i("eai",19,1),new i("iai",19,1),new i("sei",-1,2),new i("eşti",-1,1),new i("ăşti",-1,1),new i("ui",-1,1),new i("ezi",-1,1),new i("âi",-1,1),new i("aşi",-1,1),new i("seşi",-1,2),new i("aseşi",29,1),new i("seseşi",29,2),new i("iseşi",29,1),new i("useşi",29,1),new i("âseşi",29,1),new i("işi",-1,1),new i("uşi",-1,1),new i("âşi",-1,1),new i("aţi",-1,2),new i("eaţi",38,1),new i("iaţi",38,1),new i("eţi",-1,2),new i("iţi",-1,2),new i("âţi",-1,2),new i("arăţi",-1,1),new i("serăţi",-1,2),new i("aserăţi",45,1),new i("seserăţi",45,2),new i("iserăţi",45,1),new i("userăţi",45,1),new i("âserăţi",45,1),new i("irăţi",-1,1),new i("urăţi",-1,1),new i("ârăţi",-1,1),new i("am",-1,1),new i("eam",54,1),new i("iam",54,1),new i("em",-1,2),new i("asem",57,1),new i("sesem",57,2),new i("isem",57,1),new i("usem",57,1),new i("âsem",57,1),new i("im",-1,2),new i("âm",-1,2),new i("ăm",-1,2),new i("arăm",65,1),new i("serăm",65,2),new i("aserăm",67,1),new i("seserăm",67,2),new i("iserăm",67,1),new i("userăm",67,1),new i("âserăm",67,1),new i("irăm",65,1),new i("urăm",65,1),new i("ârăm",65,1),new i("au",-1,1),new i("eau",76,1),new i("iau",76,1),new i("indu",-1,1),new i("ându",-1,1),new i("ez",-1,1),new i("ească",-1,1),new i("ară",-1,1),new i("seră",-1,2),new i("aseră",84,1),new i("seseră",84,2),new i("iseră",84,1),new i("useră",84,1),new i("âseră",84,1),new i("iră",-1,1),new i("ură",-1,1),new i("âră",-1,1),new i("ează",-1,1)],S=[new i("a",-1,1),new i("e",-1,1),new i("ie",1,1),new i("i",-1,1),new i("ă",-1,1)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var e=L.cursor;return n(),L.cursor=e,c(),L.limit_backward=e,L.cursor=L.limit,f(),L.cursor=L.limit,d(),L.cursor=L.limit,_||(L.cursor=L.limit,b(),L.cursor=L.limit),v(),L.cursor=L.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ru.min.js b/assets/javascripts/lunr/min/lunr.ru.min.js new file mode 100644 index 00000000..186cc485 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ru.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor<b)&&(W.limit_backward=b,o()||(W.cursor=W.limit,f()||(W.cursor=W.limit),m()||(W.cursor=W.limit,l()||(W.cursor=W.limit,a()))),W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"и")?(W.bra=W.cursor,W.slice_del()):W.cursor=W.limit,p(),W.cursor=W.limit,d(),!0)}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.ru.stemmer,"stemmer-ru"),e.ru.stopWordFilter=e.generateStopWordFilter("алло без близко более больше будем будет будете будешь будто буду будут будь бы бывает бывь был была были было быть в важная важное важные важный вам вами вас ваш ваша ваше ваши вверх вдали вдруг ведь везде весь вниз внизу во вокруг вон восемнадцатый восемнадцать восемь восьмой вот впрочем времени время все всегда всего всем всеми всему всех всею всю всюду вся всё второй вы г где говорил говорит год года году да давно даже далеко дальше даром два двадцатый двадцать две двенадцатый двенадцать двух девятнадцатый девятнадцать девятый девять действительно дел день десятый десять для до довольно долго должно другая другие других друго другое другой е его ее ей ему если есть еще ещё ею её ж же жизнь за занят занята занято заняты затем зато зачем здесь значит и из или им именно иметь ими имя иногда их к каждая каждое каждые каждый кажется как какая какой кем когда кого ком кому конечно которая которого которой которые который которых кроме кругом кто куда лет ли лишь лучше люди м мало между меля менее меньше меня миллионов мимо мира мне много многочисленная многочисленное многочисленные многочисленный мной мною мог могут мож может можно можхо мои мой мор мочь моя моё мы на наверху над надо назад наиболее наконец нам нами нас начала наш наша наше наши не него недавно недалеко нее ней нельзя нем немного нему непрерывно нередко несколько нет нею неё ни нибудь ниже низко никогда никуда ними них ничего но ну нужно нх о об оба обычно один одиннадцатый одиннадцать однажды однако одного одной около он она они оно опять особенно от отовсюду отсюда очень первый перед по под пожалуйста позже пока пор пора после посреди потом потому почему почти прекрасно при про просто против процентов пятнадцатый пятнадцать пятый пять раз разве рано раньше рядом с сам сама сами самим самими самих само самого самой самом самому саму свое своего своей свои своих свою сеаой себе себя сегодня седьмой сейчас семнадцатый семнадцать семь сих сказал сказала сказать сколько слишком сначала снова со собой собою совсем спасибо стал суть т та так такая также такие такое такой там твой твоя твоё те тебе тебя тем теми теперь тех то тобой тобою тогда того тоже только том тому тот тою третий три тринадцатый тринадцать ту туда тут ты тысяч у уж уже уметь хорошо хотеть хоть хотя хочешь часто чаще чего человек чем чему через четвертый четыре четырнадцатый четырнадцать что чтоб чтобы чуть шестнадцатый шестнадцать шестой шесть эта эти этим этими этих это этого этой этом этому этот эту я \ufeffа".split(" ")),e.Pipeline.registerFunction(e.ru.stopWordFilter,"stopWordFilter-ru")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.stemmer.support.min.js b/assets/javascripts/lunr/min/lunr.stemmer.support.min.js new file mode 100644 index 00000000..abd4475b --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.stemmer.support.min.js @@ -0,0 +1 @@ +!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.sv.min.js b/assets/javascripts/lunr/min/lunr.sv.min.js new file mode 100644 index 00000000..3e5eb640 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.sv.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ta.min.js b/assets/javascripts/lunr/min/lunr.ta.min.js new file mode 100644 index 00000000..a644bed2 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ta.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="-உஊ-ஏஐ-ஙச-ட-னப-யர-ஹ-ிீ-ொ-ௐ---௩௪-௯௰-௹௺-a-zA-Za-zA-Z0-90-9",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.th.min.js b/assets/javascripts/lunr/min/lunr.th.min.js new file mode 100644 index 00000000..dee3aac6 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.th.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[-]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.tr.min.js b/assets/javascripts/lunr/min/lunr.tr.min.js new file mode 100644 index 00000000..563f6ec1 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.tr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=function(){var i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){function r(r,i,e){for(;;){var n=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(r,i,e)){Dr.cursor=Dr.limit-n;break}if(Dr.cursor=Dr.limit-n,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function n(){var i,e;i=Dr.limit-Dr.cursor,r(Wr,97,305);for(var n=0;n<Br.length;n++){e=Dr.limit-Dr.cursor;var t=Br[n];if(Dr.eq_s_b(1,t[0])&&r(t[1],t[2],t[3]))return Dr.cursor=Dr.limit-i,!0;Dr.cursor=Dr.limit-e}return Dr.cursor=Dr.limit-e,!(!Dr.eq_s_b(1,"ü")||!r(Zr,246,252))&&(Dr.cursor=Dr.limit-i,!0)}function t(r,i){var e,n=Dr.limit-Dr.cursor;return r()&&(Dr.cursor=Dr.limit-n,Dr.cursor>Dr.limit_backward&&(Dr.cursor--,e=Dr.limit-Dr.cursor,i()))?(Dr.cursor=Dr.limit-e,!0):(Dr.cursor=Dr.limit-n,r()?(Dr.cursor=Dr.limit-n,!1):(Dr.cursor=Dr.limit-n,!(Dr.cursor<=Dr.limit_backward)&&(Dr.cursor--,!!i()&&(Dr.cursor=Dr.limit-n,!0))))}function u(r){return t(r,function(){return Dr.in_grouping_b(Wr,97,305)})}function o(){return u(function(){return Dr.eq_s_b(1,"n")})}function s(){return u(function(){return Dr.eq_s_b(1,"s")})}function c(){return u(function(){return Dr.eq_s_b(1,"y")})}function l(){return t(function(){return Dr.in_grouping_b(Lr,105,305)},function(){return Dr.out_grouping_b(Wr,97,305)})}function a(){return Dr.find_among_b(ur,10)&&l()}function m(){return n()&&Dr.in_grouping_b(Lr,105,305)&&s()}function d(){return Dr.find_among_b(or,2)}function f(){return n()&&Dr.in_grouping_b(Lr,105,305)&&c()}function b(){return n()&&Dr.find_among_b(sr,4)}function w(){return n()&&Dr.find_among_b(cr,4)&&o()}function _(){return n()&&Dr.find_among_b(lr,2)&&c()}function k(){return n()&&Dr.find_among_b(ar,2)}function p(){return n()&&Dr.find_among_b(mr,4)}function g(){return n()&&Dr.find_among_b(dr,2)}function y(){return n()&&Dr.find_among_b(fr,4)}function z(){return n()&&Dr.find_among_b(br,2)}function v(){return n()&&Dr.find_among_b(wr,2)&&c()}function h(){return Dr.eq_s_b(2,"ki")}function q(){return n()&&Dr.find_among_b(_r,2)&&o()}function C(){return n()&&Dr.find_among_b(kr,4)&&c()}function P(){return n()&&Dr.find_among_b(pr,4)}function F(){return n()&&Dr.find_among_b(gr,4)&&c()}function S(){return Dr.find_among_b(yr,4)}function W(){return n()&&Dr.find_among_b(zr,2)}function L(){return n()&&Dr.find_among_b(vr,4)}function x(){return n()&&Dr.find_among_b(hr,8)}function A(){return Dr.find_among_b(qr,2)}function E(){return n()&&Dr.find_among_b(Cr,32)&&c()}function j(){return Dr.find_among_b(Pr,8)&&c()}function T(){return n()&&Dr.find_among_b(Fr,4)&&c()}function Z(){return Dr.eq_s_b(3,"ken")&&c()}function B(){var r=Dr.limit-Dr.cursor;return!(T()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,Z()))))}function D(){if(A()){var r=Dr.limit-Dr.cursor;if(S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T())return!1}return!0}function G(){if(W()){Dr.bra=Dr.cursor,Dr.slice_del();var r=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,x()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,T()||(Dr.cursor=Dr.limit-r)))),nr=!1,!1}return!0}function H(){if(!L())return!0;var r=Dr.limit-Dr.cursor;return!E()&&(Dr.cursor=Dr.limit-r,!j())}function I(){var r,i=Dr.limit-Dr.cursor;return!(S()||(Dr.cursor=Dr.limit-i,F()||(Dr.cursor=Dr.limit-i,P()||(Dr.cursor=Dr.limit-i,C()))))||(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,T()||(Dr.cursor=Dr.limit-r),!1)}function J(){var r,i=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,nr=!0,B()&&(Dr.cursor=Dr.limit-i,D()&&(Dr.cursor=Dr.limit-i,G()&&(Dr.cursor=Dr.limit-i,H()&&(Dr.cursor=Dr.limit-i,I()))))){if(Dr.cursor=Dr.limit-i,!x())return;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T()||(Dr.cursor=Dr.limit-r)}Dr.bra=Dr.cursor,Dr.slice_del()}function K(){var r,i,e,n;if(Dr.ket=Dr.cursor,h()){if(r=Dr.limit-Dr.cursor,p())return Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,a()&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))),!0;if(Dr.cursor=Dr.limit-r,w()){if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,e=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-e,!m()&&(Dr.cursor=Dr.limit-e,!K())))return!0;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}return!0}if(Dr.cursor=Dr.limit-r,g()){if(n=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-n,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-n,!K())return!1;return!0}}return!1}function M(r){if(Dr.ket=Dr.cursor,!g()&&(Dr.cursor=Dr.limit-r,!k()))return!1;var i=Dr.limit-Dr.cursor;if(d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-i,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-i,!K())return!1;return!0}function N(r){if(Dr.ket=Dr.cursor,!z()&&(Dr.cursor=Dr.limit-r,!b()))return!1;var i=Dr.limit-Dr.cursor;return!(!m()&&(Dr.cursor=Dr.limit-i,!d()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)}function O(){var r,i=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,!(!w()&&(Dr.cursor=Dr.limit-i,!v()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,!(!W()||(Dr.bra=Dr.cursor,Dr.slice_del(),!K()))||(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!(a()||(Dr.cursor=Dr.limit-r,m()||(Dr.cursor=Dr.limit-r,K())))||(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)))}function Q(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,!p()&&(Dr.cursor=Dr.limit-e,!f()&&(Dr.cursor=Dr.limit-e,!_())))return!1;if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,a())Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()||(Dr.cursor=Dr.limit-i);else if(Dr.cursor=Dr.limit-r,!W())return!0;return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,K(),!0}function R(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,W())return Dr.bra=Dr.cursor,Dr.slice_del(),void K();if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,q())if(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-r,!m())){if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!W())return;if(Dr.bra=Dr.cursor,Dr.slice_del(),!K())return}Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}else if(Dr.cursor=Dr.limit-e,!M(e)&&(Dr.cursor=Dr.limit-e,!N(e))){if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,y())return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,i=Dr.limit-Dr.cursor,void(a()?(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())):(Dr.cursor=Dr.limit-i,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,K())));if(Dr.cursor=Dr.limit-e,!O()){if(Dr.cursor=Dr.limit-e,d())return Dr.bra=Dr.cursor,void Dr.slice_del();Dr.cursor=Dr.limit-e,K()||(Dr.cursor=Dr.limit-e,Q()||(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,(a()||(Dr.cursor=Dr.limit-e,m()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))))}}}function U(){var r;if(Dr.ket=Dr.cursor,r=Dr.find_among_b(Sr,4))switch(Dr.bra=Dr.cursor,r){case 1:Dr.slice_from("p");break;case 2:Dr.slice_from("ç");break;case 3:Dr.slice_from("t");break;case 4:Dr.slice_from("k")}}function V(){for(;;){var r=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(Wr,97,305)){Dr.cursor=Dr.limit-r;break}if(Dr.cursor=Dr.limit-r,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function X(r,i,e){if(Dr.cursor=Dr.limit-r,V()){var n=Dr.limit-Dr.cursor;if(!Dr.eq_s_b(1,i)&&(Dr.cursor=Dr.limit-n,!Dr.eq_s_b(1,e)))return!0;Dr.cursor=Dr.limit-r;var t=Dr.cursor;return Dr.insert(Dr.cursor,Dr.cursor,e),Dr.cursor=t,!1}return!0}function Y(){var r=Dr.limit-Dr.cursor;(Dr.eq_s_b(1,"d")||(Dr.cursor=Dr.limit-r,Dr.eq_s_b(1,"g")))&&X(r,"a","ı")&&X(r,"e","i")&&X(r,"o","u")&&X(r,"ö","ü")}function $(){for(var r,i=Dr.cursor,e=2;;){for(r=Dr.cursor;!Dr.in_grouping(Wr,97,305);){if(Dr.cursor>=Dr.limit)return Dr.cursor=r,!(e>0)&&(Dr.cursor=i,!0);Dr.cursor++}e--}}function rr(r,i,e){for(;!Dr.eq_s(i,e);){if(Dr.cursor>=Dr.limit)return!0;Dr.cursor++}return(tr=i)!=Dr.limit||(Dr.cursor=r,!1)}function ir(){var r=Dr.cursor;return!rr(r,2,"ad")||(Dr.cursor=r,!rr(r,5,"soyad"))}function er(){var r=Dr.cursor;return!ir()&&(Dr.limit_backward=r,Dr.cursor=Dr.limit,Y(),Dr.cursor=Dr.limit,U(),!0)}var nr,tr,ur=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],or=[new i("leri",-1,-1),new i("ları",-1,-1)],sr=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],cr=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],lr=[new i("a",-1,-1),new i("e",-1,-1)],ar=[new i("na",-1,-1),new i("ne",-1,-1)],mr=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],dr=[new i("nda",-1,-1),new i("nde",-1,-1)],fr=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],br=[new i("ndan",-1,-1),new i("nden",-1,-1)],wr=[new i("la",-1,-1),new i("le",-1,-1)],_r=[new i("ca",-1,-1),new i("ce",-1,-1)],kr=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],pr=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],gr=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],yr=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],zr=[new i("lar",-1,-1),new i("ler",-1,-1)],vr=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],hr=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],qr=[new i("casına",-1,-1),new i("cesine",-1,-1)],Cr=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],Pr=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],Fr=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],Sr=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],Wr=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],Lr=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],xr=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],Ar=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],Er=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],jr=[17],Tr=[65],Zr=[65],Br=[["a",xr,97,305],["e",Ar,101,252],["ı",Er,97,305],["i",jr,101,105],["o",Tr,111,117],["ö",Zr,246,252],["u",Tr,111,117]],Dr=new e;this.setCurrent=function(r){Dr.setCurrent(r)},this.getCurrent=function(){return Dr.getCurrent()},this.stem=function(){return!!($()&&(Dr.limit_backward=Dr.cursor,Dr.cursor=Dr.limit,J(),Dr.cursor=Dr.limit,nr&&(R(),Dr.cursor=Dr.limit_backward,er())))}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.vi.min.js b/assets/javascripts/lunr/min/lunr.vi.min.js new file mode 100644 index 00000000..22aed28c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.vi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.zh.min.js b/assets/javascripts/lunr/min/lunr.zh.min.js new file mode 100644 index 00000000..9838ef96 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/tinyseg.js b/assets/javascripts/lunr/tinyseg.js new file mode 100644 index 00000000..167fa6dd --- /dev/null +++ b/assets/javascripts/lunr/tinyseg.js @@ -0,0 +1,206 @@ +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + + return function(lunr) { + // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript + // (c) 2008 Taku Kudo <taku@chasen.org> + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); \ No newline at end of file diff --git a/assets/javascripts/lunr/wordcut.js b/assets/javascripts/lunr/wordcut.js new file mode 100644 index 00000000..146f4b44 --- /dev/null +++ b/assets/javascripts/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +var _ = require("underscore"); + +var Acceptors = { + creators: null, + current: null, + tag: null, + + init: function() { + this.creators = []; + this.current = []; + this.tag = {}; + }, + + reset: function() { + this.current = []; + this.tag = {} + }, + + transit: function(ch) { + var self = this; + + self.creators.forEach(function(creator) { + var acceptor = creator.createAcceptor(self.tag); + if (acceptor) + self.current.push(acceptor); + }); + + var _current = []; + self.tag = {}; + + for (var i = 0; i < self.current.length; i++) { + var _acceptor = self.current[i] + , acceptor = _acceptor.transit(ch); + + if (!acceptor.isError) { + _current.push(acceptor); + self.tag[acceptor.tag] = acceptor; + } + } + self.current = _current; + + }, + + getFinalAcceptors: function() { + return this.current.filter(function(acceptor) { + return acceptor.isFinal; + }); + } +}; + +module.exports = function() { + var acceptors = _.clone(Acceptors); + acceptors.init(); + return acceptors; +}; + +},{"underscore":25}],2:[function(require,module,exports){ +(function (__dirname){ + +var LEFT = 0; +var RIGHT = 1; +var path = require("path"); +var glob = require("glob"); + +var WordcutDict = { + + + init: function (dictPathFile, withDefault, words) { + withDefault = withDefault || false + defaultDict = path.normalize(__dirname + "/..") + "/data/tdict-*.txt"; + this.dict=[] + var dictPathIsDefined = dictPathFile !== undefined + var dictPath = (withDefault || !dictPathIsDefined) ? [defaultDict]: []; + var dictPathFile = dictPathFile || defaultDict + + if(dictPathIsDefined){ + if (Array.isArray(dictPathFile)) { + dictPath.concat.apply(dictPath, dictPathFile); + } else { + dictPath.push(dictPathFile) + } + } + + this.addFiles(dictPath, false) + + if(words!==undefined){ + this.addWords(words, false) + } + this.finalizeDict(); + }, + + addWords: function(words, finalize){ + finalize = finalize===undefined || finalize; + this.dict.push.apply(this.dict, words) + if(finalize){ + this.finalizeDict(); + } + }, + + finalizeDict: function(){ + this.dict = this.sortuniq(this.dict); + }, + + addFiles: function(files, finalize){ + finalize = finalize===undefined || finalize; + + for (var i = 0; i < 1; i++) { + words = "ก.ก.\nก.ก.น.\nก.ข.ค.\nก.ค.\nก.จ.\nก.ช.น.\nก.ฌ.\nก.ต.\nก.ต.ง.\nก.ต.ช.\nก.ตร.\nก.ท.\nก.น.ช.\nก.บช.\nก.บถ.\nก.ป.ส.\nก.พ.\nก.ม.\nก.ย.\nก.ร.\nก.ล.ต.\nก.ว.\nก.ศ.ว.\nก.ส.ท.\nก.ส.ธ.\nก.ส.อ.\nก.อ.\nกก.ตชด.\nกก.ตร.น.\nกก.ภ.จว.\nกก.รสช.\nกกบ.ขส.ทบ.\nกกล.รพน.\nกง.กห.\nกง.ทบ.\nกง.ทร.\nกซข.ป.\nกซม.ป.\nกทม.กรุงเทพมหานคร\nกบ.ทบ.\nกป.สป.\nกพ.ทบ.\nกพ.ทร.\nกพ.ทหาร\nกร.ทบ.\nกรป.กลาง\nกรอ.พอ.\nกศ.ด.\nกศ.บ.\nกศ.บป.\nกศ.ม.\nกษ.ด.\nกษ.บ.\nกษ.ม.\nกส.ด.\nกส.ทบ.\nกส.บ.\nกส.ม.\nกอ.ปค.\nกอ.รพน.\nกอ.รมน.\nกอ.รสต.\nข.ต.ว.\nขว.ทบ.\nขว.ทร.\nขว.ทหาร\nขส.ทบ.\nขส.ทร.\nขส.ทอ.\nค.ด.\nค.บ.\nค.พ.ศ.\nค.ม.\nค.ร.น.\nค.ร.ฟ.\nค.ร.ม.\nค.ศ.\nค.อ.ด.\nค.อ.บ.\nค.อ.ม.\nคศ.ด.\nคศ.บ.\nคศ.ม.\nง.ด.\nจ.จ.\nจ.จ.จ.\nจ.ช.\nจ.ต.\nจ.ท.\nจ.ป.ร.\nจ.ม.\nจ.ศ.\nจ.ส.ต.\nจ.ส.ท.\nจ.ส.อ.\nจ.อ.\nจ.อ.ร.\nจ.๑๘\nจก.ธน.\nจก.สน.\nช.ค.\nช.ค.บ.\nช.พ.ค.\nช.ส.\nช.ส.ค.\nฌ.ป.ค.\nฌ.ศ.ร.\nฌ.ส.อ.\nฐท.สห.\nด.ช.\nด.ญ.\nด.ต.\nด.ศ.ค.\nด.ศ.ร.\nดย.ทร.\nต.ก.\nต.ค.\nต.จ.\nต.จ.ว.\nต.ช.\nต.ต.\nต.บ.\nต.ม.\nต.ร.\nต.ศ.ร.\nต.ห.\nต.อ.\nต.อ.จ.\nตร.กม.\nตร.ซม.\nตร.ต.\nตร.ทล.\nตร.น.\nตร.ปม.\nตร.ภ.\nตร.ม.\nตร.รฟ.\nตร.ว.\nตร.ส.\nตร.สข.\nท.จ.\nท.จ.ว.\nท.ช.\nท.ญ.\nท.ด.\nท.ท.ท.\nท.ทบ.\nท.บ.\nท.พ.\nท.ม.\nท.ศ.\nทก.ด.\nทก.บ.\nทก.ม.\nทส.ปช.\nทส.รมว.กห.\nทุ.ส.นิ.ม.\nธ.ก.ส.\nธ.ค.\nธ.ญ\nธ.บ.\nน.ช.\nน.ญ.\nน.ด.\nน.ต.\nน.ท.\nน.น.\nน.บ.\nน.บ.ท.\nน.ป.ท.\nน.พ.\nน.ม.\nน.ร.\nน.ว.\nน.ศ.\nน.ส.\nน.ส.พ.\nน.ส.๓\nน.สพ.\nน.อ.\nนปพ.ภ.\nนศ.ด.\nนศ.บ.\nนศ.ม.\nบ.ก.\nบ.ข.ส.\nบ.ช.\nบ.ด.ท.\nบ.ตร.\nบ.ภ.\nบ.ม.\nบก.จร.\nบก.ตชด.\nบก.ตม.\nบก.ทล.\nบก.น.\nบก.ป.\nบก.ปค.\nบก.ปม.\nบก.ภ.เขต\nบก.รน.\nบก.รฟ.\nบก.ร้อย.ตชด.\nบก.ส.\nบกข.ป.\nบจพ.ป.\nบช.ก.\nบช.ด.\nบช.ตชด.\nบช.น.\nบช.บ.\nบช.ปส.\nบช.ภ.\nบช.ม.\nบชท.ป.\nบชน.ป.\nบชส.ป.\nบธ.ด.\nบธ.บ.\nบธ.ม.\nบนท.ป.\nบนอ.ป.\nบปช.ป.\nป.กท.\nป.กศ.\nป.กศ.สูง\nป.จ.\nป.จ.ว.\nป.ช.\nป.ธ.\nป.ป.\nป.ป.ก.\nป.ป.ช.\nป.ป.ป.\nป.ป.ร.\nป.ป.ส.\nป.พ.\nป.พ.พ.\nป.พย.\nป.ม.\nป.ม.ก.\nป.ม.ช.\nป.ม.ธ.\nป.ม.ศ.\nป.ม.อ.\nป.ร.ร.๔\nป.ร.ร.๕\nป.ร.ร.๖\nป.ล.\nป.ว.พ.\nป.วิ.อ.\nป.ส.ส.\nป.อ.\nป.อ.ร.ส.\nป.๑\nปม.วส.\nปอ.พ.\nผกก.ภ.\nผช.ผอ.\nผต.มท.\nผบ.ตร.\nผบ.ทบ.\nผบ.ทร.\nผบ.ทสส.\nผบ.ทอ.\nผบก.น.\nผบก.ป.\nผบก.ปค.\nผบก.ปม.\nผบก.ภ.\nผบช.ก.\nผบช.ตชด.\nผบช.น.\nผบช.ภ.\nผว.กทม.\nผอ.ปจ.\nพ.ก.ง.\nพ.กศ.\nพ.ข.ต.\nพ.ค.\nพ.ค.ช.\nพ.ค.ว.\nพ.ค.ศ.\nพ.จ.ต.\nพ.จ.ท.\nพ.จ.อ.\nพ.ช.\nพ.ช.ค.\nพ.ด.\nพ.ต.\nพ.ต.ต.\nพ.ต.ท.\nพ.ต.อ.\nพ.ต.อ.พิเศษ\nพ.ท.\nพ.บ.\nพ.ป.\nพ.ภ.ม.\nพ.ม.\nพ.ม.ช.\nพ.ย.\nพ.ร.ก.\nพ.ร.ฎ.\nพ.ร.ต.\nพ.ร.ธ.\nพ.ร.บ.\nพ.ศ.\nพ.ศ.บ.\nพ.ส.ร.\nพ.ส.ล.\nพ.อ.\nพ.อ.ต.\nพ.อ.ท.\nพ.อ.พิเศษ\nพ.อ.อ.\nพณ.ด.\nพณ.บ.\nพณ.ม.\nพธ.ด.\nพธ.บ.\nพธ.ม.\nพบ.ด.\nพบ.บ.\nพบ.ม.\nพย.ด.\nพย.บ.\nพย.ม.\nพล.จ.\nพล.ต.\nพล.ต.จ.\nพล.ต.ต.\nพล.ต.ท.\nพล.ต.อ.\nพล.ท.\nพล.ปตอ.\nพล.ม.\nพล.ม.๒\nพล.ร.จ.\nพล.ร.ต.\nพล.ร.ท.\nพล.ร.อ.\nพล.อ.\nพล.อ.จ.\nพล.อ.ต.\nพล.อ.ท.\nพล.อ.อ.\nพลา.ทร.\nพศ.ด.\nพศ.บ.\nพศ.ม.\nพอ.สว.\nภ.ง.ด.\nภ.ง.ด.๙\nภ.ด.\nภ.บ.\nภ.บ.ท.๕\nภ.ป.ร.\nภ.พ.\nภ.ม.\nภ.สถ.บ.\nม.ค.\nม.จ.\nม.ป.ท.\nม.ป.ป.\nม.ป.พ.\nม.ร.ว.\nม.ศ.\nม.อ.\nม.อ.ปัตตานี\nมิ.ย.\nมี.ค.\nยศ.ทบ.\nยศ.ทร.\nยศ.ทอ.\nร.ง.\nร.ด.\nร.ต.\nร.ต.ต.\nร.ต.ท.\nร.ต.อ.\nร.ท.\nร.น.\nร.บ.\nร.พ.\nร.ฟ.ล.\nร.ย.ล.\nร.ย.ส.ท.\nร.ล.\nร.ศ.\nร.ส.พ.\nร.อ.\nรป.ม.\nรร.จปร.\nรร.จอ.\nรร.ชท.\nรร.ตท.\nรร.นร.\nรร.นรต.\nรร.นอ.\nล.ญ.\nล.ว.\nลส.ชบ.\nว.ค.\nว.ฉ.\nว.ช.\nว.ด.ป.\nว.ป.ถ.\nวท.บ.\nศ.บ.\nศ.ป.ก.\nศ.ศ.ป.\nศฝร.ภ.\nศศ.บ.\nศษ.บ.\nศส.บ.\nส.ก.\nส.ก.ศ.ท.\nส.ค.\nส.ค.1\nส.ค.ร.\nส.ค.ส.\nส.ต.\nส.ต.ต.\nส.ต.ท.\nส.ต.อ.\nส.ท.\nส.ทร.\nส.ป.ช.\nส.ป.ส.ท.\nส.ป.อ.\nส.ร.\nส.ล.น.\nส.ว.\nส.ว.ท.\nส.ว.ส.ท.\nส.ส.\nส.ส.ท.\nส.ส.ร.\nส.ห.\nส.อ.\nสถ.บ.\nสนง.สสอ.\nสพ.ญ.\nสพ.บ.\nสว.จร.\nสว.ธร.\nสว.ส.\nสว.สป.\nสว.สส.\nสว.อก.\nสส.บ.\nสุ.จิ.ปุ.ลิ.\nห.ร.ม.\nอ.ก.ค.\nอ.ก.จ.\nอ.จ.\nอ.ช.พ.\nอ.ตร.\nอ.บ.\nอ.ส.ท.\nอ.ส.ม.ท.\nอ.ส.ย.\nอ.อ.ป.\nอส.รด.\nอุ.อา.ก.ส.\nฮ.จ.\nฮ.ท.\nฮ.ฝ.\nฮ.ล.\nฮ.ศ.\nเม.ย.\n\nกรีนิช\nกลันตัน\nกัลกัตตา\nกัวลาลัมเปอร์\nกัศมีร์\nกาฐมาณฑุ\nโกลกาตา\nควิเบก\nคอนเนตทิคัต\nคาบูล\nคุชราต\nคุนหมิง\nเคนตักกี\nเคนทักกี\nเคมบริดจ์\nแคชเมียร์\nแคนซัส\nแคนเบอร์รา\nแคโรไลนา\nแคลิฟอร์เนีย\nโคเปนเฮเกน\nโคลัมโบ\nโคโลราโด\nไครสต์เชิร์ช\nไคโร\nจาการ์ตา\nจำปาศักดิ์\nเจนไน\nเจนีวา\nเจ้อเจียง\nฉงชิ่ง\nเฉิงตู\nชานตง\nชิคาโก\nเชนไน\nเชอร์โนบิล\nซัปโปโร\nซานมารีโน\nซาบาห์\nซาราเยโว\nซาราวัก\nซิดนีย์\nซีอาน\nซีแอตเทิล\nซูริก\nซูริค\nเซเชลส์\nเซนได\nเซี่ยงไฮ้\nโซเฟีย\nโซล\nโซโลมอน\nไซ่ง่อน\nไซบีเรีย\nดัลลัส\nดาโคตา\nดานัง\nดีทรอยต์\nดูไบ\nเดนเวอร์\nเดลาแวร์\nเดียนเบียนฟู\nโดเวอร์\nโดฮา\nไดฟุกุ\nไดฟูกุ\nตรังกานู\nตริโปลี\nตูวาลู\nเตหะราน\nโตเกียว\nโตรอนโต\nทมิฬนาฑู\nทริโปลี\nทิเบต\nเทกซัส\nเท็กซัส\nเทนเนสซี\nเทลอาวีฟ\nแทสเมเนีย\nโทรอนโต\nไทเป\nธากา\nนางาซากิ\nนาริตะ\nนิวเจอร์ซีย์\nนิวเดลี\nนิวยอร์ก\nนิวยอร์ค\nนิวแฮมป์เชียร์\nเนบราสกา\nเนแบรสกา\nเนวาดา\nบรัสเซลส์\nบราซิเลีย\nบอมเบย์\nบอสตัน\nบังกาลอร์\nบังคาลอร์\nบูคาเรสต์\nบูดาเปสต์\nเบงกาซี\nเบนกาซี\nเบรุต\nเบลเกรด\nเบอร์ลิน\nแบกแดด\nปอยเปต\nปะลิส\nปะหัง\nปักกิ่ง\nปัญจาบ\nปัฏนา\nปารีส\nปีนัง\nเประ\nเปียงยาง\nพนมเปญ\nพระตะบอง\nพะโค\nพะสิม\nพาราณสี\nพิหารี\nเพนซิลวาเนีย\nเพนซิลเวเนีย\nฟรานซ์\nฟลอริดา\nฟิลาเดลเฟีย\nฟุกุชิมะ\nฟุกุชิมา\nฟุกุโอกะ\nฟูกูโอกะ\nแฟรงก์เฟิร์ต\nมอสโก\nมะนิลา\nมะละแหม่ง\nมัณฑะเลย์\nมัทราส\nมาดริด\nมิชิแกน\nมินนิโซตา\nมิยางิ\nมิลาน\nมิวนิก\nมิสซูรี\nมุมไบ\nเมน\nเมลเบิร์น\nเมาะตะมะ\nเมาะลำเลิง\nแมนจูเรีย\nแมนเชสเตอร์\nแมนฮัตตัน\nแมริแลนด์\nแมรีแลนด์\nแมสซาชูเซตส์\nยะไข่\nย่างกุ้ง\nยูทาห์\nยูนนาน\nเยรูซาเล็ม\nโยโกฮามา\nริยาด\nรีโอเดจาเนโร\nโรดไอแลนด์\nลอนดอน\nลอสแองเจลิส\nลาปาซ\nลาสเวกัส\nลิสบอน\nลุยเซียนา\nโลซาน\nโลซานน์\nวอชิงตัน\nวอร์ซอ\nวิสคอนซิน\nเวนิส\nเวลส์\nเวอร์จิเนีย\nเวอร์มอนต์\nเวียงจันทน์\nเวียนนา\nแวนคูเวอร์\nไวโอมิง\nสกอตแลนด์\nสก็อตแลนด์\nสตอกโฮล์ม\nสลังงอร์\nเสฉวน\nเสียมราฐ\nเสียมเรียบ\nหงสา\nหงสาวดี\nหนานไห่\nหลวงพระบาง\nหูเป่ย\nหูเป่ย์\nหูหนาน\nเหอเป่ย\nเหอเป่ย์\nเหอหนาน\nอชันตา\nอลาสกา\nอวันตี\nออริกอน\nออสโล\nอะแลสกา\nอัตตะปือ\nอัมมาน\nอัมสเตอร์ดัม\nอัสสัม\nอาบูดาบี\nอาร์คันซอ\nอินเดียนา\nอิบารากิ\nอิลลินอยส์\nอิสตันบูล\nอิสลามาบัด\nอุรุมชี\nอูลานบาตอร์\nเอดินบะระ\nเอเธนส์\nแอตแลนตา\nแอริโซนา\nแอลเจียร์\nโอคลาโฮมา\nโอค็อตสค์\nโอกินาวา\nโอซากา\nโอริสสา\nโอเรกอน\nโอไฮโอ\nไอดาโฮ\nไอโอวา\nฮอนโนลูลู\nฮานอย\nฮาเนดะ\nฮาราเร\nฮาวาย\nฮิโรชิมา\nฮุสตัน\nเฮลซิงกิ\n\nมกรา\nกุมภา\nมีนา\nเมษา\nพฤษภา\nมิถุนา\nกรกฎา\nสิงหา\nกันยา\nตุลา\nพฤศจิกา\nธันวา\nเอ\nบี\nซี\nดี\nอี\nเอฟ\nจี\nเอช\nไอ\nเจ\nเค\nแอล\nเอ็ม\nเอ็น\nโอ\nพี\nคิว\nอาร์\nเอส\nที\nยู\nวี\nดับเบิล\nดับบลิว\nเอ็กซ์\nเอ๊กซ์\nวาย\nแซด\nแอลฟา\nแอลฟ่า\nเบตา\nเบต้า\nแกมมา\nแกมม่า\nเดลตา\nเดลต้า\nโอเมกา\nโอเมก้า\nเมกะ\nกิกะ\nนาโน\nไมโคร\n\nกรรมาชน\nกรอบรูป\nกระดี๊กระด๊า\nกระบับ\nกราวนด์\nกรีน\nกรุ๊ป\nกฤษณ์\nกลาส\nก๊วน\nกษัตริยา\nกษัตริยาธิราช\nก่อนหน้า\nกะบับ\nกับดัก\nกัมมันตะ\nก๊าก\nก๋ากั่น\nกาญจน์\nกาญจนาภิเษก\nกามิกาเซ่\nการันตี\nกาหลิบ\nกิฟท์\nกิมจิ\nกีวี\nกึ๊ก\nกึ๋ย\nกุนซือ\nกุมภาพันธ์\nกู๋\nเกจิ\nเกมส์\nเกย์\nเกรด\nเกรย์\nเกสต์เฮาส์\nเก๊ะ\nเก๋ากี้\nเกิร์ล\nแกงค์\nแกรนด์\nแกสโซฮอล์\nแก๊สโซฮอล์\nโกเต็กซ์\nโกลด์\nโกะ\nโก๊ะ\nไกด์\nขั้นตอน\nเขวี้ยง\nคณาญาติ\nครัวซอง\nครัวซองต์\nคร่ำครวญ\nครีเอทีฟ\nครูเสด\nคลับ\nคลาสสิก\nคลิตอริส\nคลิป\nความหมาย\nควิก\nควีน\nคองเกรส\nคอนซูเมอร์\nคอนเซปต์\nคอนเซ็ปต์\nคอนโด\nคอนโดมิเนียม\nคอนเทนเนอร์\nคอนแทค\nคอนแท็ค\nคอนโทรล\nคอนเฟิร์ม\nคอปเตอร์\nคอมพ์\nคอมเพล็กซ์\nคอมมอนส์\nคอมเมนท์\nคอมเมนต์\nคอร์ป\nคอร์ปอเรชั่น\nคอร์รัปชัน\nคอร์รัปชั่น\nคอรัปชัน\nคอรัปชั่น\nคอร์ส\nคอลเล็กชั่น\nคอลัมน์\nคอลัมนิสต์\nคัตเอาต์\nคันคาก\nคันถธุระ\nคันธาระ\nคันยิ\nคัสตาร์ด\nคาราโอเกะ\nคีตกวี\nคีตปฏิภาณ\nคีตราชัน\nคาปูชิโน\nคามิคาเซ่\nคาเฟ่\nคาร์\nคาร์โก้\nคาราเมล\nคาแรกเตอร์\nคาแร็กเตอร์\nคาแรคเตอร์\nคาแร็คเตอร์\nคาวบอย\nคาสิโน\nคิกขุ\nคิวบิก\nคูลเลอร์\nเคบับ\nเครป\nเคลม\nเคลียร์\nเคลื่อนย้าย\nเคส\nเคอร์ฟิว\nแคชเชียร์\nแคทวอล์ค\nแคนดิเดต\nแคนตาลูป\nแคนยอน\nแคนู\nแคป\nแคมป์\nแคมปัส\nแคมเปญ\nแคร์\nแครกเกอร์\nแคร็กเกอร์\nแครอท\nแคสต์\nแคสติง\nแคสติ้ง\nโค้ก\nโค้ช\nโคโยตี\nโคโยตี้\nโครนา\nโคอะล่า\nโคอาลา\nโคอาล่า\nไคลแมกซ์\nไคลแม็กซ์\nงั้น\nง่าว\nงี้\nเง็ง\nโง่เขลา\nไง\nจตุคาม\nจ๊อกกี้\nจอหงวน\nจังโก้\nจัมโบ้\nจ๊าบ\nจารกรรม\nจารชน\nจิ๊ก\nจิ๊กโก๋\nจิ๊กซอว์\nจิตพิสัย\nจิตเภท\nจีดีพี\nจึ๊ก\nจุ๊ย\nจูน\nจูเนียร์\nเจ๊\nเจได\nเจ็ต\nเจล\nเจ๊าะแจ๊ะ\nเจี๊ยว\nแจ็กเก็ต\nแจ๊กเก็ต\nแจ็กพอต\nแจ็กพ็อต\nแจ๊กพอต\nแจ๊กพ็อต\nแจม\nแจ๊ส\nโจ๋\nฉลุย\nเฉิ่ม\nชนะเลิศ\nช็อค\nช็อต\nช็อป\nช็อปปิ้ง\nช็อปเปอร์\nชะโนด\nชัตเตอร์\nชัวร์\nชาร์จ\nชาร์ต\nชาร์ป\nชินบัญชร\nชิฟฟอน\nชีส\nชีอะห์\nเช็ก\nเช็งเม้ง\nเชฟ\nเชลียร์\nเชอร์รี่\nแชเชือน\nแช่แข็ง\nแชมป์\nแชมปิยอง\nแชมเปญ\nแชมเปี้ยน\nแชมพู\nโชว์รูม\nโชห่วย\nใช้งาน\nไชน่า\nซ้อ\nซอมบี้\nซะ\nซังเต\nซันตาคลอส\nซัพพลาย\nซัพพลายเออร์\nซัมเมอร์\nซากุระ\nซาดิสต์\nซาดิสม์\nซาตาน\nซานตาคลอส\nซาฟารี\nซาบะ\nซามูไร\nซาร์\nซาร์ดีน\nซาเล้ง\nซิง\nซิ่ง\nซิงเกิล\nซิตี\nซิตี้\nซินโดรม\nซิม\nซิ้ม\nซิมโฟนี\nซิมโฟนี่\nซิลเวอร์\nซี้\nซี้ซั้ว\nซีดาน\nซีน\nซีนีเพล็กซ์\nซีเนียร์\nซีร็อกซ์\nซีรีส์\nซีเรียส\nซีอีโอ\nซื่อบื้อ\nซุนหนี่\nซุปเปอร์\nซูชิ\nซูเปอร์\nซูม\nซูโม่\nซูเอี๋ย\nซูฮก\nเซ็กซ์\nเซ็กซี่\nเซ็กส์\nเซนเซอร์\nเซ็นเซอร์\nเซนเตอร์\nเซ็นเตอร์\nเซ็นทรัล\nเซนส์\nเซ่นไหว้\nเซฟตี้\nเซรามิก\nเซลส์\nเซลส์แมน\nเซอร์\nเซอร์ไพรส์\nเซอร์วิส\nเซาท์\nเซี้ยว\nแซ็ก\nแซกโซโฟน\nแซ็กโซโฟน\nแซนด์วิช\nแซมบ้า\nแซลมอน\nแซว\nโซเชียล\nโซน\nโซนี่\nโซลาร์\nโซโล\nโซโล่\nญาณทัสสนะ\nดยุก\nดยุค\nดร็อป\nดรัมเมเยอร์\nดรามา\nดราม่า\nดอกเตอร์\nด็อกเตอร์\nดัมพ์\nดั๊มพ์\nดาวน์\nดิกชันนารี\nดิสเครดิต\nดีกรี\nดีเจ\nดีไซน์\nดีไซน์เนอร์\nดีไซเนอร์\nดีเบต\nดีพาร์ตเมนต์\nดีพาร์ตเมนท์\nดีพาร์ทเมนต์\nดีพาร์ทเมนท์\nดีมานด์\nดีล\nดีลเลอร์\nดีเลย์\nเดชานุภาพ\nเดบิต\nเดโม\nเดย์\nเด้อ\nเดอะ\nเด๊ะ\nเดี้ยง\nเดี๊ยะ\nแดนซ์\nแดนเซอร์\nแดรี่\nโดนัท\nโดมิโน\nโดรายากิ\nไดเอ็ต\nตถตา\nตนเอง\nตรวจทาน\nตรวจสอบ\nตอกย้ำ\nต๊อง\nต่อยอด\nต่อรอง\nตะหงิด\nตังค์\nตันเถียน\nตัวตน\nตัวเอง\nตาปรือ\nต้าอ่วย\nติงต๊อง\nติ๋ม\nติ่มซำ\nติว\nติวเตอร์\nตี๋\nตื้บ\nตุ๊ก\nตุ๊กตุ๊ก\nตุ๊ด\nตุ๋ย\nตู้เซฟ\nเต๊ะ\nเตี๊ยม\nแตงกวา\nแตงโม\nแต๋ว\nโต๋เต๋\nโต๊ะจีน\nไตรมาส\nถ่ายทำ\nถูกต้อง\nทงคัตสึ\nทริป\nทรู\nทอม\nท็อป\nทอร์นาโด\nทอล์ค\nทักซิโด\nทันตกรรม\nทันตแพทยศาสตร์\nทับซ้อน\nทัวร์\nทัวร์นาเมนต์\nทัวร์นาเมนท์\nทัวริสต์\nทาเลนต์\nทาวน์\nทาวน์เฮาส์\nทำงาน\nทิป\nทิพยสมบัติ\nทิวลิป\nทีรามิสุ\nทีวี\nทูน่า\nเท็กซ์\nเทค\nเทคโน\nเทคโนแครต\nเทควันโด\nเทป\nเทรด\nเทรนด์\nเทรนเนอร์\nเทรลเลอร์\nเทรลเล่อร์\nเทเลกราฟ\nเทวบัญชา\nเทวบุตร\nเทวา\nเทวาธิราช\nเทโวโรหนะ\nเทอร์โบ\nเที่ยงคืน\nเที่ยงวัน\nเทียมทาน\nแทกติค\nแทคติค\nแทงกั๊ก\nแทงโก้\nโทมาฮอก\nโทมาฮอว์ก\nโทมาฮอว์ค\nโทร\nโทรโข่ง\nไทม์\nไทยแลนด์\nไทเฮา\nธรรมา\nธรรมาภิบาล\nธัมโม\nธีม\nธุรกรรม\nธุหร่ำ\nเธค\nนพมาศ\nนรีแพทย์\nน็อก\nน็อค\nน้องใหม่\nนอมินี\nนอร์ท\nน่ะ\nนางแบบ\nนาฏยศาลา\nนายแบบ\nนายพราน\nนินจา\nนิรันดร์\nนิว\nนิวส์\nนู้ด\nเนอะ\nเนิร์สเซอรี\nเนิร์สเซอรี่\nเนี้ยบ\nโนติส\nไนท์\nไนน์\nบรรพชน\nบร็อกโคลี\nบร็อคโคลี\nบรา\nบริกร\nบริวเวอรี่ส์\nบลอนด์\nบลูเบอร์รี\nบลูเบอร์รี่\nบ๊วย\nบอกซ์\nบ็อกซ์\nบ๊อกซ์\nบอดี้\nบอนด์\nบ๊อบ\nบอมบ์\nบ๋อย\nบอยคอต\nบอยคอตต์\nบอร์ด\nบังเกอร์\nบัตเตอร์\nบัลลาสต์\nบัส\nบาบูน\nบาร์บีคิว\nบาร์บี้\nบาลานซ์\nบิ๊ก\nบิล\nบึม\nบึ้ม\nบุญคุณ\nบุ๋น\nบุปผา\nบู๊\nบูชิโด\nบูติก\nบูติค\nบูม\nเบเกอรี่\nเบญจมบพิตร\nเบตาดีน\nเบนโตะ\nเบนโล\nเบบี้\nเบลอ\nเบอร์เกอร์\nเบอร์รี\nเบิร์ด\nเบิร์น\nแบ็กโฮ\nแบคโฮ\nแบด\nแบต\nแบนเนอร์\nแบรนด์\nแบล็ก\nแบล็ค\nไบโอ\nโบกี้\nโบตั๋น\nโบ้ย\nโบรกเกอร์\nโบรชัวร์\nโบว์\nโบว์ลิ่ง\nไบเบิล\nปฏิสัมพันธ์\nป๊อก\nปอดแหก\nป๊อป\nป๋อหลอ\nปักขคณนา\nปัจเจกชน\nปัจฉิมนิเทศ\nป๊า\nป๋า\nป่าไม้\nปาร์ตี้\nปาสกาล\nปาสคาล\nปาสเตอร์\nปิกอัพ\nปิ๊ง\nปิโตรเคมี\nปิยมิตร\nปึ้ก\nปูอัด\nเปโซ\nเป็นไง\nเปปเปอร์มินต์\nเปเปอร์\nเปราะบาง\nเป๊ะ\nเป่ายิงฉุบ\nเป่ายิ้งฉุบ\nเปียโน\nแป้ก\nแป๋ว\nแป๊ะเจี๊ยะ\nโปร\nโปรเจกต์\nโปรเจ็กต์\nโปรเจกเตอร์\nโปรเจ็กเตอร์\nโปรเจคท์\nโปรเจ็คท์\nโปรดักชั่น\nโปรดิวเซอร์\nโปรโมชั่น\nโปรโมต\nโปรโมเตอร์\nโปรโมท\nโปลิศ\nโปสเตอร์\nผลไม้\nผลักดัน\nผ้าห่ม\nผิดพลาด\nผู้นำ\nแผดเผา\nเฝอ\nพงษ์\nพริตตี้\nพรีเซนต์\nพรีเซ็นเตอร์\nพรีเมียม\nพรีเมียร์\nพฤหัส\nพล็อต\nพลาซ่า\nพลานุภาพ\nพ่อค้า\nพอเพียง\nพะเรอ\nพันธกิจ\nพันธุวิศวกรรม\nพาร์\nพาร์ตเนอร์\nพาร์ทเนอร์\nพาวเวอร์\nพาสเจอร์ไรส์\nพาสตา\nพาสต้า\nพาสปอร์ต\nพาเหรด\nพิซซ่า\nพีเรียด\nพุดดิ้ง\nพุทธภูมิ\nพุทธศตวรรษ\nพุทโธ\nพูล\nเพทนาการ\nเพนกวิน\nเพนตากอน\nเพรส\nเพรียวบาง\nเพลซ\nเพลท\nเพลย์บอย\nเพียบแปร้\nเพียว\nเพาเวอร์\nแพกเกจ\nแพ็ค\nแพตเทิร์น\nแพทเทิร์น\nแพทยสภา\nแพนงเชิญ\nแพนดา\nแพนด้า\nแพลน\nโพลล์\nโพลารอยด์\nโพสต์\nไพลิน\nฟยอร์ด\nฟรังก์\nฟรุต\nฟลอร์\nฟลุก\nฟลุค\nฟลุต\nฟลุท\nฟอยล์\nฟอร์ม\nฟันด์\nฟาวล์\nฟาสต์ฟู้ด\nฟินิกซ์\nฟิวเจอร์\nฟีด\nฟีเวอร์\nฟุตบาท\nเฟรช\nเฟรชชี่\nเฟรม\nเฟมินิสต์\nเฟส\nเฟอร์นิเจอร์\nเฟอร์รี่\nเฟิร์ม\nเฟี้ยวฟ้าว\nแฟกซ์\nแฟ็กซ์\nแฟนซี\nแฟนตาซี\nแฟ้บ\nแฟร์\nแฟรนไชส์\nแฟรี\nแฟรี่\nแฟลช\nแฟล็ต\nโฟน\nโฟม\nโฟล์ค\nไฟต์\nไฟแนนซ์\nไฟลต์\nไฟลท์\nภควัทคีตา\nภควัมบดี\nภควัมปติ\nภคันทลาพาธ\nภววิสัย\nภารตะ\nภูมิทัศน์\nม้ง\nมวลชน\nมยุราภิรมย์\nมลภาวะ\nมหภาค\nมหาอุปราชา\nมอคคา\nมอคค่า\nมอนสเตอร์\nม็อบ\nมอบตัว\nมอยส์เจอไรเซอร์\nมอลล์\nมะกัน\nมั้ง\nมัฟฟิน\nมั้ย\nม้านั่ง\nมาเฟีย\nมาม่า\nมายองเนส\nมายาคติ\nมาร์ก\nมาร์เก็ต\nมาร์เก็ตติ้ง\nมาร์ค\nมาร์จิน\nมาร์ช\nมาร์ต\nมาร์ท\nมาราธอน\nม้าหินอ่อน\nมินต์\nมินท์\nมินิ\nมิลค์\nมิวสิค\nมิสซัง\nมิสไซล์\nมิสเตอร์\nมือถือ\nมุมมอง\nเมคอัพ\nเมจิก\nเมจิค\nเมทัล\nเมเปิล\nเมาท์\nเมี่ยงคำ\nแมกกาซีน\nแม็กกาซีน\nแมคเคอเรล\nแม่ค้า\nแมชชีน\nแมชีน\nแมนชั่น\nแมมบ้า\nแมมโบ้\nโมจิ\nโมเดล\nโมเดิร์น\nโมเต็ล\nโมโนเรล\nโมหจริต\nไมค์\nไมเกรน\nยนตรกรรม\nยอมรับ\nยะเยือก\nยังไง\nยากูซ่า\nยาวี\nยิม\nยิว\nยุวทูต\nยูโทเปีย\nยูโร\nยูวี\nเยน\nเยลลี่\nเย้ว\nเยอบีรา\nเยอบีร่า\nเยอร์บีรา\nเยอร์บีร่า\nแยมโรล\nโยเกิร์ต\nโยโย่\nรวมมิตร\nร็อค\nร็อคเก็ต\nรองรับ\nรอมฎอน\nรอยัลตี้\nระโงก\nรันเวย์\nรัม\nรากหญ้า\nราชบัณฑิตยสถาน\nราชานุญาต\nราชานุสาวรีย์\nรามเทพ\nรามาธิบดี\nรามายณะ\nราเม็ง\nราเมน\nรายชื่อ\nราสเบอร์รี\nริกเตอร์\nริคเตอร์\nรีไซเคิล\nรีดไถ\nรีทัช\nรีเทิร์น\nรีไทร์\nรีแบรนด์\nรีพอร์ท\nรีโมต\nรีโมท\nรีวิว\nรีสอร์ต\nรีสอร์ท\nรีเสิร์ช\nรุมบ้า\nรุสโซ\nรูบิก\nรูบิค\nเรซิน\nเรซิ่น\nเรดิโอ\nเรต\nเรตติ้ง\nแรงใจ\nแรงดูด\nแรงผลัก\nแรลลี\nแรลลี่\nโรดแมป\nโรเนียว\nโรแมนติก\nโรแมนติค\nโรล\nโรลออน\nไรเฟิล\nล็อกเกอร์\nลอจิสติกส์\nล็อต\nล็อบบี้\nลอร์ด\nล้มเหลว\nละติน\nละอ่อน\nลาซานญ่า\nลาติน\nลาเต้\nลานีญา\nลามะ\nลิมิต\nลิมูซีน\nลิสต์\nลีก\nลีด\nลีดเดอร์\nลีเมอร์\nลีลาวดี\nลุค\nลูกชาย\nลูกสาว\nเลกเชอร์\nเลคเชอร์\nเลดี้\nเลสเบี้ยน\nเลิฟ\nแลนด์\nแล็บ\nโลโก้\nโลชั่น\nไลท์\nไลน์\nไลฟ์\nวนาราม\nวราราม\nวโรกาส\nว้อดก้า\nวอเตอร์\nวอฟเฟิล\nว้อย\nวอร์ม\nวอร์มอัพ\nวอร์รูม\nวอล์ก\nวอล์ค\nวอลซ์\nวอลนัต\nวอลนัท\nวอลล์\nว่ะ\nวันเวย์\nวัสสา\nวาซาบิ\nวาทกรรม\nวาทะ\nวานิลลา\nวานิลา\nวาฟเฟิล\nวาริชศาสตร์\nว้าว\nวัคค์\nวัจนะ\nวาไรตี้\nวิก\nวิดีโอ\nวิทย์\nวิน\nวิป\nวิปปิ้ง\nวิภัชภาค\nวิว\nวิลล์\nวิลเลจ\nวีเจ\nวีซ่า\nวีดิทัศน์\nวีน\nวีไอพี\nวืด\nเวณิกา\nเวเฟอร์\nเวสต์\nเวอร์\nเวิร์ก\nเวิร์กช็อป\nเวิร์ค\nเวิร์ลด์\nเวิลด์\nแวมไพร์\nไวกิ้ง\nไวเบรเตอร์\nไวอะกร้า\nไวอากร้า\nศากยบุตร\nศิรินทร์\nศิลปวัฒนธรรม\nศิลปากร\nศิวิไลซ์\nศึกษาศาสตร์\nสกรัม\nสกาย\nสกู๊ป\nสเกตช์\nสเก็ตช์\nสคริปต์\nสแควร์\nสงบสุข\nสจ๊วต\nสตรอเบอร์รี\nสตรอเบอรี\nสตรอว์เบอร์รี\nสตริง\nสต็อก\nสต๊อก\nสต็อค\nสต๊อค\nสตอรี\nสตาร์\nสตาร์ท\nสติกเกอร์\nสติ๊กเกอร์\nสตีล\nสตูดิโอ\nสเตชัน\nสเตชั่น\nสเตเดียม\nสเตนเลส\nสเต็ป\nสเตย์\nสเตริโอ\nสเตอริโอ\nสแตนดาร์ด\nสแตนเลส\nสโตน\nสโตร์\nสไตรค์\nสไตล์\nสถาปัตย์\nสไนเปอร์\nสปอต\nสป็อต\nสปอนเซอร์\nสปอร์ต\nสปา\nสปาย\nสปิริต\nสเปก\nสเปค\nสไปเดอร์\nสมณพราหมณ์\nสมาพันธ์\nสมิติเวช\nสโรชา\nสลัม\nสแล็ก\nสโลแกน\nสโลว์\nสไลด์\nสวีท\nสหรัฐ\nสหัชญาณ\nสหัสวรรษ\nสะกอม\nสะเด่า\nสะบึม\nสะบึมส์\nสะออน\nสังโฆ\nสะโหลสะเหล\nสันทนาการ\nสัมนา\nสามช่า\nสามแยก\nสารขัณฑ์\nสี่แยก\nสึนามิ\nสุนทรีย์\nสุริยยาตร\nสุริยยาตร์\nสุหนี่\nเสกสรรค์\nเสพติด\nเสือโคร่ง\nหงวน\nหน่อมแน้ม\nหมวย\nหมั่นโถว\nหม่านโถว\nหมายปอง\nหมิง\nหยวน\nหลวงตา\nหลวงปู่\nหลวงพี่\nหล่อฮังก้วย\nหลินจือ\nห่วย\nเห็นด้วย\nเหมย\nเห่ย\nเหี่ยวย่น\nแหม็บ\nแหวว\nโหงว\nโหงวเฮ้ง\nโหลน\nโหลยโท่ย\nไหง\nไหร่\nอพาร์ตเมนต์\nอพาร์ตเมนท์\nอพาร์ทเมนต์\nอพาร์ทเมนท์\nอมาตยาธิปไตย\nอยุติธรรม\nอริยสงฆ์\nอ่วม\nอวอร์ด\nออกแบบ\nออดิชั่น\nออดิทอเรียม\nออเดอร์\nออโต้\nออทิสติก\nอ่อนด้อย\nออฟ\nออยล์\nออร์แกน\nออร์แกนิก\nออร์แกนิค\nออร์เดอร์\nออรัล\nออสซี่\nอะ\nอัตลักษณ์\nอัตวิสัย\nอันเดอร์\nอันตรกิริยา\nอัลตรา\nอัลไซเมอร์\nอัลบัม\nอัลบั้ม\nอัลมอนด์\nอาข่า\nอาโนเนะ\nอาฟเตอร์\nอาร์ติสต์\nอาร์พีจี\nอาว์\nอาสวะ\nอิกัวนา\nอินดอร์\nอินดัสตรีส์\nอินเตอร์\nอิ่มแปร้\nอิมพีเรียล\nอิเล็กทริก\nอิเล็กทริค\nอิเลียด\nอิสรชน\nอิเหนา\nอิออน\nอีแต๋น\nอีโรติก\nอีเวนท์\nอีสต์\nอีสเตอร์\nอึ๊บ\nอึ้ม\nอึ๋ม\nอึมครึม\nอุด้ง\nอุตสาหการ\nอุเทน\nอุปการคุณ\nอุปทาน\nอุปนายก\nอุปนายิกา\nอุปสงค์\nอุปัทวเหตุ\nอุรังคธาตุ\nอูคูเลเล่\nอู้ฟู่\nเอ๋\nเอ็กซ์โป\nเอ็กซ์เพรส\nเอ็กโซเซต์\nเอ็กโซเซ่ต์\nเอเซีย\nเอ็นจีโอ\nเอ็นเตอร์เทน\nเอนทรานซ์\nเอ็นทรานซ์\nเอฟเฟ็กต์\nเอเยนต์\nเอลนีโญ\nเอสเปรสโซ\nเอสเพรสโซ\nเอ๋อ\nเอาต์\nเอาท์\nเอาท์ดอร์\nเอ๊าะ\nแอ็กชั่น\nแอ็คชั่น\nแอคทีฟ\nแอดมิชชั่น\nแอดมิสชัน\nแอนด์\nแอ๊บแบ๊ว\nแอปเปิล\nแอปเปิ้ล\nแอปพริคอท\nแอพพริคอท\nแอพริคอต\nแอร์\nแอโรบิก\nแอโรบิค\nแอลมอนด์\nแอสเตอร์\nโอเค\nโอเปอเรเตอร์\nโอเปร่า\nโอเพ่น\nโอ้ย\nโอยัวะ\nโอรสาธิราช\nโอเลี้ยง\nโอวัลติน\nโอเวอร์\nไอซ์\nไอซียู\nไอดอล\nไอเดีย\nไอติม\nฮวงจุ้ย\nฮ่องเต้\nฮองเฮา\nฮอต\nฮ็อต\nฮอตดอก\nฮ็อตด็อก\nฮันนีมูน\nฮัม\nฮัลโลวีน\nฮัลโหล\nฮากกา\nฮาร์ด\nฮาราคีรี\nฮาลาล\nฮาโลวีน\nฮิ\nฮิต\nฮิบรู\nฮิปโป\nฮิปฮอป\nฮีโร่\nฮูลาฮูป\nฮูล่าฮูป\nเฮฟวี\nเฮฟวี่\nเฮอร์ริเคน\nเฮีย\nแฮนด์\nแฮปปี้\nแฮมเบอร์เกอร์\nโฮป\nโฮม\nโฮลดิงส์\nโฮลวีต\nโฮสเตส\nไฮกุ\nไฮแจ็ค\nไฮโซ\nไฮเทค\nไฮบริด\nไฮเปอร์\nไฮไลต์\nไฮไลท์\nไฮเวย์\nไฮสคูล\nไฮเอนด์\n\nกรีซ\nกัมพูชา\nกัวเตมาลา\nกาตาร์\nกานา\nกาบอง\nกายอานา\nกินี\nเกรนาดีนส์\nเกรเนดา\nเกาหลี\nแกมเบีย\nโกตดิวัวร์\nคองโก\nคอโมโรส\nคอสตาริกา\nคาซัคสถาน\nคิตส์\nคิริบาตี\nคิริบาส\nคิวบา\nคีร์กีซสถาน\nคูเวต\nเคนยา\nเคปเวิร์ด\nเคย์แมน\nแคนาดา\nแคเมอรูน\nโครเอเชีย\nโคลอมเบีย\nจอร์เจีย\nจอร์แดน\nจาเมกา\nจิบูตี\nจีน\nชาด\nชิลี\nเช็ก\nซามัว\nซาอุ\nซิมบับเว\nซีเรีย\nซูดาน\nซูรินาเม\nเซนต์\nเซเนกัล\nเซอร์เบีย\nเซาตูเม\nเซียร์รา\nแซมเบีย\nโซมาเลีย\nโซเวียต\nไซปรัส\nญี่ปุ่น\nดารุสซาลาม\nเดนมาร์ก\nโดมินิกัน\nโดมินิกา\nตรินิแดด\nตองกา\nติมอร์\nตุรกี\nตูนิเซีย\nเติร์กเมนิสถาน\nโตโก\nโตเบโก\nไต้หวัน\nทาจิกิสถาน\nแทนซาเนีย\nนอร์เวย์\nนามิเบีย\nนาอูรู\nนิการากัว\nนิวซีแลนด์\nเนเธอร์แลนด์\nเนปาล\nเนวิส\nไนจีเรีย\nไนเจอร์\nบราซิล\nบริติช\nบริเตน\nบรูไน\nบอตสวานา\nบอสเนีย\nบังกลาเทศ\nบังคลาเทศ\nบัลแกเรีย\nบาร์บูดา\nบาร์เบโดส\nบาห์เรน\nบาฮามาส\nบิสเซา\nบุรุนดี\nบูร์กินาฟาโซ\nเบนิน\nเบลเยียม\nเบลารุส\nเบลีซ\nเบอร์มิวดา\nโบลิเวีย\nปรินซิปี\nปากีสถาน\nปานามา\nปาปัวนิวกินี\nปารากวัย\nปาเลสไตน์\nปาเลา\nเปรู\nเปอร์เซีย\nเปอร์โตริโก\nโปรตุเกส\nโปแลนด์\nฝรั่งเศส\nพม่า\nฟิจิ\nฟินแลนด์\nฟิลิปปินส์\nเฟรนช์\nภูฏาน\nภูฐาน\nมองโกเลีย\nมอนเตเนโกร\nมอนแทนา\nมอริเชียส\nมอริเตเนีย\nมอลโดวา\nมอลตา\nมัลดีฟส์\nมาเก๊า\nมาซิโดเนีย\nมาดากัสการ์\nมาร์แชลล์\nมาลาวี\nมาลี\nมาเลเซีย\nเม็กซิโก\nเมียนมาร์\nโมซัมบิก\nโมนาโก\nโมนาโค\nโมร็อกโก\nไมโครนีเซีย\nยูกันดา\nยูโกสลาเวีย\nยูเครน\nเยเมน\nเยอรมนี\nรวันดา\nรัสเซีย\nโรมาเนีย\nลักเซมเบิร์ก\nลัตเวีย\nลาว\nลิกเตนสไตน์\nลิทัวเนีย\nลิเบีย\nลีโอน\nลูเซีย\nเลโซโท\nเลบานอน\nเลสเต\nไลบีเรีย\nวาติกัน\nวานูอาตู\nวินเซนต์\nเวเนซุเอลา\nเวียดนาม\nศรีลังกา\nสเปน\nสโลวะเกีย\nสโลวัก\nสโลวีเนีย\nสวาซิแลนด์\nสวิตเซอร์แลนด์\nสวีเดน\nสหรัฐ\nสหราชอาณาจักร\nสิกขิม\nสิงคโปร์\nอเมริกา\nออสเตรเลีย\nออสเตรีย\nอันดอร์รา\nอัฟกานิสถาน\nอาเซอร์ไบจาน\nอาร์เจนตินา\nอาร์เมเนีย\nอาระเบีย\nอิเควทอเรียล\nอิตาลี\nอินเดีย\nอินโดนีเซีย\nอิรัก\nอิสราเอล\nอิหร่าน\nอียิปต์\nอุซเบกิสถาน\nอุรุกวัย\nเอกวาดอร์\nเอธิโอเปีย\nเอมิเรตส์\nเอริเทรีย\nเอลซัลวาดอร์\nเอสโตเนีย\nแองโกลา\nแอนติกา\nแอลจีเรีย\nแอลเบเนีย\nโอมาน\nไอซ์แลนด์\nไอร์แลนด์\nฮ่องกง\nฮอนดูรัส\nฮังการี\nเฮติ\nเฮอร์เซโกวีนา\n\nกระบี่\nกรุงเทพ\nกาญจนบุรี\nกาฬสินธุ์\nกำแพงเพชร\nขอนแก่น\nจันทบุรี\nฉะเชิงเทรา\nชลบุรี\nชัยนาท\nชัยภูมิ\nชุมพร\nเชียงราย\nเชียงใหม่\nตรัง\nตราด\nตาก\nนครนายก\nนครปฐม\nนครพนม\nนครราชสีมา\nนครศรีธรรมราช\nนครสวรรค์\nนนทบุรี\nนราธิวาส\nน่าน\nบึงกาฬ\nบุรีรัมย์\nปทุมธานี\nประจวบคีรีขันธ์\nปราจีนบุรี\nปัตตานี\nพะเยา\nพังงา\nพัทลุง\nพิจิตร\nพิษณุโลก\nเพชรบุรี\nเพชรบูรณ์\nแพร่\nภูเก็ต\nมหาสารคาม\nมุกดาหาร\nแม่ฮ่องสอน\nยโสธร\nยะลา\nร้อยเอ็ด\nระนอง\nระยอง\nราชบุรี\nลพบุรี\nลำปาง\nลำพูน\nเลย\nศรีสะเกษ\nสกลนคร\nสงขลา\nสตูล\nสมุทรปราการ\nสมุทรสงคราม\nสมุทรสาคร\nสระแก้ว\nสระบุรี\nสิงห์บุรี\nสุโขทัย\nสุพรรณบุรี\nสุราษฎร์\nสุราษฎร์ธานี\nสุรินทร์\nหนองคาย\nหนองบัวลำภู\nอยุธยา\nอ่างทอง\nอำนาจเจริญ\nอุดรธานี\nอุตรดิตถ์\nอุทัยธานี\nอุบลราชธานี\nกันทรลักษ์\nจตุจักร\nไชยา\nซีคอน\nดอนเมือง\nถลาง\nไทรโยค\nธนบุรี\nธัญบุรี\nบางกอก\nบางปะกง\nบางระจัน\nปะทิว\nปาย\nพญาไท\nพัฒน์พงษ์\nพัทยา\nพารากอน\nภูมิซรอล\nรัตนาธิเบศร์\nรังสิต\nลันตา\nลาดพร้าว\nวโรรส\nวิภาวดี\nสตึก\nสมุย\nสัตหีบ\nสิมิลัน\nสุขุมวิท\nสุไหง\nเสลภูมิ\nอังรีดูนังต์\nอ่างขาง\nอินทนนท์\nเอ็มโพเรียม\n\nคิวชู\nแคริบเบียน\nแคสเปียน\nดานูบ\nตะนาวศรี\nนอร์วีเจียน\nนิโคบาร์\nเนรัญชรา\nไนล์\nบอร์เนียว\nบอลติก\nเบงกอล\nปิง\nแปซิฟิก\nมะละกา\nมินดาเนา\nมิสซิสซิปปี\nเมดิเตอร์เรเนียน\nเมโสโปเตเมีย\nยมุนา\nยุโรป\nยูเรเชีย\nยูเรเซีย\nแยงซี\nแยงซีเกียง\nสแกนดิเนเวีย\nสะโตง\nสาละวิน\nสุมาตรา\nสุเอซ\nอะเมซอน\nอันดามัน\nอัลไต\nอาร์กติก\nอาหรับ\nอินโดจีน\nอิรวดี\nอิระวดี\nอีเจียน\nอุษาคเณย์\nอูราล\nเอเชีย\nเอเดรียติก\nเอเวอเรสต์\nแอตแลนติก\nแอนตาร์กติก\nแอนตาร์กติกา\nแอฟริกา\nโอลิมปัส\nไอโอเนียน\nฮวงโห\nฮอกไกโด\nฮอนชู\n\nกบิลพัสดุ์\nกุสินารา\nโกลิยะ\nโกสัมพี\nโคตรบอง\nโคตรบูรณ์\nตองอู\nทรอย\nทวารวดี\nทวาราวดี\nเทวทหะ\nไทรบุรี\nนาลันทา\nไบแซนไทน์\nปรัสเซีย\nปัลลวะ\nปาฏลีบุตร\nพุทธคยา\nมถุรา\nมายัน\nมิถิลา\nราชคฤห์\nล้านช้าง\nล้านนา\nลุมพินี\nวัชชี\nเวสาลี\nสารนาถ\nสาวัตถี\nหริภุญชัย\nอโยธยา\nออตโตมัน\nอังวะ\nอินทปัตถ์\nอุชเชนี\n\nกราฟิก\nกราฟิกส์\nกราฟิค\nกริด\nกิกะไบต์\nกูเกิล\nกูเกิ้ล\nเกตเวย์\nโกลบอล\nคลัสเตอร์\nคลาส\nคลิก\nคลิปอาร์ต\nคอนโซล\nคอนเทนต์\nคอมพิวติ้ง\nคอมไพล์\nคอมไพเลอร์\nคอมมูนิเคชั่น\nคอร์\nคีย์\nคีย์บอร์ด\nเครือข่าย\nเคอร์เซอร์\nเคอร์เนล\nแคช\nแคมฟรอก\nแคมฟร็อก\nแคร็ก\nโค้ด\nจาวา\nจีพีเอส\nชิป\nชิพ\nเชลล์\nแช็ต\nแชนเนล\nแชนแนล\nซ็อกเก็ต\nซอฟต์แวร์\nซอฟท์แวร์\nซอร์ส\nซัพพอร์ต\nซัพพอร์ท\nซีดี\nซีดีรอม\nซีเนอร์\nเซิร์ฟเวอร์\nโซลูชัน\nโซลูชั่น\nไซต์\nไซเบอร์\nทรานแซกชัน\nทรานแซกชั่น\nทรานแซ็กชัน\nทรานแซ็กชั่น\nทรานแซคชัน\nทรานแซคชั่น\nทรานแซ็คชัน\nทรานแซ็คชั่น\nทวิตเตอร์\nทวีต\nทัชแพด\nเทมเพลต\nเทอร์มินัล\nแท็ก\nแท็บ\nแทบเล็ต\nโทรจัน\nเน็ต\nเน็ตบุ๊ก\nเน็ตบุค\nเน็ตบุ๊ค\nเน็ตเวิร์ก\nเน็ตเวิร์ค\nโน้ตบุ๊ก\nโน้ตบุค\nโน้ตบุ๊ค\nดอส\nดาวน์เกรด\nดาวน์โหลด\nดิจิตอล\nดิจิทัล\nดีบั๊ก\nดีวีดี\nดีไวซ์\nเดเบียน\nเดลไฟ\nเดสก์ท็อป\nโดเมน\nไดรว์\nไดรเวอร์\nไดเรกทอรี\nไดโอด\nเทเลคอม\nบล็อกเกอร์\nบรอดแบนด์\nบราวเซอร์\nบลูทูท\nบลูทูธ\nบลูเรย์\nบั๊ก\nบัฟเฟอร์\nบิต\nบิท\nบูต\nเบราว์เซอร์\nแบนด์วิดท์\nไบต์\nไบนารี\nโปรแกรมเมอร์\nโปรเซส\nโปรเซสเซอร์\nโปรโตคอล\nพร็อกซี\nพอร์ต\nพอร์ท\nพาเนล\nพาร์ทิชัน\nพารามิเตอร์\nพาสเวิร์ด\nพิกเซล\nเพจ\nเพจเจอร์\nแพกเก็ต\nแพตช์\nแพลตฟอร์ม\nโพรเซส\nโพรเซสเซอร์\nโพรโทคอล\nไพธอน\nฟล็อปส์\nฟอนต์\nฟอร์แมต\nฟอร์เวิร์ด\nฟอรัม\nฟีเจอร์\nเฟซบุ๊ก\nเฟิร์มแวร์\nแฟล็ก\nโฟลเดอร์\nไฟร์ฟอกซ์\nไฟร์วอลล์\nไฟล์\nมอดูล\nมอนิเตอร์\nมัลติ\nมัลติทัช\nมัลติเพล็กซ์\nมัลแวร์\nมาสเตอร์\nมีเดีย\nเมนู\nเมมโมรี\nเมล\nเมาส์\nแมค\nโมดูล\nโมเด็ม\nโมบาย\nโมบายล์\nโมไบล์\nไมโครซอฟท์\nยูนิกซ์\nยูนิโคด\nยูนิโค้ด\nริงโทน\nรีเฟรช\nรีเลย์\nเราเตอร์\nเรียลไทม์\nลิงก์\nลินุกซ์\nลีนุกซ์\nลูป\nเลเยอร์\nแล็ปท็อป\nไลเซนส์\nไลบรารี\nวิกิ\nวิกิพีเดีย\nวินโดวส์\nวินโดว์ส\nเว็บ\nเวอร์ชวล\nเวอร์ชัน\nเวอร์ชั่น\nเวิร์กสเตชัน\nเวิร์กสเตชั่น\nเวิร์คสเตชัน\nเวิร์คสเตชั่น\nเวิร์ด\nเวิร์ม\nไวแมกซ์\nสกรีน\nสแกน\nสแกนเนอร์\nสแต็ก\nสนิฟเฟอร์\nสปายแวร์\nสเปซ\nสแปม\nสมาร์ท\nสล็อต\nเสิร์ช\nโหลด\nออนไลน์\nออปติก\nออปติคอล\nออปติคัล\nออฟไลน์\nออราเคิล\nอัพเกรด\nอัพเดต\nอัพโหลด\nอัปเกรด\nอัปเดต\nอัปโหลด\nอัลกอริทึม\nอาร์กิวเมนต์\nอินเตอร์เน็ต\nอินทิเกรเตอร์\nอินเทอร์เน็ต\nอินเทอร์เฟซ\nอินเทล\nอินพุต\nอินพุท\nอีเมล\nอีเมล์\nอูบุนตู\nอูบันตู\nเอนจิน\nเอ็นจิน\nเอาต์พุต\nเอาต์พุท\nเอาท์พุต\nเอาท์พุท\nแอนะล็อก\nแอนิเมชัน\nแอนิเมชั่น\nแอปพลิเคชัน\nแอปพลิเคชั่น\nแอพพลิเคชัน\nแอพพลิเคชั่น\nแอสเซมบลี\nแอสเซมเบลอร์\nโอเพน\nไอคอน\nไอซี\nไอพอด\nไอพ็อด\nไอแพด\nไอโฟน\nฮับ\nฮาร์ดดิสก์\nฮาร์ดแวร์\nแฮกเกอร์\nแฮ็กเกอร์\nแฮนด์เฮลด์\nโฮสต์\n\nกรีก\nกัณณาฑ\nกัศมีรี\nคันจิ\nคาตาคานะ\nคุชราตี\nคุรุมุขี\nซีริลลิก\nซูลู\nเซลติก\nเซิร์บ\nตากาล็อก\nเตลุคู\nเติร์ก\nทราวิฑ\nเบงกาลี\nปัญจาบี\nพินอิน\nมลยาฬัม\nมองโกล\nมาราฐี\nมาเลย์\nเม็กซิกัน\nแมนจู\nแมนดาริน\nไมถิลี\nเยอรมัน\nรัสเซียน\nสวาฮิลี\nสวิส\nสินธี\nอูรดู\nอัสสมี\nอารบิก\nอิตาเลียน\nอุยกูร์\nแอฟริกัน\nโอริยา\nไอริช\nฮันกึล\nฮินดี\nฮิรางานะ\nฮีบรู\n\nกรีนพีซ\nกรือเซะ\nกวนอิม\nกวนอู\nกัดดาฟี\nกัลยาณวัตร\nกัสสปะ\nกาลิเลโอ\nกินเนส\nกุมภกรรณ\nกูเตนเบิร์ก\nเกตส์\nเกษมณี\nโกณฑัญญะ\nขงเบ้ง\nคริสโตเฟอร์\nคองคอร์ด\nคอลเกต\nคานธี\nคาเบรียล\nคาร์ฟูร์\nคาร์สัน\nคาราบาว\nคาสิโอ\nคิริน\nคุนลุ้น\nคูโบต้า\nเครมลิน\nแคทรีนา\nโคตมะ\nโคตมี\nโคลัมบัส\nไคฟง\nไครสเลอร์\nง้อไบ๊\nจตุพร\nจ็อบส์\nจอห์น\nจิ้น\nจิม\nจิ๋ม\nจิว\nจุฬาภรณ์\nจุฬาลงกรณ์\nเจมส์\nแจ็กสัน\nโจเซฟ\nโจว\nชมัยมรุเชฐ\nชมัยมรุเชษฐ์\nชเวดากอง\nชาร์ลส์\nชินราช\nชินวัตร\nชุนชิว\nเช็ง\nเชตวัน\nเชฟรอน\nเชฟโรเลต\nเชลซี\nไชยานุชิต\nซ่ง\nซังฮี้\nซัดดัม\nซันซิล\nซัมซุง\nซัวเจ๋ง\nซินหัว\nซีซาร์\nซีแพค\nซูซาน\nซูซูกิ\nซูบารุ\nเซ็นทารา\nเซเวน\nเซเว่น\nโซฟิเทล\nโซยุซ\nโซยูซ\nณัฐวุฒิ\nดาร์ลี่\nดาวโจนส์\nดิสนีย์\nดีแทค\nดูปองท์\nเดโมแครต\nเดลล์\nเดลินิวส์\nเดวิด\nแดวู\nโดนัลด์\nโดราเอมอน\nโดเรมอน\nต๋อง\nตั๊กม้อ\nตากสิน\nตาเมือน\nตาลีบัน\nตูน\nเตมีย์\nโต๋\nโตชิบา\nโตโยต้า\nถังซัมจั๋ง\nถังซำจั๋ง\nทรพา\nทราเวล\nทรูมูฟ\nทีปังกร\nเทปโก\nเทพรัตน\nเทวทัต\nเทสโก้\nโทมัส\nไททานิก\nไททานิค\nไทยรัฐ\nธีออส\nนครินทรา\nนโปเลียน\nนพดล\nนราดูร\nนเรนทร\nนอสตราดามุส\nนาซา\nนาซ่า\nนาซี\nนาโต\nนาโต้\nนาลแก\nนิคอน\nนิโคลัส\nนิด้า\nนินเทนโด\nนิปปอน\nนิวตัน\nนิสสัน\nเนคเทค\nเนชั่น\nเนชันแนล\nเนชั่นแนล\nเนวิน\nเนสเล่\nเนสาด\nแนท\nแนสแดค\nโนเกีย\nโนเบล\nโนเวลล์\nโนโวเทล\nไนเม็กซ์\nบรอดเวย์\nบรัดเลย์\nบรู๊ซ\nบัลเมอร์\nบารัก\nบารัค\nบู๊ตึ๊ง\nเบญกาย\nเบนซ์\nเบ็นซ์\nเบนจามิน\nโบตัน\nไบโอเทค\nประชาธิปัตย์\nปวีณา\nปอเต็กตึ๊ง\nปอเต๊กตึ๊ง\nป่อเต็กตึ๊ง\nปัตตะโชติ\nปารุสก์\nปีเตอร์\nปูติน\nเป๊ปซี่\nเป้ย\nเปอร์โยต์\nเปาบุ้นจิ้น\nโปเกมอน\nโป๊ยก่าย\nพรหมทัต\nพลาโต\nพอลล่า\nพานาโซนิค\nพานาโซนิก\nพิทยานุกูล\nพิมพิสาร\nเพนแทกซ์\nเพลโต\nไพโอเนียร์\nฟรอยด์\nฟรังซิส\nฟรานซิส\nฟลอเรนซ์\nฟอร์ด\nฟิลิปส์\nฟูจิ\nแฟซ่า\nโฟร์โมสต์\nภูมิพล\nภูริทัต\nมงฟอร์ต\nมณโฑ\nมติชน\nมหิตลาธิเบศร\nมโหสถ\nมัจฉานุ\nมาร์กาเร็ต\nมาร์ติน\nมาสด้า\nมิตซูบิชิ\nมิราเคิล\nมุสโสลินี\nเม้ง\nเมจิ\nเมอร์ซีเดส\nเมอร์เซเดส\nแมกซ์เวลล์\nแมกไซไซ\nแมคอินทอช\nแมชีนเนอรี่\nโมคคัลลานะ\nโมโตโรลา\nโมโตโรล่า\nโมเนีย\nไมเคิล\nไมยราพณ์\nยโสธรา\nยะโฮวา\nยะโฮวาห์\nยามาฮ่า\nยาเวห์\nยาฮู\nยูนิเซฟ\nยูเนสโก\nยูไล\nเยโฮวาห์\nรอยเตอร์\nรอยัล\nรัชดา\nรัสปูติน\nราฟาเอล\nรามาวตาร\nราเมศวร\nราหุล\nริชาร์ด\nรีพับลิกัน\nรูนีย์\nเรนโบว์\nแรมโบ้\nโรตารี\nโรนัลโด\nโรนัลโด้\nโรบินสัน\nโรเบิร์ต\nล็อกซเล่ย์\nลิงคอล์น\nลิจฉวี\nลิไท\nลิไทย\nลินคอล์น\nลิเวอร์พูล\nเลโนโว\nเลียดก๊ก\nโลตัส\nวชิราลงกรณ์\nวลาดิเมียร์\nวอลล์สตรีท\nวาเลนไทน์\nวิกตอเรีย\nวิทยานุสรณ์\nวิทยายน\nวิมเบิลดัน\nวิลเลียม\nวีระ\nวุฒิชัย\nเวียดกง\nไวตามิลค์\nศกุนตลา\nศรีวิชัย\nศิริพงษ์\nศิริราช\nศุภชลาศัย\nสดกก๊อกธม\nสดายุ\nสตาลิน\nสตีฟ\nสแตนฟอร์ด\nสวรินทิรา\nสังกัจจายน์\nสาทิตย์\nสารีบุตร\nสิริกิติ์\nสิรินธร\nสิหิงค์\nสีวลี\nสีหนุ\nสีหมุนี\nสีหโมนี\nสุครีพ\nสุทโธทนะ\nสุเทพ\nสุนทราภรณ์\nสุนีย์\nสุรนารี\nสุรยุทธ์\nสุริยาสน์\nเส้าหลิน\nโสกราตีส\nโสภิต\nหนุมาน\nหลินฮุ่ย\nหลุยส์\nเห้งเจีย\nไหหม่า\nองคต\nองคุลิมาล\nอชาตศัตรู\nอดุลยเดช\nอพอลโล\nอริสโตเติล\nอริสมันต์\nอลิซาเบธ\nอ๋อม\nออร์คิด\nออสการ์\nอะพอลโล\nอับราฮัม\nอั้ม\nอัลกออิดะห์\nอัลคาเทล\nอัลจาซีราห์\nอัลเฟรด\nอัลเลาะห์\nอัสซุส\nอัสสชิ\nอัสสัมชัญ\nอาเซม\nอาเซ็ม\nอาเซียน\nอาฟต้า\nอาร์เซนอล\nอินทรชิต\nอินทราทิตย์\nอีซูซุ\nอีเลฟเวน\nอีเลฟเว่น\nอุณรุท\nอุบลรัตน์\nอุบาลี\nอุ๋ย\nเอกทัศน์\nเอเซอร์\nเอ็ดเวิร์ด\nเอดิสัน\nเอแบค\nเอลิซาเบธ\nเอสพลานาด\nเอสพลานาร์ด\nแอคคอร์\nแอคคอร์ด\nแองเจลิน่า\nแอตแลนติส\nแอน\nแอ๋ม\nแอมบาสซาเดอร์\nแอมบาสเดอร์\nแอมเวย์\nแอ๋ว\nโอดีสซีย์\nโอเดียน\nโอบามา\nโอรสาราม\nโอลิมเปีย\nโออิชิ\nไอน์สไตน์\nฮอนด้า\nฮอปกินส์\nฮอลลีวูด\nฮอลลีวู้ด\nฮานามิ\nฮามาส\nฮิตเลอร์\nฮิตาชิ\nฮุนเซน\nฮุนเซ็น\nฮุนได\nฮุสเซ็น\nเฮนรี\nเฮนรี่\nเฮเลน\nโฮจิมินห์\nโฮปเวลล์\nโฮเมอร์\n\nกลีเซอรีน\nกำทอน\nแกนีมีด\nครอส\nคริสตัล\nคลอโรพลาสต์\nคลอไรด์\nควอนตัม\nคอนดักเตอร์\nคอปเปอร์\nคอลลาเจน\nคอเลสเตอรอล\nคอสมิก\nคูลอมบ์\nเคอราติน\nแคโรทีน\nแคสสินี\nโครมาโทกราฟี\nไคโตซาน\nจีโนม\nจุลชีววิทยา\nชิคุนกุนยา\nซัลฟิวริก\nซัลเฟต\nซัลไฟด์\nซิงค์\nซิริอุส\nซิลิกา\nซิลิเกต\nซิลิโคน\nซีเทน\nซีเวิร์ต\nเซ็กเตอร์\nเซ็กเมนต์\nเซมิ\nโซนาร์\nไซบอร์ก\nดอปเปลอร์\nดอปเพลอร์\nไดนามิก\nไดนามิกส์\nไดนามิค\nไดนามิคส์\nไดออกไซด์\nทรานส์\nทามิฟลู\nเทฟลอน\nเทสโทสเตอโรน\nเทอร์โม\nแทนนิน\nไททัน\nไทฟอยด์\nไทรอยด์\nธาลัสซีเมีย\nเนกาตีฟ\nโนวา\nบอแรกซ์\nโบทอกซ์\nโบท็อกซ์\nไบโอติน\nปฏิยานุพันธ์\nโปรเจสเตอโรน\nพอลิเมอร์\nพันธุศาสตร์\nพัลซาร์\nพาร์กินสัน\nพาราเซตามอล\nพาราโบลา\nเพอร์ออกไซด์\nโพรเจสเทอโรน\nโพลาไรซ์\nโพลิเมอร์\nโพลีเอทิลีน\nไพรเมต\nฟลาโวนอยด์\nฟลูออเรสเซนซ์\nฟลูออไรด์\nฟอสซิล\nฟิชชัน\nฟิวชัน\nฟีโรโมน\nไฟเบอร์\nมอนอกไซด์\nมิราจ\nเมตริกซ์\nเมทริกซ์\nเมลานิน\nเมลามีน\nโมเมนตัม\nไมโตคอนเดรีย\nไมโทคอนเดรีย\nยีสต์\nยูริก\nยูเรีย\nรูมาตอยด์\nวีก้า\nเวกเตอร์\nเวก้า\nเวสิเคิล\nโวลต์\nสเกล\nสเกลาร์\nสเต็ม\nสเตียรอยด์\nสปีชีส์\nสเปิร์ม\nสัมพัทธภาพ\nสุริยจักรวาล\nออกเทน\nออโรรา\nออโรร่า\nอะคริลิก\nอะครีลิก\nอะซีติก\nอะซีโตน\nอะมิโน\nอะลูมินา\nอันโดรเมดา\nอัลคาไลน์\nอัลตราซาวด์\nอัลตราซาวนด์\nอัลลอยด์\nอินทิกรัล\nอินทิเกรต\nอีโบลา\nอีโบล่า\nเอ็กซ์โพเนนเชียล\nเอทานอล\nเอทิลีน\nเอนโทรปี\nเอสเตอร์\nเอสโตรเจน\nเอสโทรเจน\nแอนดรอยด์\nแอนแทร็กซ์\nแอมพลิจูด\nแอมโมเนียม\nแอลกอฮอลิซึม\nแอสพาร์แตม\nโอเซลทามิเวียร์\nฮับเบิล\nฮิวมัส\nไฮดรอกไซด์\nไฮดรอลิก\nไฮโดรลิก\nไฮเพอร์โบลา\n\nกงเต็ก\nกฎุมพี\nกฏ\nกฏหมาย\nกบฎ\nกราไฟต์\nก๊อปปี้\nกะทะ\nกังวาล\nกุฎฐัง\nกุฏุมพี\nฃวด\nคฑา\nคลินิค\nคลีนิก\nคลีนิค\nคาทอลิค\nคึ่นฉ่าย\nแคตตาล็อก\nโควต้า\nฅน\nจุมพฎ\nช็อคโกแลต\nแซ่ด\nดัทช์\nทนง\nทรมาณ\nทราก\nทะแยง\nทิฏฐิ\nบล็อค\nบ๊องแบ๊ว\nบัลเล่ต์\nเบรค\nแบงค์\nปรากฎ\nปัคคหะ\nปาฏิโมกข์\nปิติ\nปิรามิด\nโปรเตสแตนท์\nพนิช\nพยักเพยิด\nพริ้ว\nพลูโตเนียม\nพากษ์\nเฟิร์น\nยากี้\nเยภุยยสิกา\nรุสเซีย\nฤาษี\nล็อค\nล็อคเกอร์\nวันทยาหัตถ์\nวานิช\nวิญญาน\nวิศิษฐ์\nศรีษะ\nสเปกโทรสโคป\nสฤษฎ์\nสลิ่ม\nสัตตสดก\nสาราณียากร\nสุกี้\nสุกี้ยากี้\nสูญญากาศ\nหยอมแหยม\nหยอย\nหล่ะ\nอะดรีนาลีน\nอะหลั่ย\nอัตคัต\nอัฟริกา\nอานิสงค์\nอาฟริกา\nอิริยาบท\nอิเลคโทรนิคส์\nอีรุงตุงนัง\nอุตรายัน\nอุลตรา\nอุลตร้า\nโอกาศ\n\nกกหู\nกงการ\nกงจักร\nกฎเกณฑ์\nกฎบัตร\nกฎหมาย\nกฎหมู่\nกดขี่\nกดดัน\nก้นกบ\nก้นบึ้ง\nก้นปล่อง\nกนิษฐภคินี\nกนิษฐภาดา\nกรงเล็บ\nกรมการ\nกรมท่า\nกรมธรรม์\nกรมนา\nกรมวัง\nกรรมกร\nกรรมการ\nกรรมฐาน\nกรรมบถ\nกรรมพันธุ์\nกรรมวิธี\nกรรมสิทธิ์\nกระจกเงา\nกระจกตา\nกระจกนูน\nกระจกเว้า\nกระจอกชวา\nกระจอกเทศ\nกระจ้อยร่อย\nกระจับบก\nกระจับปิ้ง\nกระจับปี่\nกระโชกโฮกฮาก\nกระดานดำ\nกระดานหก\nกระดาษแก้ว\nกระดาษไข\nกระดาษทราย\nกระดาษสา\nกระดูกงู\nกระทาชาย\nกระเท่เร่\nกระบวนการ\nกระบองเพชร\nกระผีกริ้น\nกระยาทิพย์\nกระยาสารท\nกระยาหาร\nกระสอบทราย\nกระสุนปืน\nกระแสจิต\nกระแสน้ำ\nกระแสลม\nกรับคู่\nกรับพวง\nกรับเสภา\nกราดเกรี้ยว\nกราวรูด\nกริ่งเกรง\nกรีฑาสถาน\nกรีดกราย\nกรี๊ดกร๊าด\nกลไก\nกลบท\nกลเม็ด\nกลยุทธ์\nกลวิธี\nกลศาสตร์\nกลอักษร\nกลบเกลื่อน\nกลมกล่อม\nกลมกลืน\nกลมเกลียว\nกล้วยแขก\nกล้วยไม้\nกล่องเสียง\nกล่อมเกลา\nกล่อมเกลี้ยง\nกลัดกลุ้ม\nกลัดมัน\nกลั่นกรอง\nกลั่นแกล้ง\nกลับกลอก\nกลางคน\nกลางคัน\nกลางค่ำ\nกลางคืน\nกลางแจ้ง\nกลางแปลง\nกลางวัน\nกลาดเกลื่อน\nกล่าวขวัญ\nกล่าวโทษ\nกล่าวหา\nกล้ำกราย\nกล้ำกลืน\nกลิ้งกลอก\nกลิ้งเกลือก\nกลิ่นอาย\nกลียุค\nกวดขัน\nกวัดแกว่ง\nกวัดไกว\nกวีนิพนธ์\nก่อกวน\nก่อการ\nก่อตั้ง\nก่อสร้าง\nก่อหวอด\nก้อร่อก้อติก\nกองกลาง\nกองเกิน\nกองโจร\nกองทัพ\nกองทุน\nกองพล\nกองพัน\nกองฟอน\nกองร้อย\nกองหนุน\nกอบโกย\nกะเกณฑ์\nกะบังลม\nกักกัน\nกักขัง\nกักตัว\nกักตุน\nกัณฑ์เทศน์\nกัดฟัน\nกันชน\nกันท่า\nกันสาด\nกันเอง\nกับแกล้ม\nกับข้าว\nกับระเบิด\nกากเพชร\nกากหมู\nกาชาด\nกาญจนาภิเษก\nก้านคอ\nกาฝาก\nก้ามกราม\nกามกิจ\nกามคุณ\nกามเทพ\nกามโรค\nก้ามปู\nกายกรรม\nกายบริหาร\nกายภาพ\nกายวิภาค\nกายสิทธิ์\nก่ายกอง\nการคลัง\nการเงิน\nการบ้าน\nการเปรียญ\nการเมือง\nการเรือน\nการละเล่น\nกาลกิริยา\nกาลเทศะ\nก้าวก่าย\nก้าวร้าว\nก้าวหน้า\nกาสาวพัสตร์\nกาฬพฤกษ์\nกาฬโรค\nกำปั้น\nกำมือ\nกำแพงขาว\nกำลังใจ\nกำลังม้า\nกี่งอำเภอ\nกิจกรรม\nกิจการ\nกิจวัตร\nกิจจะลักษณะ\nกิตติคุณ\nกิตติศัพท์\nกินขาด\nกินใจ\nกินดอง\nกินโต๊ะ\nกินแบ่ง\nกินเปล่า\nกินเลี้ยง\nกินเส้น\nกินแหนง\nกิโลกรัม\nกิโลเมตร\nกิโลลิตร\nกิโลเฮิรตซ์\nกีดกัน\nกีดกั้น\nกีดขวาง\nกึกก้อง\nกึกกัก\nกึกกือ\nกึ่งกลาง\nกุกกัก\nกุ๊กกิ๊ก\nกุ้งฝอย\nกุ้งมังกร\nกุ้งแห้ง\nกุ้งเต้น\nกุ้งยิง\nกุญแจผี\nกุญแจมือ\nกุญแจเลื่อน\nกุญแจเสียง\nกุลธิดา\nกุลบุตร\nกุลสตรี\nกู้ยืม\nเก้งก้าง\nเก็บกวาด\nเก็บเกี่ยว\nเก็บงำ\nเก็บตก\nเกรงกลัว\nเกรงใจ\nเกรงขาม\nเกรียงไกร\nเกรียมกรม\nเกรี้ยวกราด\nเกล็ดเลือด\nเกลี้ยกล่อม\nเกลี้ยงเกลา\nเกลือกกลั้ว\nเกลือกกลิ้ง\nเกลื่อนกล่น\nเกลื่อนกลาด\nเกศธาตุ\nเกษตรกร\nเกษตรกรรม\nเกษตรศาสตร์\nเกษมสันต์\nเกษียรสมุทร\nเก้อเขิน\nเกาะแกะ\nเกี่ยงงอน\nเกียจคร้าน\nเกียรติคุณ\nเกียรตินิยม\nเกียรติประวัติ\nเกียรติภูมิ\nเกียรติยศ\nเกียรติศักดิ์\nเกียรติมุข\nเกี่ยวข้อง\nเกี่ยวดอง\nเกี่ยวพัน\nเกี่ยวโยง\nเกี้ยวพาน\nเกี้ยวพาราสี\nแก่แดด\nแก้ขัด\nแก้ไข\nแก้ตัว\nแก้เผ็ด\nแก้ลำ\nแกงคั่ว\nแกงจืด\nแกงบวด\nแกงป่า\nแกงเผ็ด\nแกงส้ม\nแก่งแย่ง\nแก่นแก้ว\nแก่นสาร\nแก้วตา\nแก้วหู\nแกว่งกวัด\nแกว่งไกว\nแกะรอย\nโก้เก๋\nโกรธเกรี้ยว\nโกรธขึ้ง\nไก่เขี่ย\nไก่ชน\nไก่บ้าน\nไก่ป่า\nไก่ฟ้า\nไกล่เกลี่ย\nขจัดขจาย\nขนเพชร\nขนสัตว์\nขนหนู\nขนส่ง\nขนมจีน\nขบขัน\nขบวนการ\nข่มขี่\nข่มขู่\nข่มขืน\nข่มเหง\nขมหิน\nขมิ้นชัน\nขมุบขมิบ\nขยะแขยง\nขยักขย่อน\nขยักขย้อน\nขยับขยาย\nขยับเขยื้อน\nขวดโหล\nขวยเขิน\nขวัญใจ\nขวัญตา\nขวัญอ่อน\nขวากหนาม\nขวางโลก\nของ้าว\nขอสับ\nขอขมา\nขอทาน\nขอโทษ\nขอร้อง\nขออภัย\nข้อเขียน\nข้อความ\nข้อเท็จจริง\nของกลาง\nของขวัญ\nของแข็ง\nของชำ\nของลับ\nของเล่น\nของว่าง\nของเหลว\nของไหล\nของไหว้\nข้องใจ\nข้องแวะ\nขอบข่าย\nขอบเขต\nขอบคุณ\nขอบใจ\nขอบพระคุณ\nข้อมูล\nข้อแม้\nข้อหา\nข้อสังเกต\nขัดข้อง\nขัดขืน\nขัดเขิน\nขัดจังหวะ\nขัดดอก\nขัดแตะ\nขัดยอก\nขัดแย้ง\nขัดสมาธิ\nขันหมาก\nขันอาสา\nขับขี่\nขับเคี่ยว\nขั้วโลก\nขาจร\nขาประจำ\nข้าราชการ\nข้าศึก\nข้าหลวง\nขาดแคลน\nขาดใจ\nขาดตอน\nขาดตัว\nขาดทุน\nขาดเหลือ\nขายหน้า\nข่าวกรอง\nข่าวคราว\nข่าวล่า\nข่าวลือ\nข่าวสาร\nข้าวเกรียบ\nข้าวแกง\nข้าวของ\nข้าวจี่\nข้าวเจ้า\nข้าวซอย\nข้าวต้ม\nข้าวตอก\nข้าวตัง\nข้าวแตน\nข้าวทิพย์\nข้าวบิณฑ์\nข้าวเปลือก\nข้าวโพด\nข้าวฟ่าง\nข้าวเม่า\nข้าวสวย\nข้าวสาร\nข้าวเหนียว\nข้าวหมาก\nข้าวหลาม\nขี้เกียจ\nขี้ข้า\nขี้ครอก\nขี้คร้าน\nขี้คุก\nขี้ไคล\nขี้เซา\nขีดขั้น\nขีดคร่อม\nขีดคั่น\nขีดฆ่า\nขี้ตา\nขี้ตืด\nขี้เถ้า\nขี้ทูด\nขี้ปะติ๋ว\nขี้ผึ้ง\nขี้มูก\nขี้ยา\nขี้แย\nขี้ริ้ว\nขี้เรื้อน\nขี้เล็บ\nขี้หู\nขี้หน้า\nขี้เหนียว\nขี้เหล็ก\nขี้เหร่\nขึงขัง\nขึงพืด\nขึ้งโกรธ\nขึ้นใจ\nขึ้นชื่อ\nขึ้นมือ\nขืนใจ\nขื่นขม\nขุดคุ้ย\nขุนทอง\nขุนนาง\nขุนพล\nขุนศึก\nขุนหลวง\nขูดรีด\nเข็มกลัด\nเข็มขัด\nเข้มข้น\nเข้มแข็ง\nเข้มงวด\nเข็มทิศ\nเข็มหมุด\nเข้าขา\nเข้าเค้า\nเข้าใจ\nเข้าชื่อ\nเข้าตัว\nเข้าถึง\nเข้าทรง\nเข้าท่า\nเข้าที\nเข้าเนื้อ\nเข้าเล่ม\nเขียวเสวย\nเขียวหวาน\nแขกเต้า\nแข็งกร้าว\nแข็งกล้า\nแข็งแกร่ง\nแข็งข้อ\nแข็งขัน\nแข่งขัน\nแข็งใจ\nแข็งตัว\nแข็งเมือง\nแข็งแรง\nแขวนลอย\nโขกสับ\nโขยกเขยก\nไขข้อ\nไขควง\nไขมัน\nไข่มุก\nไขว่ห้าง\nไขสันหลัง\nไขสือ\nไข่เค็ม\nไข่เยี่ยวม้า\nไข่หงส์\nไข่เหี้ย\nคงกระพัน\nคงตัว\nคงทน\nคงที่\nคชลักษณ์\nคชสาร\nคชสีห์\nคชราช\nคณิตศาสตร์\nคดเคี้ยว\nคติธรรม\nคติพจน์\nคนกลาง\nคนไข้\nคนใช้\nคนทรง\nคบไฟ\nคบเพลิง\nคบค้า\nคบคิด\nคบหา\nคมคาย\nครบครัน\nครบถ้วน\nครอบครอง\nครอบคลุม\nครอบครัว\nครอบงำ\nครอบจักรวาล\nคริสตกาล\nคริสตจักร\nคริสต์มาส\nคริสต์ศตวรรษ\nคริสต์ศักราช\nคริสตัง\nคริสเตียน\nครุกรรม\nครุภัณฑ์\nครุศาสตร์\nครุฑพ่าห์\nครุ่นคิด\nคลอเคลีย\nคล่องแคล่ว\nคล่องตัว\nคล่องมือ\nคลั่งไคล้\nคลาคล่ำ\nคลาไคล\nคลาดเคลื่อน\nคลาดแคล้ว\nคลี่คลาย\nคลึงเคล้น\nคลึงเคล้า\nคลื่นไส้\nคลื่นเหียน\nคลุกคลี\nคลุกคลาน\nคลุมเครือ\nคลุมโปง\nคลุ้มคลั่ง\nควงสว่าน\nควบคุม\nควบคู่\nควบแน่น\nควันหลง\nความคิด\nความหลัง\nความเห็น\nคอหอย\nคอห่าน\nคอแห้ง\nค่อนขอด\nค่อนแคะ\nค้อนควัก\nคั่งค้าง\nคั่งแค้น\nคัดค้าน\nคัดง้าง\nคัดท้าย\nคัดเลือก\nคันจาม\nคันฉ่อง\nคันฉาย\nคันชัก\nคันชั่ง\nคันไถ\nคันนา\nคันเร่ง\nคับขัน\nคับคั่ง\nคับแค้น\nคับแคบ\nคางทูม\nคางหมู\nค้างคืน\nค้างปี\nคาดคั้น\nคาดเชือก\nคาดโทษ\nคาดหมาย\nคานหาม\nคาบเกี่ยว\nคาบศิลา\nคาบสมุทร\nคำขาด\nคำนำ\nคิดค้น\nคืนดี\nคืนตัว\nคุกเข่า\nคุณค่า\nคุณชาย\nคุณธรรม\nคุณนาย\nคุณภาพ\nคุณลักษณะ\nคุณวุฒิ\nคุณศัพท์\nคุณสมบัติ\nคุณหญิง\nคุณากร\nคุณูปการ\nคุโณปการ\nคุมเชิง\nคุ้มกัน\nคุยเขื่อง\nคุยโต\nคุ้ยเขี่ย\nคุ้มครอง\nคู่กรณี\nคู่กัด\nคู่ขา\nคู่แข่ง\nคู่ครอง\nคู่ควร\nคู่คิด\nคู่คี่\nคู่ใจ\nคู่ชีพ\nคู่ชีวิต\nคู่บารมี\nคู่บุญ\nคู่ปรปักษ์\nคู่ปรับ\nคู่ผสม\nคู่มือ\nคู่รัก\nคู่ลำดับ\nคู่สาย\nคู่หมั้น\nคู่หู\nคู่อริ\nคู่อาฆาต\nเคมีภัณฑ์\nเคยตัว\nเคร่งขรึม\nเคร่งครัด\nเคร่งเครียด\nเครดิตฟองซิเอร์\nเครื่องกล\nเครื่องกัณฑ์\nเครื่องแกง\nเครื่องเขิน\nเครื่องครัว\nเครื่องเคียง\nเครื่องเงิน\nเครื่องจักร\nเครื่องเซ่น\nเครื่องดนตรี\nเครื่องต้น\nเครื่องทุ่นแรง\nเครื่องเทศ\nเครื่องใน\nเครื่องบิน\nเครื่องบูชา\nเครื่องแบบ\nเครื่องประดับ\nเครื่องปรุง\nเครื่องปรุงรส\nเครื่องมือ\nเครื่องยนต์\nเครื่องร่อน\nเครื่องราง\nเครื่องเรือน\nเครื่องล่าง\nเครื่องเล่น\nเครื่องสาย\nเครื่องสำอาง\nเครื่องสุกำศพ\nเครื่องหมาย\nเครือรัฐ\nเคลียคลอ\nเคลื่อนที่\nเคลื่อนไหว\nเคลือบแคลง\nเคลือบแฝง\nเคลือบฟัน\nเคว้งคว้าง\nเคหสถาน\nเค้าโครง\nเคียดแค้น\nเคี่ยวเข็ญ\nเคี้ยวเอื้อง\nเคืองขุ่น\nโคนม\nโคบาล\nโคมูตร\nโคมลอย\nโครงการ\nโครงเรื่อง\nโครงงาน\nโครงสร้าง\nโครมคราม\nโคลงเคลง\nฆ้องกระแต\nฆ้องชัย\nฆ้องวง\nฆ้องหุ่ย\nฆ้องเหม่ง\nฆ้องโหม่ง\nฆาตกร\nฆาตกรรม\nฆานประสาท\nงงงวย\nงงงัน\nงดเว้น\nงบดุล\nงบประมาณ\nงมโข่ง\nงมงาย\nง่วงงุน\nง่วงเหงา\nงอหาย\nง้องอน\nงอนง้อ\nงอมแงม\nงาช้าง\nง่าเงย\nงานการ\nง่ายดาย\nงึมงำ\nเงินเดือน\nเงินตรา\nเงินยวง\nเงียบกริบ\nเงียบเชียบ\nเงียบเหงา\nเงื่องหงอย\nเงื่อนไข\nเงื่อนงำ\nเงื่อนเวลา\nเงื้อมมือ\nแง่งอน\nจงใจ\nจงรัก\nจดจ่อ\nจดจำ\nจดหมาย\nจดหมายเหตุ\nจรจัด\nจรรยาบรรณ\nจริงจัง\nจริงใจ\nจอมขวัญ\nจอมใจ\nจอมทัพ\nจอมปลวก\nจอมพล\nจ๊ะเอ๋\nจักสาน\nจักรพรรดิ\nจักรภพ\nจักรยาน\nจักรยานยนต์\nจักรราศี\nจักรวรรดิ\nจักรวรรดินิยม\nจักรวาล\nจังหนับ\nจัดการ\nจัดจ้าน\nจัดเจน\nจัดแจง\nจัดตั้ง\nจัดสรร\nจับกุม\nจับจด\nจับเจ่า\nจ่าหน้า\nจาตุทสี\nจาตุมหาราช\nจาตุมหาราชิก\nจาตุมหาราชิกา\nจาตุรงคสันนิบาต\nจาตุรราชการ\nจานเชิง\nจานบิน\nจานผี\nจานเสียง\nจาบจ้วง\nจำเป็น\nจำพรรษา\nจำวัด\nจ้ำจี้จ้ำไช\nจำเลาะตา\nจิงโจ้น้ำ\nจิตใจ\nจิตตภาวนา\nจิตตัง\nจิตตานุปัสสนา\nจิตนิยม\nจิตบำบัด\nจิตแพทย์\nจิตวิสัย\nจิตรกร\nจิตรกรรม\nจิตรลดา\nจิตวิทยา\nจิตเวช\nจิตเวชศาสตร์\nจินตกวี\nจินตนา\nจินตนาการ\nจินตภาพ\nจุฑามณี\nจุฑามาศ\nจุฑารัตน์\nจุนเจือ\nจุ้นจ้าน\nจุลชีพ\nจุลชีวัน\nจุลชีวิน\nจุลทรรศน์\nจุลภาค\nจุลวรรค\nจุลศักราช\nจุลสาร\nจุลินทรีย์\nจุฬามณี\nจุฬาลักษณ์\nเจตคติ\nเจตจำนง\nเจตนารมณ์\nเจตภูต\nเจริญพร\nเจ้ากรม\nเจ้ากรรม\nเจ้าของ\nเจ้าขา\nเจ้าข้า\nเจ้าคณะ\nเจ้าค่ะ\nเจ้าจอม\nเจ้าชู้\nเจ้าตัว\nเจ้าถิ่น\nเจ้าท่า\nเจ้าที่\nเจ้าทุกข์\nเจ้านาย\nเจ้าเนื้อ\nเจ้าบ้าน\nเจ้าบ่าว\nเจ้าประคุณ\nเจ้าประคู้น\nเจ้าพนักงาน\nเจ้าพระคุณ\nเจ้าพระยา\nเจ้าพ่อ\nเจ้าพายุ\nเจ้าฟ้า\nเจ้าภาพ\nเจ้ามือ\nเจ้าแม่\nเจ้าเรือน\nเจ้าสังกัด\nเจ้าสัว\nเจ้าสาว\nเจ้าหน้าที่\nเจ้าหนี้\nเจ้าอาวาส\nเจาะจง\nเจือจาง\nเจือจาน\nเจือปน\nเจื้อยแจ้ว\nแจกจ่าย\nแจ่มแจ้ง\nแจ่มใส\nโจงกระเบน\nโจมตี\nโจรกรรม\nโจรสลัด\nใจความ\nใจคอ\nฉกฉวย\nฉกชิง\nฉลองได\nฉ้อฉล\nฉัตรมงคล\nฉันทลักษณ์\nฉายาลักษณ์\nฉิบหาย\nฉุกเฉิน\nฉุกละหุก\nฉุนเฉียว\nฉุปศาสตร์\nเฉไฉ\nเฉยเมย\nเฉาโฉด\nเฉิดฉัน\nเฉิดฉาย\nเฉิดฉิน\nเฉียบขาด\nเฉียบพลัน\nเฉียบแหลม\nเฉื่อยชา\nแฉะแบะ\nโฉดเฉา\nโฉมงาม\nโฉมฉาย\nโฉมเฉลา\nโฉมตรู\nโฉมยง\nโฉมศรี\nโฉมหน้า\nชดช้อย\nชดเชย\nชดใช้\nชนบท\nชนินทร์\nชนกกรรม\nชนมพรรษา\nชนมายุ\nชมเชย\nชมพูทวีป\nชมพูนท\nชมพูนุท\nชราธรรม\nชราภาพ\nชลจร\nชลธาร\nชลธี\nชลนัยน์\nชลนา\nชลเนตร\nชลประทาน\nชลมารค\nชลาธาร\nชลาลัย\nชลาศัย\nชลาสินธุ์\nชโลทร\nช่วงชิง\nช่วงใช้\nชวนชม\nชวนหัว\nช่วยเหลือ\nช่อฟ้า\nช่อม่วง\nชอกช้ำ\nช่องเขา\nช่องแคบ\nช่องไฟ\nช่องว่าง\nช้องนาง\nชอบกล\nชอบใจ\nชอบธรรม\nชอบพอ\nชักโครก\nชักเงา\nชักจูง\nชักชวน\nชักนำ\nชักเนื้อ\nชักพระ\nชักเย่อ\nชักใย\nชั่งใจ\nชังฆวิหาร\nชัดเจน\nชั้นเชิง\nชั่วคน\nชั่วคราว\nชั่วช้า\nชั่วโมง\nชั่วแล่น\nชาเย็น\nช้านาน\nช่างเครื่อง\nช่างฝีมือ\nช่างฟิต\nช่างไฟ\nช้างน้ำ\nช้างเผือก\nช้างพลาย\nช้างพัง\nช้างสาร\nช้างสีดอ\nชาติธรรม\nชาตินิยม\nชาติพันธุ์\nชาติพันธุ์วิทยา\nชาติภูมิ\nชานชาลา\nชายชาตรี\nชายคา\nชายฝั่ง\nชายทะเล\nชาวเล\nชาววัง\nช้ำใจ\nช้ำชอก\nชิงชัง\nชิงพลบ\nชินชา\nชินบุตร\nชิ้นเอก\nชิมลาง\nชีเปลือย\nชี้ขาด\nชี้แจง\nชี้นำ\nชี้แนะ\nชี้ฟ้า\nชีพจร\nชีพิตักษัย\nชื่นชม\nชื่นบาน\nชื่นมื่น\nชื่อย่อ\nชื่อรอง\nชื่อเล่น\nชื่อเสียง\nชุกชุม\nชุติมา\nชุบตัว\nชุบเลี้ยง\nชุมชน\nชุมทาง\nชุมสาย\nชุ่มใจ\nชุ่มชื่น\nชุ่มชื้น\nชุมนุมชน\nชูชีพ\nชูโรง\nชู้สาว\nเชยชม\nเชลยศักดิ์\nเชลยศึก\nเช่าซื้อ\nเช้าตรู่\nเช้ามืด\nเชิงกราน\nเชิงกล\nเชิงชั้น\nเชิงชาย\nเชิงซ้อน\nเชิงเดียว\nเชิงเดี่ยว\nเชิงตะกอน\nเชิงเทิน\nเชิงมุม\nเชิดชู\nเชิงอรรถ\nเชี่ยนหมาก\nเชี่ยวชาญ\nเชื่องช้า\nเชื่อใจ\nเชื่อถือ\nเชื่อฟัง\nเชื่อมือ\nเชื้อชาติ\nเชื้อเพลิง\nเชื้อไฟ\nเชื้อโรค\nเชื้อสาย\nเชื้อเชิญ\nเชื่องช้า\nเชือนแช\nเชื่อวัน\nแช่เย็น\nแช่อิ่ม\nแช่มช้อย\nแช่มชื่น\nโชกโชน\nโชติช่วง\nโชติรส\nใช้สอย\nซบเซา\nซมซาน\nซวนเซ\nซอกซอน\nซอกแซก\nซ่องสุม\nซ่องเสพ\nซ่องแซ่ง\nซ่อนรูป\nซ่อนเร้น\nซ่อนหา\nซ่อนกลิ่น\nซ่อนทราย\nซ่อมแซม\nซักค้าน\nซักซ้อม\nซักไซ้\nซักฟอก\nซักแห้ง\nซังกะตาย\nซังตาย\nซัดเซ\nซัดทอด\nซับซ้อน\nซับใน\nซับพระพักตร์\nซากศพ\nซ่านเซ็น\nซ้ำซ้อน\nซ้ำซาก\nซ้ำเติม\nซ้ำร้าย\nซี่โครง\nซีดเซียว\nซึมกะทือ\nซึมซาบ\nซึมเซา\nซึมทราบ\nซึมเศร้า\nซื่อตรง\nซื่อสัตย์\nซื้อขาย\nซุกซน\nซุกซ่อน\nซุบซิบ\nซู่ซ่า\nเซซัง\nเซ่อซ่า\nแซ่ซ้อง\nโซดาไฟ\nญาณทัสนะ\nญาณวิทยา\nญาณศาสตร์\nญาติกา\nฐานราก\nดกดื่น\nดงดิบ\nดลใจ\nดลบันดาล\nดวงแก้ว\nดวงใจ\nดวงเดือน\nดวงตรา\nดวงตา\nดวงสมร\nดอกจัน\nดอกจิก\nดอกบัว\nดอกเบี้ย\nดอกฟ้า\nดอกไม้\nดอกยาง\nดอกเล็บ\nดอกทอง\nดอกสร้อย\nดองยา\nดักคอ\nดักฟัง\nดังนั้น\nดังนี้\nดังหนึ่ง\nดั้งเดิม\nดัดจริต\nดัดแปลง\nดันทุรัง\nดับขันธ์\nดับจิต\nดับชีพ\nด่าทอ\nด่างทับทิม\nด่างพร้อย\nดาดฟ้า\nดาราศาสตร์\nดาลเดือด\nดาวกระจาย\nดาวเคราะห์\nดาวตก\nดาวเทียม\nดาวรุ่ง\nดาวเรือง\nดาวฤกษ์\nดาวหาง\nดาวเหนือ\nดาษดื่น\nดินขาว\nดินดาน\nดินดำ\nดินประสิว\nดินปืน\nดินระเบิด\nดินสอ\nดินสอพอง\nดิ้นรน\nดิบดี\nดีเกลือ\nดีใจ\nดีซ่าน\nดีดัก\nดีเดือด\nดีฝ่อ\nดีดดิ้น\nดึกดำบรรพ์\nดึกดื่น\nดึงดัน\nดึงดูด\nดื่มด่ำ\nดื้อด้าน\nดื้อดึง\nดื้อแพ่ง\nดื้อยา\nดื้อรั้น\nดุดัน\nดุเดือด\nดุร้าย\nดุลการค้า\nดุลพินิจ\nดุลภาค\nดุลยพินิจ\nดุลยภาพ\nดุษฎีนิพนธ์\nดุษฎีบัณฑิต\nดุษณีภาพ\nดูแคลน\nดูถูก\nดูดาย\nดูเบา\nดูแล\nดูหมิ่น\nดูเหมือน\nดูดดื่ม\nเด็ดขาด\nเด็ดดวง\nเด็ดเดี่ยว\nเดนตาย\nเดาสวด\nเดาสุ่ม\nเดินทาง\nเดินสะพัด\nเดินสาย\nเดินเหิน\nเดิมพัน\nเดียงสา\nเดียดฉันท์\nเดียวกัน\nเดียวดาย\nเดี๋ยวเดียว\nเดี๋ยวนี้\nเดือดดาล\nเดือดร้อน\nเดือนมืด\nเดือนหงาย\nแดดาล\nแดดิ้น\nแดกดัน\nโด่เด่\nโด่งดัง\nโดดเดี่ยว\nโดยสาร\nได้การ\nได้แก่\nได้ใจ\nได้ที\nได้ยิน\nได้เสีย\nตกเขียว\nตกค้าง\nตกใจ\nตกต่ำ\nตกแต่ง\nตกทอด\nตกฟาก\nตกมัน\nตกยาก\nตกลง\nตกหล่น\nต้นขั้ว\nต้นคิด\nต้นฉบับ\nต้นตอ\nต้นตำรับ\nต้นทุน\nต้นแบบ\nต้นเพลิง\nต้นมือ\nต้นไม้\nต้นร่าง\nต้นเรื่อง\nต้นสังกัด\nต้นหน\nต้นเหตุ\nตบตา\nตบแต่ง\nตบแผละ\nตบมือ\nต้มข่า\nต้มโคล้ง\nต้มยำ\nต้มส้ม\nตรมตรอม\nตรรกวิทยา\nตรรกศาสตร์\nตรวจการ\nตรวจการณ์\nตรวจตรา\nตระบัดสัตย์\nตรัสรู้\nตราตั้ง\nตราบาป\nตรายาง\nตราสาร\nตริตรอง\nตรีกฏุก\nตรีกาย\nตรีโกณ\nตรีโกณมิติ\nตรีคูณ\nตรีทูต\nตรีปิฎก\nตรีภพ\nตรีมูรติ\nตรึกตรอง\nตรึงตรา\nตรุษจีน\nตฤณชาติ\nตฤณมัย\nตลกบาตร\nตลบตะแลง\nตลบหลัง\nตลาดนัด\nตลาดน้ำ\nตลาดมืด\nตลาดสด\nต่อตี\nต่อเติม\nต่อว่า\nต่อสู้\nต่อกร\nต่อต้าน\nต่อแย้ง\nต้องการ\nต้องโทษ\nต้องหา\nต้อนรับ\nตอบโต้\nตอบแทน\nต่อยหอย\nตะพาบน้ำ\nตักตวง\nตักบาตร\nตั้งเข็ม\nตั้งไข่\nตั้งเค้า\nตั้งแง่\nตั้งใจ\nตั้งต้น\nตั้งแต่\nตั้งท้อง\nตัดขาด\nตัดใจ\nตัดเชือก\nตัดตอน\nตัดทอน\nตัดบท\nตัดพ้อ\nตัดรอน\nตัดสิน\nตับเต่า\nตับแลบ\nตับอ่อน\nตัวกลาง\nตัวการ\nตัวเก็ง\nตัวดี\nตัวตั้ง\nตัวเต็ง\nตัวถัง\nตัวแทน\nตัวประกอบ\nตัวประกัน\nตัวแปร\nตัวผู้\nตัวพิมพ์\nตัวเมีย\nตัวยืน\nตัวเลข\nตัวอย่าง\nตั๋วเงิน\nตั๋วแลกเงิน\nตากล้อง\nตาไก่\nตาข่าย\nตาชั่ง\nตาตุ่ม\nตาทวด\nตาปลา\nตาราง\nต่างหาก\nต้านทาน\nตามใจ\nตายใจ\nตายซาก\nตายด้าน\nตายตัว\nตายทั้งกลม\nตายห่า\nตายโหง\nตาลปัตร\nต่ำช้า\nต่ำต้อย\nตำส้ม\nติเตียน\nติณชาติ\nติดขัด\nติดใจ\nติดต่อ\nติดตั้ง\nติดตาม\nติดตื้น\nติดพัน\nติดลม\nติดอ่าง\nตีเกลียว\nตีขลุม\nตีความ\nตีคู่\nตีจาก\nตีตื้น\nตีแผ่\nตีรวน\nตีลังกา\nตีวง\nตีเสมอ\nตีนกา\nตีนคู้\nตีนจก\nตีนตะขาบ\nตีนผี\nตีนเหยียด\nตึกแถว\nตึกระฟ้า\nตึงเครียด\nตึงตัง\nตื้นตัน\nตื่นตัว\nตื่นตูม\nตื่นเต้น\nตุ๊ต๊ะ\nตุ้บตั้บ\nตุ้มหู\nตุลาการ\nตุลาคม\nตู้นิรภัย\nตูมตาม\nตู้เสบียง\nเตโชธาตุ\nเตร็ดเตร่\nเต้นรำ\nเตาแก๊ส\nเตาผิง\nเตาฟู่\nเตาไฟ\nเตารีด\nเตาสูบ\nเต่าทอง\nเต้ารับ\nเต้าส่วน\nเต้าเสียบ\nเต้าหู้ยี้\nแต่ละ\nแตกคอ\nแตกคอก\nแตกฉาน\nแตกดับ\nแตกตื่น\nแตกพาน\nแตกแยก\nแตกร้าว\nแตกหัก\nแต่งงาน\nแต่งตั้ง\nแต้มคู\nแต้มต่อ\nแตรงอน\nแตรเดี่ยว\nแตรฝรั่ง\nแตรฟันฟาร์\nแตรวง\nโต้ตอบ\nโต้เถียง\nโต้แย้ง\nโต๊ะหมู่\nโต๊ะอิหม่าม\nใต้ถุน\nไต้ก๋ง\nไต่คู้\nไต่เต้า\nไต่ถาม\nไต้ฝุ่น\nไตรจักร\nไตรจีวร\nไตรตรึงษ์\nไตรทวาร\nไตรปิฎก\nไตรเพท\nไตรภพ\nไตรภูมิ\nไตรภาคี\nไตรยางศ์\nไตรรงค์\nไตรรัตน์\nไตรลักษณ์\nไตรโลก\nไตรสรณคมน์\nไตรสิกขา\nไต่สวน\nถกเถียง\nถดถอย\nถนัดถนี่\nถนิมสร้อย\nถมถืด\nถมเถ\nถมไป\nถลากไถล\nถ้วนถี่\nถ้วยฟู\nถ่องแท้\nถอดถอน\nถ้อยคำ\nถ้อยแถลง\nถากถาง\nถ่านไฟฉาย\nถ่านหิน\nถามไถ่\nถ่ายทอด\nถ่ายทุกข์\nถ่ายเท\nถาวรวัตถุ\nถ้ำมอง\nถี่ถ้วน\nถึงใจ\nถูกใจ\nถูกชะตา\nเถรวาท\nเถ้าแก่\nเถ้าแก่เนี้ย\nแถมพก\nแถลงการณ์\nไถ่ถอน\nไถ่ถาม\nทดแทน\nทดรอง\nทดลอง\nทดสอบ\nทนทาน\nทนายความ\nทบทวน\nทแยงมุม\nทรงกลด\nทรงเครื่อง\nทรงเจ้า\nทรัพย์สิน\nทรามชม\nทรามเชย\nทรามวัย\nทรามสงวน\nทรามสวาท\nทรุดโทรม\nทฤษฎีบท\nท้วงติง\nท่วมท้น\nทวาทศ\nทวาทศมาส\nทวาบรยุค\nทวารบาล\nทวิบถ\nทวิบท\nทวิบาท\nทวิภาค\nทวิภาคี\nทวีคูณ\nทศกัณฐ์\nทศชาติ\nทศทิศ\nทศนิยม\nทศพร\nทศพล\nทศพิธราชธรรม\nทศมาส\nทศวรรษ\nท่อไอเสีย\nท้อถอย\nท้อแท้\nทองขาว\nทองคำ\nทองคำขาว\nทองคำเปลว\nทองเค\nทองแดง\nทองบรอนซ์\nทองม้วน\nทองย้อย\nทองสัมฤทธิ์\nทองหยอด\nทองหยิบ\nทองเหลือง\nทองเอก\nท่องเที่ยว\nท้องตรา\nท้องถิ่น\nท้องที่\nท้องน้อย\nท้องร่อง\nท้องเรื่อง\nทอดมัน\nทอดทิ้ง\nทอดน่อง\nทอดยอด\nทอดหุ่ย\nทอยกอง\nทะเบียนบ้าน\nทะเลทราย\nทะเลสาบ\nทะเลหลวง\nทักขิณาวัฏ\nทักท้วง\nทักทาย\nทักษิณาวรรต\nทักษิณาทาน\nทักษิณานุประทาน\nทั้งกลม\nทั้งคน\nทั้งดุ้น\nทั้งที\nทั้งนั้น\nทั้งนี้\nทั้งปวง\nทั้งผอง\nทั้งเพ\nทั้งมวล\nทั้งสิ้น\nทั้งหมด\nทั้งหลาย\nทัณฑ์บน\nทัดทาน\nทัดเทียม\nทันควัน\nทันใจ\nทันใด\nทันตา\nทันสมัย\nทันที\nทับถม\nทับทรวง\nทับศัพท์\nทั่วถึง\nทั่วไป\nท่าทาง\nท่าที\nท้าทาย\nทางการ\nทางข้าม\nทางด่วน\nทางเท้า\nทางโท\nทางใน\nทางผ่าน\nทางม้าลาย\nทางหลวง\nทางออก\nทางเอก\nทานกัณฑ์\nทานตะวัน\nท่านชาย\nทานบารมี\nท่านผู้หญิง\nท่านหญิง\nทาบทาม\nท้ายทอย\nทารุณกรรม\nทำคลอด\nทำใจ\nทำซ้ำ\nทำท่า\nทำที\nทำแท้ง\nทำโทษ\nทำบาป\nทำบุญ\nทำพิษ\nทำฟัน\nทำร้าย\nทำวัตร\nทำสาว\nทำเสน่ห์\nทำหมัน\nทำให้\nทิ้งขว้าง\nทิ้งทวน\nทิ้งท้าย\nทินกร\nทิพจักขุ\nทิพโสต\nทิพยจักษุ\nทิพยญาณ\nทิพยเนตร\nทิพยรส\nทิพากร\nทิ่มตำ\nทิ่มแทง\nทิวากร\nทิวากาล\nทิศทาง\nทีเด็ด\nทีท่า\nทีนี้\nทีหลัง\nทีฆนิกาย\nทีฆสระ\nที่ดิน\nที่นอน\nที่นั่ง\nที่ปรึกษา\nที่พึ่ง\nที่มั่น\nที่ราบ\nที่ว่าการ\nที่สุด\nที่หมาย\nที่ไหน\nทุกที\nทุกเมื่อ\nทุกข์สุข\nทุนทรัพย์\nทุนนิยม\nทุนรอน\nทุนสำรอง\nทุ่มเถียง\nทุ่มเท\nทูนหัว\nทูลกระหม่อม\nเทกระจาด\nเทครัว\nเทพเจ้า\nเทพดา\nเทพธิดา\nเทพนม\nเทพนิยม\nเทพนิยาย\nเทพบุตร\nเทพสังหรณ์\nเทศกาล\nเทศนาโวหาร\nเทศบัญญัติ\nเทศบาล\nเทศมนตรี\nเทห์ฟากฟ้า\nเท่ากับ\nเท่าใด\nเท่าตัว\nเท่าทัน\nเท่าทุน\nเท่าเทียม\nเท่านั้น\nเท่าไร\nเท้าช้าง\nเทิดทูน\nเที่ยงตรง\nเที่ยงแท้\nเที่ยงธรรม\nเทียนชนวน\nเทียนพรรษา\nเทียบเคียง\nเทียบเท่า\nเทือกเขา\nเทือกเถา\nแท็งก์น้ำ\nแท่นพิมพ์\nแท่นมณฑล\nแท่นหมึก\nแทรกซอน\nแทรกซ้อน\nแทรกซึม\nแทรกแซง\nแทะโลม\nไทยดำ\nไทยทาน\nไทยธรรม\nไทยน้อย\nไทยใหญ่\nธงชัย\nธงชาติ\nธงทิว\nธรณีวิทยา\nธรณีสงฆ์\nธรรมกาย\nธรรมการ\nธรรมเกษตร\nธรรมขันธ์\nธรรมคุณ\nธรรมจรรยา\nธรรมจริยา\nธรรมจักร\nธรรมจักษุ\nธรรมจาคะ\nธรรมจารี\nธรรมชาติ\nธรรมดา\nธรรมเนียม\nธรรมราชา\nธรรมศาสตร์\nธรรมสภา\nธรรมสังเวช\nธัญพืช\nธารพระกร\nธีรภาพ\nธีรราช\nนกเขา\nนกต่อ\nนกยูง\nนกรู้\nนกหวีด\nนครบาล\nนครรัฐ\nนงคราญ\nนงนุช\nนงพะงา\nนงเยาว์\nนงราม\nนงลักษณ์\nนบนอบ\nนพเก้า\nนพคุณ\nนพเคราะห์\nนพปฎล\nนพพล\nนพรัตน์\nนพศก\nนพศูล\nนมข้น\nนมผง\nนมไม้\nนมนาน\nนมหนู\nนมแมว\nนรีเวช\nนรีเวชวิทยา\nนวดฟั้น\nนวยนาด\nนวลระหง\nนวลลออ\nนวลละออง\nนวลจันทร์\nนอกครู\nนอกคอก\nนอกจาก\nนอกใจ\nนอกชาน\nนอกรีต\nนอกเหนือ\nนองเนือง\nนองเลือด\nนอนก้น\nนอนใจ\nนอบนบ\nนอนเล่น\nนอบน้อม\nน้อมนำ\nน้อยใจ\nน้อยหน้า\nนักการ\nนักการเมือง\nนักกีฬา\nนักข่าว\nนักท่องเที่ยว\nนักเทศน์\nนักโทษ\nนักธรรม\nนักบวช\nนักบิน\nนักบุญ\nนักปราชญ์\nนักพรต\nนักรบ\nนักเรียน\nนักเลง\nนักวิชาการ\nนักศึกษา\nนักสิทธิ์\nนักสืบ\nนักหนา\nนั่งเทียน\nนั่งร้าน\nนัดแนะ\nนัดหมาย\nนั่นแหละ\nนั่นเอง\nนับถือ\nนับประสา\nนัยน์ตา\nนาดำ\nนาปรัง\nนาปี\nนาสวน\nนาหว่าน\nนาคบาศ\nนาคปรก\nนาคราช\nนางกวัก\nนางกำนัล\nนางงาม\nนางใน\nนางบำเรอ\nนางแบบ\nนางพญา\nนางฟ้า\nนางไม้\nนางโลม\nนางสาว\nนางห้าม\nนางเอก\nนาฏกรรม\nนาฏดนตรี\nนาฏศิลป์\nนานนม\nน่านน้ำ\nน่านฟ้า\nนามกร\nนามธรรม\nนามไธย\nนามบัตร\nนามปากกา\nนามแฝง\nนามสกุล\nนามสงเคราะห์\nนามสมญา\nนายทะเบียน\nนายท่า\nนายท้าย\nนายทุน\nนายประกัน\nนายหน้า\nนายอำเภอ\nนารายณ์หัตถ์\nนารีผล\nนาวิกโยธิน\nนำจับ\nนำพา\nนำทาง\nนำร่อง\nนำสืบ\nนำแสดง\nน้ำกรด\nน้ำกาม\nน้ำเกลือ\nน้ำข้าว\nน้ำแข็ง\nน้ำแข็งไส\nน้ำแข็งแห้ง\nน้ำครำ\nน้ำคร่ำ\nน้ำค้าง\nน้ำค้างแข็ง\nน้ำคาวปลา\nน้ำคำ\nน้ำเค็ม\nน้ำเคย\nน้ำเงิน\nน้ำเงี้ยว\nน้ำจัณฑ์\nน้ำจิ้ม\nน้ำใจ\nน้ำเชื้อ\nน้ำเชื่อม\nน้ำซาวข้าว\nน้ำดอกไม้\nน้ำดี\nน้ำตก\nน้ำตา\nน้ำตาล\nน้ำท่า\nน้ำนม\nน้ำนวล\nน้ำบาดาล\nน้ำประสานทอง\nน้ำประปา\nน้ำปลา\nน้ำป่า\nน้ำผึ้ง\nน้ำพริก\nน้ำพริกเผา\nน้ำพี้\nน้ำพุ\nน้ำมนต์\nน้ำมนตร์\nน้ำมัน\nน้ำมือ\nน้ำมูก\nน้ำเมา\nน้ำย่อย\nน้ำยา\nน้ำรัก\nน้ำแร่\nน้ำลาย\nน้ำเลี้ยง\nน้ำสต๊อก\nน้ำส้ม\nน้ำส้มสายชู\nน้ำสังข์\nน้ำสาบาน\nน้ำเสียง\nน้ำหนวก\nน้ำหนอง\nน้ำหนัก\nน้ำหน้า\nน้ำหนึ่ง\nน้ำหมึก\nน้ำหอม\nน้ำเหลือง\nน้ำอบ\nน้ำอ้อย\nน้ำอัดลม\nนิ่งเฉย\nนิจศีล\nนิดเดียว\nนิดหน่อย\nนิติกร\nนิติกรรม\nนิติธรรม\nนิตินัย\nนิติบัญญัติ\nนิติบุคคล\nนิติภาวะ\nนิติวิทยาศาสตร์\nนิติเวช\nนิติเวชศาสตร์\nนิติศาสตร์\nนิเทศศาสตร์\nนิ่มนวล\nนิรุกติศาสตร์\nนิเวศวิทยา\nนิศากร\nนิศากาล\nนิศาชล\nนิศารัตน์\nนี่แน่ะ\nนี่แหละ\nนี่เอง\nนึกคิด\nนุงถุง\nนุ่งห่ม\nนุ่มนวล\nนุ่มนิ่ม\nเนตรนารี\nเนติบัณฑิต\nเนยเทียม\nเนยใส\nเนิ่นนาน\nเนิบนาบ\nเนื้อความ\nเนื้อคู่\nเนื้อเค็ม\nเนื้องอก\nเนื้อตัว\nเนื้อตาย\nเนื้อที่\nเนื้อแท้\nเนื้อเปื่อย\nเนื้อผ้า\nเนื้อเพลง\nเนื้อไม้\nเนื้อเยื่อ\nเนื้อร้อง\nเนื้อร้าย\nเนื้อเรื่อง\nเนื้อหา\nเนืองนอง\nเนืองนิตย์\nเนืองแน่น\nแน่ใจ\nแน่ชัด\nแน่แท้\nแน่นอน\nแน่นิ่ง\nแน่แน่ว\nแน่นแฟ้น\nแน่นหนา\nแนบเนียน\nแนบแน่น\nแนวคิด\nแนวทาง\nแนวโน้ม\nแนวป่า\nแนวรบ\nแนวร่วม\nแนวหน้า\nแนวหลัง\nแน่วแน่\nแนะนำ\nแนะแนว\nโน้มน้าว\nในหลวง\nบกพร่อง\nบงกช\nบงการ\nบดบัง\nบทกลอน\nบทกวี\nบทความ\nบทคัดย่อ\nบทเฉพาะกาล\nบทนำ\nบทบัญญัติ\nบทบาท\nบทประพันธ์\nบทเพลง\nบทร้อง\nบทเรียน\nบทลงโทษ\nบทสนทนา\nบทอัศจรรย์\nบทจร\nบทบงสุ์\nบทมาลย์\nบทรัช\nบทเรศ\nบทวลัญช์\nบนบาน\nบรมครู\nบรมธาตุ\nบรมบพิตร\nบรมวงศานุวงศ์\nบรมอัฐิ\nบรรณพิภพ\nบรรณศาลา\nบรรณาการ\nบรรณาธิการ\nบรรณานุกรม\nบรรณารักษ์\nบรรณารักษศาสตร์\nบรรดามี\nบรรดาศักดิ์\nบรรทัดฐาน\nบรรพบุรุษ\nบรรลัยกัลป์\nบรรลัยจักร\nบริคณห์สนธิ\nบวงสรวง\nบ่วงบาศ\nบ้วนพระโอษฐ์\nบ่อเกิด\nบอกกล่าว\nบอกบท\nบอกบุญ\nบอกใบ้\nบอกปัด\nบ้องกัญชา\nบ้องตื้น\nบ้องไฟ\nบ้องหู\nบอดสี\nบ่อนทำลาย\nบอบช้ำ\nบอบบาง\nบอบแบบ\nบังโกลน\nบังโคลน\nบังใบ\nบั้งไฟ\nบังคับการ\nบังคับบัญชา\nบัญชาการ\nบัณฑุกัมพล\nบัดดล\nบัดเดี๋ยว\nบัดนั้น\nบัดนี้\nบัดสีบัดเถลิง\nบัตรเครดิต\nบัตรพลี\nบัตรสนเท่ห์\nบัตรสินเชื่อ\nบั่นทอน\nบั้นท้าย\nบั้นปลาย\nบั้นพระองค์\nบั้นเอว\nบันไดลิง\nบันไดเลื่อน\nบันเทิงคดี\nบัวลอย\nบัวบก\nบ้าจี้\nบ้าดีเดือด\nบ้าน้ำลาย\nบ้าบิ่น\nบ้าระห่ำ\nบ้าเลือด\nบ้าหอบฟาง\nบากบั่น\nบากหน้า\nบางตา\nบางเบา\nบางที\nบาดเจ็บ\nบาดแผล\nบาดหมาง\nบาตรใหญ่\nบาทบงกช\nบาทบงสุ์\nบาทบริจาริกา\nบาทวิถี\nบานเกล็ด\nบานตะเกียง\nบานตะไท\nบานเบอะ\nบานปลาย\nบานแผละ\nบานพับ\nบ้านจัดสรร\nบ้านช่อง\nบ้านนอก\nบ้านพัก\nบ้านเมือง\nบ้านรับรอง\nบ้านเรือน\nบาปกรรม\nบายศรี\nบ่ายเบี่ยง\nบ่ายหน้า\nบ่าวไพร่\nบิดเบี้ยว\nบิดเบือน\nบิดพลิ้ว\nบี้แบน\nบีบคั้น\nบีบรัด\nบึ้งตึง\nบึ้งบูด\nบุกบั่น\nบุกเบิก\nบุกรุก\nบุคลิกภาพ\nบุคลิกลักษณะ\nบุญธรรม\nบุญนิธิ\nบุญฤทธิ์\nบุบสลาย\nบุ้ยใบ้\nบุรุษเพศ\nบุหงารำไป\nบู้บี้\nบูชายัญ\nบูดบึ้ง\nบูดเบี้ยว\nเบาความ\nเบาใจ\nเบาบาง\nเบาปัญญา\nเบามือ\nเบาแรง\nเบาสมอง\nเบาหวาน\nเบาโหวง\nเบ้าตา\nเบาะแส\nเบิกความ\nเบิกบาน\nเบี้ยล่าง\nเบี้ยเลี้ยง\nเบี้ยหวัด\nเบี่ยงบ่าย\nเบียดบัง\nเบียดเบียน\nเบียดเสียด\nเบื้องต้น\nเบื้องบน\nเบื้องหน้า\nเบื้องหลัง\nแบกะดิน\nแบเบาะ\nแบ่งเบา\nแบ่งปัน\nแบ่งแยก\nแบบฉบับ\nแบบแปลน\nแบบแผน\nแบบฝึกหัด\nแบบพิมพ์\nแบบสอบถาม\nแบบอย่าง\nแบะแฉะ\nแบะท่า\nโบแดง\nโบราณคดี\nโบราณวัตถุ\nโบราณสถาน\nใบขับขี่\nใบจอง\nใบตอง\nใบแทรก\nใบบอก\nใบบุญ\nใบเบิกทาง\nใบปลิว\nใบพัด\nใบโพ\nใบไม้\nใบระกา\nใบรับรอง\nใบลา\nใบเลี้ยง\nใบสั่ง\nใบสำคัญ\nใบสุทธิ\nใบเสร็จ\nใบหน้า\nใบอนุญาต\nใบระกา\nปกครอง\nปกคลุม\nปกป้อง\nปกปิด\nปฏิบัติการ\nปฏิบัติบูชา\nปฐพีวิทยา\nปฐมฌาน\nปฐมทัศน์\nปฐมเทศนา\nปฐมนิเทศ\nปฐมพยาบาล\nปฐมยาม\nปฐมฤกษ์\nปฐมวัย\nปฐมสมโพธิ\nปนเป\nป่นปี้\nปมเขื่อง\nปมเด่น\nปมด้อย\nปรนเปรอ\nปรบไก่\nปรบมือ\nปรสิตวิทยา\nประโปรย\nประพรม\nประกันชีวิต\nประกันภัย\nประจักษ์พยาน\nประจัญบาน\nประจันหน้า\nประจำการ\nประจำเดือน\nประจำเมือง\nประจำยาม\nประชดประชัน\nประชากร\nประชากรศาสตร์\nประชาคม\nประชาชน\nประชาราษฎร์\nประชาชาติ\nประชาชี\nประชาทัณฑ์\nประชาบาล\nประชาพิจารณ์\nประชาภิบาล\nประชามติ\nประชาสงเคราะห์\nประชาสัมพันธ์\nประดับประดา\nประดามี\nประดาน้ำ\nประเดี๋ยวเดียว\nประเดี๋ยวนี้\nประทับใจ\nประทุษร้าย\nประเทศราช\nประพาสต้น\nประเพณีนิยม\nประลัยกัลป์\nประวัติการณ์\nประวัติศาสตร์\nประสบการณ์\nประสบการณ์นิยม\nประสาทการ\nประสูติการ\nประสูติกาล\nประเส\nปรับทุกข์\nปรับโทษ\nปรับปรุง\nปรากฏการณ์\nปราดเปรียว\nปราดเปรื่อง\nปราบปราม\nปริญญาบัตร\nปรัยัติธรรม\nปรุโปร่ง\nปลงใจ\nปลงตก\nปลดทุกข์\nปลดปลง\nปลดปล่อย\nปลดเปลื้อง\nปลดระวาง\nปลดแอก\nปล้นสะดม\nปลอกกระสุน\nปลอกคอ\nปลอดโปร่ง\nปลอดภัย\nปลอมปน\nปลอมแปลง\nปลอบโยน\nปล่อยใจ\nปล่อยตัว\nปล่อยปละ\nปลั๊กไฟ\nปลากริม\nปลาเค็ม\nปลาจ่อม\nปลาเจ่า\nปลาแดก\nปลาตู้\nปลาทอง\nปลาร้า\nปลาส้ม\nปลาดาว\nปลาบิน\nปลาฝา\nปลาวาฬ\nปลาหมึก\nปลาบปลื้ม\nปลายข้าว\nปลายแถว\nปลายทาง\nปลิ้นปลอก\nปลิ้นปล้อน\nปลีกตัว\nปลีกย่อย\nปลุกใจ\nปลุกปล้ำ\nปลุกปั่น\nปลุกระดม\nปลุกเสก\nปลูกฝัง\nปลูกสร้าง\nปวดถ่วง\nปวดมวน\nปวดร้าว\nป่วนปั่น\nป่วยการ\nปอกลอก\nป้องกัน\nปักใจ\nปักดำ\nปักหลัก\nปัจเจกบุคคล\nปัจเจกพุทธะ\nปัจเจกโพธิ\nปัจฉิมชน\nปัจฉิมทิศ\nปัจฉิมภาค\nปัจฉิมยาม\nปัจฉิมลิขิต\nปัจฉิมวัย\nปัจฉิมวาจา\nปัญญาชน\nปัญญาวิมุติ\nปัญญาอ่อน\nปัดเป่า\nปันส่วน\nปั่นป่วน\nปั่นแปะ\nปั่นหัว\nปั้นจิ้ม\nปั้นเจ๋อ\nปั้นปึ่ง\nปั้นสิบ\nปั๊มน้ำมัน\nป่าช้า\nป่าชายเลน\nป่าดง\nป่าดงดิบ\nป่าดิบ\nป่าเถื่อน\nป่าเบญจพรรณ\nป่าละเมาะ\nปากกา\nปากขอ\nปากแข็ง\nปากคอ\nปากคำ\nปากคีบ\nปากจัด\nปากน้ำ\nปากเปล่า\nปากเสียง\nปานกลาง\nป่านนี้\nป้านลม\nป้ายสี\nป่าวร้อง\nปิดฉาก\nปิดบัง\nปิตุฆาต\nปิตุภูมิ\nปีมะโว้\nปีแสง\nปี่กลาง\nปี่ไฉน\nปี่ชวา\nปี่นอก\nปี่ใน\nปี่พาทย์\nปี่อ้อ\nปีกกา\nปีนเกลียว\nปีนป่าย\nปึกแผ่น\nปึงปัง\nปืนกล\nปืนครก\nปืนพก\nปืนยา\nปืนยาว\nปืนลม\nปืนเล็ก\nปืนเล็กยาว\nปืนสั้น\nปืนใหญ่\nปุบปับ\nปุ๊บปั๊บ\nปุ่มเปือก\nปุยฝ้าย\nปุ๋ยคอก\nปุ๋ยเคมี\nปุ๋ยวิทยาศาสตร์\nปุ๋ยหมัก\nปุ๋ยอินทรีย์\nปูจ๋า\nปูเสฉวน\nปู่เจ้า\nปู่ทวด\nปูนขาว\nปูนซีเมนต์\nปูนดิบ\nปูนแดง\nปูนปลาสเตอร์\nปูนปั้น\nเป็ดเทศ\nเป็ดน้ำ\nเป็นกลาง\nเป็นใจ\nเป็นต้น\nเป็นต่อ\nเป็นรอง\nเป็นไร\nเป็นลม\nเป็นห่วง\nเป็นอยู่\nเปรมปรีดิ์\nเปรอะเปื้อน\nเปรียบเทียบ\nเปรียบเปรย\nเปรี้ยวปาก\nเปรี้ยวหวาน\nเปรื่องปราด\nเปลญวน\nเปล่งปลั่ง\nเปล่าดาย\nเปล่าเปลี่ยว\nเปลี่ยนใจ\nเปลี่ยนตัว\nเปลี่ยนแปลง\nเปลี่ยนมือ\nเปลี่ยนหน้า\nเป๋อเหลอ\nเปะปะ\nเป่ากบ\nเป้านิ่ง\nเป้าหมาย\nเปิดฉาก\nเปิดเปิง\nเปิดโปง\nเปิดผนึก\nเปิดเผย\nเปียกปูน\nแป้งสาลี\nแป้งนวล\nแป้งเปียก\nแป้งมัน\nแป้งฝุ่น\nแป้งร่ำ\nแป้งสิงคโปร์\nแป้งหมี่\nแปดปน\nแปดเปื้อน\nแปรปรวน\nแปรผัน\nแปรพักตร์\nแปรรูป\nแปรอักษร\nแปลกปลอม\nแปะโป้ง\nโป้ปด\nโปร่งแสง\nโปร่งใส\nโปรดปราน\nโปรยทาน\nโปรยปราย\nโปโลน้ำ\nผกผัน\nผกากรอง\nผงขาว\nผงชูรส\nผงซักฟอก\nผงฟู\nผดุงครรภ์\nผมไฟ\nผลพลอยได้\nผลลัพธ์\nผลัดเปลี่ยน\nผลิตผล\nผลิตภัณฑ์\nผลุบโผล่\nผสมเทียม\nผสมผสาน\nผสมผเส\nผสมพันธุ์\nผสมโรง\nผสมเสร็จ\nผ่องแผ้ว\nผ่องใส\nผ่อนคลาย\nผ่อนชำระ\nผ่อนปรน\nผ่อนผัน\nผ่อนส่ง\nผอมโซ\nผอมแห้ง\nผักชี\nผักตบชวา\nผักบุ้ง\nผังเมือง\nผัดผ่อน\nผันแปร\nผันผวน\nผ่าตัด\nผ่าเผย\nผ่าหมาก\nผ่าเหล่า\nผ้าขนหนู\nผ้าขาวม้า\nผ้าขี้ริ้ว\nผ้าเช็ดตัว\nผ้าเช็ดปาก\nผ้าเช็ดมือ\nผ้าเช็ดหน้า\nผ้าดิบ\nผ้าต่วน\nผ้าไตร\nผ้าถุง\nผ้าแถบ\nผ้านวม\nผ้านุ่ง\nผ้าใบ\nผ้าป่า\nผ้าป่าน\nผ้าผ่อน\nผ้าพันคอ\nผ้าพันแผล\nผ้าแพร\nผ้าโพกหัว\nผ้ามัดหมี่\nผ้ายาง\nผ้าลูกไม้\nผ้าเหลือง\nผ้าอนามัย\nผ้าอ้อม\nผาดโผน\nผาติกรรม\nผิดหวัง\nผิวเผิน\nผิวพรรณ\nผิวหนัง\nผีกระสือ\nผีกระหัง\nผีกองกอย\nผีโขมด\nผีดิบ\nผีตองเหลือง\nผีถ้วยแก้ว\nผีแถน\nผีทะเล\nผีบุญ\nผีปอบ\nผีพุ่งไต้\nผีฟ้า\nผีเรือน\nผีสาง\nผีเสื้อ\nผีห่า\nผึ่งผาย\nผุดผ่อง\nผุดผาด\nผู้คน\nผู้คุม\nผู้จัดการ\nผู้ชาย\nผู้เชี่ยวชาญ\nผู้ดี\nผู้โดยสาร\nผู้ต้องขัง\nผู้ต้องหา\nผู้แทน\nผู้น้อย\nผู้บริโภค\nผู้บังคับบัญชา\nผู้ปกครอง\nผู้ประกอบการ\nผู้ป่วย\nผู้พิพากษา\nผู้เยาว์\nผู้ร้าย\nผู้วิเศษ\nผู้สื่อข่าว\nผู้เสียหาย\nผู้หญิง\nผู้ใหญ่\nผู้ใหญ่บ้าน\nผูกขวัญ\nผูกขาด\nผูกพัน\nผูกมัด\nเผชิญหน้า\nเผด็จการ\nเผด็จศึก\nเผยแผ่\nเผยแพร่\nเผละผละ\nเผ่าพันธุ์\nเผื่อแผ่\nแผงลอย\nแผนการ\nแผนงาน\nแผนที่\nแผนผัง\nแผนภาพ\nแผนภูมิ\nแผ่นดิน\nแผ่นเสียง\nแผ้วพาน\nโผงผาง\nฝนทอง\nฝอยทอง\nฝักแค\nฝักบัว\nฝักฝ่าย\nฝักใฝ่\nฝังใจ\nฝังหัว\nฝาชี\nฝาแฝด\nฝาละมี\nฝ่าพระบาท\nฝ่าฝืน\nฝ่าฟัน\nฝ้าฟาง\nฝากตัว\nฝากฝัง\nฝีดาษ\nฝีมะม่วง\nฝีจักร\nฝีเท้า\nฝีปาก\nฝีพาย\nฝีมือ\nฝีเย็บ\nฝึกงาน\nฝึกปรือ\nฝึกฝน\nฝึกสอน\nฝึกหัด\nฝืดเคือง\nใฝ่ฝัน\nพงพี\nพงศ์พันธุ์\nพญาโศก\nพญาไฟ\nพบปะ\nพบพาน\nพรสวรรค์\nพรมคด\nพรมแดน\nพรมมิ\nพรรคพวก\nพรรณราย\nพรวดพราด\nพรหมชาติ\nพรหมลิขิต\nพรหมโลก\nพรหมวิหาร\nพร้อมใจ\nพร้อมพรั่ง\nพร้อมเพรียง\nพร้อมมูล\nพร้อมสรรพ\nพร้อมหน้า\nพระครู\nพระคุณ\nพระเคราะห์\nพระเครื่อง\nพระเจ้า\nพระเจ้าอยู่หัว\nพระชายา\nพระทัย\nพระนาง\nพระนางเจ้า\nพระเป็นเจ้า\nพระผู้เป็นเจ้า\nพระพิมพ์\nพระพุทธเจ้า\nพระพุทธองค์\nพระภูมิ\nพระยา\nพระรอง\nพระสนม\nพระสนมเอก\nพระองค์\nพระองค์เจ้า\nพระเอก\nพรั่งพร้อม\nพรั่งพรู\nพรั่นพรึง\nพร่างพราว\nพรายน้ำ\nพรายแพรว\nพราวแพรว\nพร่ำพลอด\nพร่ำเพรื่อ\nพร่ำเพ้อ\nพริกไทย\nพริ้งพราย\nพริ้งเพรา\nพริ้งเพริศ\nพริบตา\nพริ้มพราย\nพริ้มเพรา\nพรุ่งนี้\nพฤติกรรม\nพฤติการณ์\nพฤตินัย\nพลการ\nพลขับ\nพลความ\nพลเมือง\nพลรบ\nพลร่ม\nพลเรือน\nพลโลก\nพลศึกษา\nพลบค่ำ\nพลอดรัก\nพลังงาน\nพลังเงียบ\nพลังจิต\nพลั้งปาก\nพลั้งเผลอ\nพลั้งพลาด\nพลัดถิ่น\nพลัดพราก\nพลาดท่า\nพลาดพลั้ง\nพลิกแพลง\nพลีกรรม\nพลุ่งพล่าน\nพวกพ้อง\nพวงมาลัย\nพวงมาลา\nพวงหรีด\nพวงคราม\nพวงชมพู\nพวงแสด\nพ่วงพี\nพวยน้ำ\nพวยพุ่ง\nพสกนิกร\nพหุคูณ\nพหุภาคี\nพหูพจน์\nพหูสูต\nพอควร\nพอใจ\nพอใช้\nพอใช้ได้\nพอดี\nพอตัว\nพอทำเนา\nพอประมาณ\nพอเพียง\nพอแรง\nพอสมควร\nพอเหมาะ\nพ่อขุน\nพ่อครัว\nพ่อตา\nพ่อบ้าน\nพ่อพันธุ์\nพ่อม่าย\nพ่อเมือง\nพ่อเลี้ยง\nพ่อสื่อ\nพอกพูน\nพ้องพาน\nพักผ่อน\nพักพิง\nพักฟื้น\nพักร้อน\nพักแรม\nพัดยศ\nพัดลม\nพันพัว\nพับฐาน\nพับเพียบ\nพัวพัน\nพาซื่อ\nพาดพิง\nพิณพาทย์\nพิธีกร\nพิธีกรรม\nพิธีการ\nพิธีรีตอง\nพิธีสาร\nพินัยกรรม\nพิมพ์เขียว\nพิมพ์ใจ\nพิมพ์ดีด\nพิษสง\nพี่น้อง\nพี่เบิ้ม\nพี่เลี้ยง\nพึงใจ\nพึงพอใจ\nพึ่งพา\nพึ่งพิง\nพืชพันธุ์\nพืชมงคล\nพื้นฐาน\nพื้นที่\nพื้นบ้าน\nพื้นเพ\nพื้นเมือง\nพื้นเสีย\nพุพอง\nพุทธกาล\nพุทธคุณ\nพุทธจักร\nพุทธเจดีย์\nพุทธฎีกา\nพุทธปฏิมา\nพุทธปฏิมากร\nพุทธมามกะ\nพุทธศักราช\nพุทธศาสนิกชน\nพุทธองค์\nพุทธชาด\nพุทธรักษา\nพุ่มพวง\nพุ่มไม้\nพู่กัน\nพูดจา\nเพ่งเล็ง\nเพดานบิน\nเพดานปาก\nเพริศพราย\nเพริศพริ้ง\nเพริศแพร้ว\nเพรียกพร้อง\nเพรียวลม\nเพลงเชิด\nเพลงยาว\nเพลิงกัลป์\nเพลินใจ\nเพลินตา\nเพลี่ยงพล้ำ\nเพ้อฝัน\nเพาะกาย\nเพาะชำ\nเพาะปลูก\nเพิกถอน\nเพิกเฉย\nเพิ่มเติม\nเพิ่มพูน\nเพียงตา\nเพียงพอ\nเพียบแประ\nเพียบพร้อม\nเพื่อนเกลอ\nเพื่อนตาย\nเพื่อนบ้าน\nเพื่อนฝูง\nเพื่อนยาก\nแพ้ท้อง\nแพร่หลาย\nแพร่งพราย\nแพรวพราว\nโพธิญาณ\nโพธิบัลลังก์\nโพธิสมภาร\nโพธิสัตว์\nโพ้นทะเล\nโพยภัย\nไพ่ตาย\nไพ่ป๊อก\nไพรวัน\nไพรสณฑ์\nไพรสัณฑ์\nไพร่พล\nไพร่ฟ้า\nไพร่สม\nไพร่ส่วย\nไพร่หลวง\nฟกช้ำ\nฟองเต้าหู้\nฟองน้ำ\nฟองมัน\nฟ้องกลับ\nฟ้องร้อง\nฟอนเฟะ\nฟักทอง\nฟัดเฟียด\nฟันดาบ\nฟันฝ่า\nฟันแท้\nฟันน้ำนม\nฟันปลา\nฟันฟาง\nฟันเฟือง\nฟันม้า\nฟันเลื่อย\nฟันหนู\nฟั่นเฝือ\nฟั่นเฟือน\nฟื้นตัว\nฟื้นฝอย\nฟื้นฟู\nฟุ้งซ่าน\nฟุ้งเฟ้อ\nฟุ้งเฟื่อง\nฟุตบอล\nฟูฟ่อง\nฟูเฟื่อง\nฟูมฟัก\nฟูมฟาย\nเฟะฟะ\nเฟื่องฟ้า\nเฟื่องฟุ้ง\nเฟื่องฟู\nไฟฉาย\nไฟแช็ก\nไฟธาตุ\nไฟฟ้า\nภัตกิจ\nภาคทัณฑ์\nภาคพื้น\nภาคเรียน\nภาคภูมิ\nภาพถ่าย\nภาพนิ่ง\nภาพประกอบ\nภาพพจน์\nภาพยนตร์\nภาพลวงตา\nภาพลักษณ์\nภายนอก\nภายใน\nภายหน้า\nภายหลัง\nภารกิจ\nภารธุระ\nภารโรง\nภารตวิทยา\nภาษาศาสตร์\nภาสกร\nภิญโญภาพ\nภินชาติ\nภูธร\nภูธเรศ\nภูบาล\nภูเบศ\nภูเบศวร์\nภูเขา\nภูเขาไฟ\nภูผา\nภูตคาม\nภูตบดี\nภูตรูป\nภูเตศวร\nภูมินทร์\nภูมิบาล\nภูมิประเทศ\nภูมิภาค\nภูมิรัฐศาสตร์\nภูมิลำเนา\nภูมิศาสตร์\nภูมิอากาศ\nภูมิธรรม\nภูมิปัญญา\nภูมิรู้\nภูมิใจ\nภูมิฐาน\nภูมิคุ้มกัน\nภูมิแพ้\nภูษาโยง\nเภทภัย\nเภสัชกร\nเภสัชกรรม\nเภสัชวิทยา\nเภสัชศาสตร์\nโภคทรัพย์\nโภคภัณฑ์\nโภชนากร\nโภชนาการ\nมกุฎราชกุมาร\nมงคลแฝด\nมงคลสูตร\nมงคลหัตถี\nมณเฑียรบาล\nมดดำ\nมดแดง\nมดเท็จ\nมดยอบ\nมดลูก\nมธุปายาส\nมธุรส\nมนเทียรบาล\nมนุษย์กบ\nมโนกรรม\nมโนคติ\nมโนทุจริต\nมโนธรรม\nมโนภาพ\nมโนมัย\nมโนรถ\nมโนรมย์\nมโนสุจริต\nมรรคนายก\nมรรคผล\nมฤคชาติ\nมฤคทายวัน\nมฤคราช\nมลทิน\nมลพิษ\nมลสาร\nมวกเหล็ก\nม้วนหน้า\nมวยไทย\nมวยปล้ำ\nมวยล้ม\nมวยวัด\nมวยสากล\nมวยหมู่\nมวลสาร\nมอคราม\nมอซอ\nมอหมึก\nมองเมียง\nมอบตัว\nมอบหมาย\nมอมเมา\nมะขามเทศ\nมะขามป้อม\nมะขามเปียก\nมะเขือเทศ\nมะเขือพวง\nมะพร้าวแก้ว\nมักคุ้น\nมักจี่\nมักง่าย\nมักน้อย\nมักมาก\nมักใหญ่\nมั่งคั่ง\nมั่งมี\nมัจจุราช\nมัชฌิมนิกาย\nมัชฌิมประเทศ\nมัชฌิมยาม\nมัชฌิมวัย\nมัดจำ\nมัดหมี่\nมัธยมกาล\nมัธยมศึกษา\nมันแกว\nมันเทศ\nมันฝรั่ง\nมันเปลว\nมันสมอง\nมั่นคง\nมั่นใจ\nมั่นหมาย\nมั่นเหมาะ\nมัวเมา\nมัวหมอง\nมั่วสุม\nม้าเทศ\nม้าน้ำ\nม้ามืด\nม้าเร็ว\nม้าล่อ\nม้าลาย\nมากมาย\nมาตรการ\nมาตรฐาน\nมาตราส่วน\nมาตุคาม\nมาตุฆาต\nมาตุภูมิ\nม่านตา\nม่านบังตา\nมายากร\nมายากล\nมายาการ\nมายาวี\nมารผจญ\nมารวิชัย\nมารสังคม\nมารหัวขน\nมาลาการ\nมิ่งขวัญ\nมิ่งมิตร\nมิจฉาจาร\nมิจฉาชีพ\nมิดชิด\nมิดเมี้ยน\nมิดหมี\nมิตรจิต\nมิตรภาพ\nมิตรสหาย\nมิน่า\nมีหน้า\nมีดโกน\nมีดดาบ\nมีดโต้\nมีดพก\nมีดพับ\nมีดสั้น\nมึนงง\nมึนชา\nมึนตึง\nมึนเมา\nมืดครึ้ม\nมืดมน\nมืดมัว\nมือจับ\nมือดี\nมือเติบ\nมือปืน\nมือเปล่า\nมือมืด\nมือสอง\nมือเสือ\nมือหนึ่ง\nมือใหม่\nมุกตลก\nมุขปาฐะ\nมุขมนตรี\nมุ่งมั่น\nมุ่งมาด\nมุ่งหน้า\nมุ่งหมาย\nมุ่งหวัง\nมุ้งลวด\nมุ้งสายบัว\nมุมก้ม\nมุมกลับ\nมุมเงย\nมุมฉาก\nมุมตรง\nมุมป้าน\nมุมมืด\nมุมแย้ง\nมุมสะท้อน\nมุมหักเห\nมุมแหลม\nมุสาวาท\nมูกเลือด\nมูกมัน\nมูกหลวง\nมูนดิน\nมูลฐาน\nมูลนาย\nมูลนิธิ\nมูลเหตุ\nมูลค่า\nมูลฝอย\nเม็ดเงิน\nเม็ดเลือด\nเม็ดโลหิต\nเม่นทะเล\nเมรุมาศ\nเมรุราช\nเมล์อากาศ\nเมาดิบ\nเมามัน\nเมามัว\nเมามาย\nเมินเฉย\nเมียน้อย\nเมียหลวง\nเมียงมอง\nเมี่ยงลาว\nเมี่ยงส้ม\nเมื่อกี้\nเมื่อตะกี้\nเมื่อใด\nเมื่อไร\nเมื่อไหร่\nเมื่อนั้น\nเมืองขึ้น\nเมืองท่า\nเมืองนอก\nเมืองหลวง\nเมื่อยขบ\nเมื่อยล้า\nแม่กอง\nแม่กุญแจ\nแม่คุณ\nแม่งาน\nแม่เจ้า\nแม่ชี\nแม่ทัพ\nแม่นม\nแม่น้ำ\nแม่บท\nแม่บ้าน\nแม่เบี้ย\nแม่พระ\nแม่พิมพ์\nแม่เพลง\nแม่มด\nแม่ม่าย\nแม่ไม้\nแม่ยก\nแม่ยาย\nแม่ร้าง\nแม่เรือน\nแม่แรง\nแม่เล้า\nแม่เลี้ยง\nแม่สี\nแม่สื่อ\nแม่เหล็ก\nแมงมุม\nแม่นยำ\nแมลงช้าง\nแมลงวัน\nแมลงปอ\nแมลงภู่\nแมลงเม่า\nแมวเซา\nแมวน้ำ\nแมวป่า\nแมวมอง\nไม้กลัด\nไม้กวาด\nไม้กางเขน\nไม้เกาหลัง\nไม้ขีดไฟ\nไม้จิ้มฟัน\nไม้เด็ด\nไม้ตาย\nไม้ตีพริก\nไม้ที\nไม้เท้า\nไม้บรรทัด\nไม้เมตร\nไม้ระแนง\nไม้เรียว\nไม้หมอน\nไม้อัด\nไม้จัตวา\nไม้ตรี\nไม้ไต่คู้\nไม้โท\nไม้ผัด\nไม้มลาย\nไม้ม้วน\nไม้ยมก\nไม้หน้า\nไม้หันอากาศ\nไม้เอก\nยกกลีบ\nยกครู\nยกเครื่อง\nยกเค้า\nยกทรง\nยกฟ้อง\nยกเมฆ\nยกยอ\nยกย่อง\nยกเลิก\nยกเว้น\nย่นย่อ\nยมทูต\nยมบาล\nยมราช\nยมโลก\nยวดยิ่ง\nยวดยาน\nยวนยี\nยวบยาบ\nย่อท้อ\nย่อส่วน\nย่อหน้า\nย่อหย่อน\nยอกย้อน\nยองใย\nย่องเบา\nย่องแย่ง\nยอดเยี่ยม\nยอดอก\nย้อนยอก\nย้อนรอย\nย้อนศร\nย้อนแสง\nย้อนหลัง\nยอบแยบ\nยอมความ\nย่อมเยา\nย่อยยับ\nยักยอก\nยักย้าย\nยักเยื้อง\nยัญกรรม\nยัญพิธี\nยัดเยียด\nยับเยิน\nยับยั้ง\nยั่วยวน\nยั่วยุ\nยั่วเย้า\nยากวาด\nยากันยุง\nยาเขียว\nยาใจ\nยาฉุน\nยาชา\nยาซัด\nยาดอง\nยาแดง\nยาถ่าย\nยาธาตุ\nยานัตถุ์\nยาเบื่อ\nยาโป๊\nยาแฝด\nยาพิษ\nยาระบาย\nยาสลบ\nยาสั่ง\nยาสีฟัน\nยาสูบ\nยาเส้น\nยาเสพติด\nยาหม่อง\nยาเหลือง\nย่าทวด\nย่านาง\nยากแค้น\nยากจน\nยากเย็น\nยากไร้\nยางนอก\nยางใน\nยางมะตอย\nยางมะตูม\nยางลบ\nยางสน\nยางอาย\nย่างกราย\nย่างเยื้อง\nย่างสด\nย่างสามขุม\nย่างเหยียบ\nยานเกราะ\nยานพาหนะ\nยานอวกาศ\nยานคาง\nยายทวด\nยาวเฟื้อย\nยาวยืด\nยาวเหยียด\nยำทวาย\nยำใหญ่\nยำเกรง\nยำเยง\nย่ำต๊อก\nย่ำยี\nย่ำแย่\nยิงเป้า\nยิ่งนัก\nยิ่งยวด\nยิ่งใหญ่\nยินดี\nยินยอม\nยินร้าย\nยิ้มกริ่ม\nยิ้มแฉ่ง\nยิ้มแต้\nยิ้มแป้น\nยิ้มเผล่\nยิ้มเยาะ\nยิ้มแย้ม\nยียวน\nยึดครอง\nยึดถือ\nยึดมั่น\nยึดเหนี่ยว\nยืดยาด\nยืดยาว\nยืดเยื้อ\nยืดหยุ่น\nยืดอก\nยืนกราน\nยืนต้น\nยืนพื้น\nยืนยง\nยืนยัน\nยืนหยัด\nยื้อยุด\nยุยง\nยุแยง\nยุแหย่\nยุคลบาท\nยุคเข็ญ\nยุคทอง\nยุคมืด\nยุ่งขิง\nยุ่งยาก\nยุ่งเหยิง\nยุติธรรม\nยุทธการ\nยุทธนาวี\nยุทธปัจจัย\nยุทธภัณฑ์\nยุทธภูมิ\nยุทธวิธี\nยุทธศาสตร์\nยุทธหัตถี\nยุทธนาการ\nยุทธนาธิการ\nยุบยับ\nยุบยิบ\nยุพราช\nยู่ยี่\nเย็นเจี๊ยบ\nเย็นใจ\nเย็นฉ่ำ\nเย็นเฉียบ\nเย็นชา\nเย็นชืด\nเย็นตา\nเย็นเยียบ\nเย็นเยือก\nเย็นวาบ\nเย็นวูบ\nเย็บกี่\nเย็บจักร\nเย็บด้าย\nเย้ยหยัน\nเย้าหยอก\nเยาะเย้ย\nเยี่ยมกราย\nเยี่ยมเยียน\nเยี่ยมเยือน\nเยี่ยมยอด\nเยื่อเคย\nเยื่อใย\nเยือกเย็น\nเยื้องกราย\nเยื้องยัก\nเยื้องย่าง\nแยกย้าย\nแยกแยะ\nแย่งชิง\nแยบคาย\nแยบยล\nแย้มพราย\nแย้มยิ้ม\nแย้มสรวล\nโยเย\nโย้เย้\nโยกโคลง\nโยกย้าย\nโยกโย้\nโยนกลอง\nใยหิน\nรกชัฏ\nรกร้าง\nรกเรี้ยว\nรกเรื้อ\nรกราก\nรงควัตถุ\nรชนีกร\nรถกระบะ\nรถเก๋ง\nรถเข็น\nรถแข่ง\nรถจักร\nรถจี๊ป\nรถตู้\nรถทัวร์\nรถบรรทุก\nรถพ่วง\nรถพยาบาล\nรถไฟ\nรถไฟฟ้า\nรถม้า\nรถเมล์\nรถยนต์\nรถราง\nรถลาก\nรถสปอร์ต\nรถสิบล้อ\nรบกวน\nรบรา\nรบเร้า\nรมดำ\nร่มเกล้า\nร่มชูชีพ\nร่มเย็น\nร่มรื่น\nร่วงโรย\nรวงผึ้ง\nรวงรัง\nรวดเร็ว\nรวนเร\nรวบยอด\nรวบรวม\nรวบรัด\nรวมพล\nรวมหัว\nร่วมใจ\nร่วมเพศ\nร่วมมือ\nร่วมรัก\nร่วมสมัย\nรวยริน\nรวยรื่น\nรสชาติ\nรสนิยม\nรองท้อง\nรองเท้า\nรองพื้น\nร่องน้ำ\nร่องรอย\nร้องขอ\nร้องทุกข์\nร้องเรียน\nร้องห่ม\nร้องไห้\nรองช้ำ\nรองทรง\nรอดชีวิต\nรอดตัว\nรอดตาย\nรอนแรม\nร่อนเร่\nร้อนใจ\nร้อนตัว\nร้อนรน\nร้อนรุ่ม\nร้อนวิชา\nร้อนอาสน์\nรอบจัด\nรอบเดือน\nรอบรู้\nรอยร้าว\nร่อยหรอ\nร้อยละ\nร้อยกรอง\nร้อยแก้ว\nร้อยหวาย\nระนาดทุ้ม\nระนาดเอก\nระเบิดขวด\nระเบิดมือ\nระเบียบการ\nรักใคร่\nรักษาการ\nรักษาการณ์\nรังไข่\nรังแตน\nรังนก\nรังผึ้ง\nรังเพลิง\nรังมด\nรังสรรค์\nรังสฤษฏ์\nรั้งรอ\nรังสีแพทย์\nรังสีวิทยา\nรัชกาล\nรัชทายาท\nรัชนีกร\nรัฐธรรมนูญ\nรัฐบาล\nรัฐบุรุษ\nรัฐประศาสน์\nรัฐประหาร\nรัฐพิธี\nรัฐมนตรี\nรัฐวิสาหกิจ\nรัฐศาสตร์\nรัฐสภา\nรัดกุม\nรัดเกล้า\nรัดตัว\nรัดประคด\nรัดรึง\nรัดรูป\nรัตติกาล\nรับขวัญ\nรับจ้าง\nรับช่วง\nรับใช้\nรับซื้อ\nรับทราบ\nรับประกัน\nรับประทาน\nรับปาก\nรับผิด\nรับผิดชอบ\nรับฟ้อง\nรับฟัง\nรับมือ\nรับรอง\nรับรู้\nรับสมัคร\nรับสั่ง\nรับหน้า\nรับเหมา\nรั่วไหล\nรามือ\nร่าเริง\nรากแก้ว\nรากขวัญ\nรากฐาน\nรากฟัน\nรากศัพท์\nรากเหง้า\nร่างกาย\nร่างแห\nร้างรา\nราชกรณียกิจ\nราชการ\nราชกิจ\nราชครู\nราชฐาน\nราชทัณฑ์\nราชทินนาม\nราชทูต\nราชธานี\nราชนาวี\nราชบัณฑิต\nราชบัลลังก์\nราชบาตร\nราชบุตร\nราชปะแตน\nราชภัฏ\nราชมัล\nราชยาน\nราชรถ\nราชลัญจกร\nราชเลขาธิการ\nราชเลขานุการ\nราชวงศ์\nราชวัติ\nราชสกุล\nราชสมบัติ\nราชสาส์น\nราชหัตถเลขา\nราชองครักษ์\nราชโองการ\nราชาคณะ\nราชาศัพท์\nราชินีนาถ\nร้านชำ\nร้านรวง\nราบคาบ\nราบรื่น\nราบเรียบ\nรายการ\nรายงาน\nรายจ่าย\nรายได้\nรายทาง\nรายรับ\nรายล้อม\nรายละเอียด\nรายวิชา\nร่ายยาว\nร่ายรำ\nร้ายกาจ\nร้ายแรง\nราวนม\nราวป่า\nร้าวฉาน\nร้าวราน\nรำพัด\nรำแพน\nรำวง\nร่ำไป\nร่ำร้อง\nร่ำเรียน\nร่ำไร\nร่ำลา\nร่ำไห้\nริเริ่ม\nริอ่าน\nริมฝีปาก\nริ้วรอย\nรีบร้อน\nรีบรุด\nรีบเร่ง\nรื่นรมย์\nรื่นเริง\nรื้อถอน\nรื้อฟื้น\nรุกฆาต\nรุกราน\nรุกล้ำ\nรุกไล่\nรุ่งขึ้น\nรุ่งแจ้ง\nรุ่งเช้า\nรุ่งเรือง\nรุ่งโรจน์\nรุ่งสว่าง\nรุ่งสาง\nรุ่งอรุณ\nรุจิเรข\nรุดหน้า\nรุนแรง\nรุมเร้า\nรุมล้อม\nรุ่มรวย\nรุ่มร้อน\nรุ่ยร่าย\nรู้แกว\nรู้ความ\nรู้คุณ\nรู้งาน\nรู้จัก\nรู้แจ้ง\nรู้ใจ\nรู้เชิง\nรู้ตัว\nรู้ทัน\nรู้เท่า\nรู้เรื่อง\nรู้สำนึก\nรู้สึก\nรู้เห็น\nรูปการณ์\nรูปโฉม\nรูปฌาน\nรูปถ่าย\nรูปทรง\nรูปธรรม\nรูปแบบ\nรูปพรรณ\nรูปพรหม\nรูปภพ\nรูปภาพ\nรูปร่าง\nรูปสมบัติ\nเร่ร่อน\nเร่งด่วน\nเร่งมือ\nเร่งรัด\nเร่งรีบ\nเร่งเร้า\nเร้นลับ\nเร่อร่า\nเร่าร้อน\nเราะราย\nเราะร้าย\nเริงใจ\nเริงรมย์\nเริดร้าง\nเริ่มต้น\nเริ่มแรก\nเรี่ยราด\nเรี่ยไร\nเรียกคืน\nเรียกตัว\nเรียกร้อง\nเรียกหา\nเรียบร้อย\nเรียงความ\nเรียงตัว\nเรียงเบอร์\nเรียงพิมพ์\nเรียงเม็ด\nเรียงราย\nเรียนรู้\nเรียบร้อย\nเรียบเรียง\nเรียบวุธ\nเรี่ยมเร้\nเรี่ยวแรง\nเรือกลไฟ\nเรือกอและ\nเรือกำปั่น\nเรือจ้าง\nเรือดำน้ำ\nเรือโดยสาร\nเรือตรวจการณ์\nเรือตังเก\nเรือธง\nเรือนำร่อง\nเรือบด\nเรือบิน\nเรือใบ\nเรือประมง\nเรือพ่วง\nเรือพิฆาต\nเรือยนต์\nเรือยาว\nเรือโยง\nเรือรบ\nเรือลากจูง\nเรือสำปั้น\nเรือสำเภา\nเรือหลวง\nเรือหางยาว\nเรืออีโปง\nเรือเอี้ยมจุ๊น\nเรื้อรัง\nเรือกสวน\nเรืองนาม\nเรืองรอง\nเรืองแสง\nเรื่องราว\nเรื่องสั้น\nเรือนแก้ว\nเรือนจำ\nเรือนเบี้ย\nเรือนแพ\nเรือนหอ\nเรื่อยเจื้อย\nเรื่อยเฉื่อย\nเรื่อยเปื่อย\nแรเงา\nแรกนา\nแรกนาขวัญ\nแรงงาน\nแรงดึงดูด\nแรงเทียน\nแรงม้า\nแรงเหวี่ยง\nแรมรอน\nแรมรา\nแรมโรย\nโรคจิต\nโรงครัว\nโรงงาน\nโรงเจ\nโรงเตี๊ยม\nโรงทาน\nโรงนา\nโรงพยาบาล\nโรงพัก\nโรงพิมพ์\nโรงเรียน\nโรงเรือน\nโรงแรม\nโรงเลี้ยง\nโรงเลื่อย\nโรงสี\nโรงสีข้าว\nโรงอาหาร\nโรมรัน\nโรยรา\nฤชากร\nฤดูกาล\nลงขัน\nลงแขก\nลงคอ\nลงตัว\nลงท้าย\nลงทุน\nลงโทษ\nลงพุง\nลงมือ\nลงรัก\nลงรอย\nลงแรง\nลงโรง\nลงเอย\nลดตัว\nลดละ\nลดเลี้ยว\nลดหย่อน\nลดหลั่น\nลนลาน\nล้นพ้น\nล้นหลาม\nล้นเหลือ\nลบล้าง\nลบเลือน\nลบหลู่\nลมกรด\nลมค้า\nลมงวง\nลมแดด\nลมทะเล\nลมบก\nลมบน\nลมบ้าหมู\nลมปราณ\nลมปาก\nลมพิษ\nลมว่าว\nลมเสีย\nลมหนาว\nลมหายใจ\nล่มจม\nล่มสลาย\nล้มละลาย\nล้มลุก\nล้มเลิก\nล่วงเกิน\nล่วงรู้\nล่วงละเมิด\nล่วงลับ\nล่วงล้ำ\nล่วงเลย\nล่วงหน้า\nลวดลาย\nลวดสปริง\nลวดหนาม\nล้วนแล้ว\nลหุโทษ\nล่อลวง\nล่อหลอก\nล่อแหลม\nล้อต๊อก\nล้อเลื่อน\nล้อเล่น\nล้อเลียน\nล้อหลอก\nลองเชิง\nลองดี\nลองภูมิ\nล่องหน\nลอดช่อง\nล่อนจ้อน\nลอบกัด\nล้อมวง\nลอยแก้ว\nลอยชาย\nลอยตัว\nลอยนวล\nลอยแพ\nลอยลำ\nละทิ้ง\nละเลย\nละเว้น\nละครนอก\nละครใน\nละครเพลง\nละครร้อง\nละครรำ\nละครลิง\nละครสัตว์\nละเอียดอ่อน\nลักไก่\nลักพา\nลักเพศ\nลักยิ้ม\nลักลอบ\nลักลั่น\nลักหลับ\nลัดเลาะ\nลับตา\nลับแล\nลับหลัง\nลาออก\nล่าช้า\nล่าทัพ\nล้าสมัย\nล้าหลัง\nลากข้าง\nล้างบาง\nล้างผลาญ\nลาดเขา\nลาดตระเวน\nลาดเท\nลาดยาง\nลานบิน\nลาภปาก\nลาภลอย\nลามปาม\nลามเลีย\nลายคราม\nลายเซ็น\nลายแทง\nลายน้ำ\nลายพร้อย\nลายมือ\nลายลักษณ์\nลายเส้น\nลำกล้อง\nลำแข้ง\nลำธาร\nลำแสง\nลำไส้\nลำตัด\nลำนำ\nล่ำสัน\nล้ำยุค\nล้ำสมัย\nล้ำลึก\nล้ำเลิศ\nล้ำเส้น\nล้ำหน้า\nลิงจุ่น\nลิงลม\nลิงโลด\nลิดรอน\nลิ้นไก่\nลิ้นชัก\nลิ้นปี่\nลิ้นควาย\nลิ้นงูเห่า\nลิ้นหมา\nลิบลับ\nลิบลิ่ว\nลิ่มเลือด\nลี้ภัย\nลี้ลับ\nลึกซึ้ง\nลึกลับ\nลึกล้ำ\nลืมตน\nลืมต้น\nลืมตัว\nลืมตา\nลืมเลือน\nลือชา\nลือชื่อ\nลือลั่น\nลุล่วง\nลุกลน\nลุกลาม\nลุกลี้ลุกลน\nลุกฮือ\nลุ่มน้ำ\nลุ่มลึก\nลุ่มหลง\nลุ่ทาง\nลูกกรง\nลูกกรอก\nลูกกรุง\nลูกกลอน\nลูกกลิ้ง\nลูกกวาด\nลูกกะจ๊อก\nลูกกุญแจ\nลูกเกด\nลูกแก้ว\nลูกขนไก่\nลูกข่าง\nลูกขุน\nลูกเขย\nลูกครึ่ง\nลูกคลื่น\nลูกความ\nลูกคอ\nลูกค้า\nลูกคิด\nลูกคู่\nลูกจ้าง\nลูกช้าง\nลูกชิด\nลูกชิ้น\nลูกชุบ\nลูกซอง\nลูกโซ่\nลูกดอก\nลูกดิ่ง\nลูกตะกั่ว\nลูกตุ้ม\nลูกเต้า\nลูกเต๋า\nลูกถ้วย\nลูกทุ่ง\nลูกเธอ\nลูกน้อง\nลูกน้ำ\nลูกนิมิต\nลูกบอล\nลูกบ้าน\nลูกบาศก์\nลูกบิด\nลูกเบี้ยว\nลูกประคบ\nลูกประคำ\nลูกปัด\nลูกปืน\nลูกโป่ง\nลูกผสม\nลูกผู้ชาย\nลูกผู้หญิง\nลูกพรรค\nลูกพี่\nลูกฟูก\nลูกไฟ\nลูกมือ\nลูกโม่\nลูกไม้\nลูกยาเธอ\nลูกรอก\nลูกรัง\nลูกเรือ\nลูกล้อ\nลูกลอย\nลูกเล่น\nลูกเลี้ยง\nลูกโลก\nลูกวัด\nลูกศร\nลูกศิษย์\nลูกสมุน\nลูกสะใภ้\nลูกสูบ\nลูกเสือ\nลูกหนัง\nลูกหนี้\nลูกหนู\nลูกหมาก\nลูกหลง\nลูกหลาน\nลูกหาบ\nลูกหิน\nลูกเห็บ\nลูกเหม็น\nลูกแหง่\nลูกอม\nลูกหม้อ\nลูบคม\nลูบคลำ\nลูบไล้\nเล็กน้อย\nเลขคณิต\nเลขผา\nเลขหมาย\nเล็ดลอด\nเล่นงาน\nเล่นแง่\nเล่นชู้\nเล่นตัว\nเล่นลิ้น\nเล่นหัว\nเลนส์นูน\nเลนส์เว้า\nเล็บครุฑ\nเลยเถิด\nเลศนัย\nเล่ห์กล\nเล่ห์เหลี่ยม\nเลอโฉม\nเลอมาน\nเลอเลิศ\nเลอสรวง\nเล่อล่า\nเลอะเลือน\nเล่าเรียน\nเล่าลือ\nเลาะลัด\nเลิกรา\nเลิกร้าง\nเลิกล้ม\nเลิศเลอ\nเลี้ยงชีพ\nเลี้ยงดู\nเลี้ยงต้อย\nเลียบเคียง\nเลี้ยวลด\nเลือกตั้ง\nเลือกเฟ้น\nเลือกสรร\nเลื่องลือ\nเลือดกำเดา\nเลือดเนื้อ\nเลือดฝาด\nเลือดเย็น\nเลือดร้อน\nเลือดหมู\nเลือดอุ่น\nเลือนราง\nเลื่อนเปื้อน\nเลื่อนลอย\nเลื่อมพราย\nเลื่อมใส\nเลื่อยฉลุ\nเลื่อยลันดา\nเลื่อยวงเดือน\nเลื้อยคลาน\nแลเหลียว\nแลกเปลี่ยน\nแล้วกัน\nและเล็ม\nโล่งใจ\nโล่งโถง\nโล่งอก\nโลดเต้น\nโลดโผน\nโลดลิ่ว\nโลดแล่น\nไล่ที่\nไล่เบี้ย\nไล่เลี่ย\nไล่เลียง\nไล่หลัง\nไล่ออก\nวกวน\nวงกบ\nวงกลม\nวงการ\nวงแขน\nวงเงิน\nวงจร\nวงนอก\nวงใน\nวงรี\nวงเล็บ\nวงเวียน\nวงแหวน\nวงศ์วาน\nวจีกรรม\nวจีเภท\nวจีภาค\nวนเวียน\nวอดวาย\nว็อบแว็บ\nวังวน\nวังหน้า\nวังหลวง\nวังหลัง\nวัดราษฎร์\nวัดวา\nวัดหลวง\nวัดผล\nวัดพื้น\nวัตถุนิยม\nวัตถุประสงค์\nวัตรปฏิบัติ\nวันโกน\nวันพระ\nวันเพ็ญ\nวัยรุ่น\nวัยวุฒิ\nว่ากล่าว\nว่าจ้าง\nว่าด้วย\nว่าที่\nวางก้าม\nวางใจ\nวางตัว\nวางตา\nวางโต\nวางท่า\nวางมวย\nวางมาด\nวางมือ\nวางวาย\nว่างเปล่า\nว่างเว้น\nวาดเขียน\nว่านเครือ\nวาบหวาม\nวายชนม์\nวายปราณ\nวายวาง\nวายวอด\nวายร้าย\nวายุภักษ์\nวาววับ\nวาววาม\nวาวแวว\nวาวแสง\nวิกฤตการณ์\nวิกฤติการณ์\nวิกฤตกาล\nวิกฤติกาล\nวิกลจริต\nวิงเวียน\nวิ่งเต้น\nวิ่งผลัด\nวิ่งรอก\nวิ่งราว\nวิจิตรศิลป์\nวิชาการ\nวิชาชีพ\nวิชาธร\nวิญญูชน\nวิดพื้น\nวิตกจริต\nวิถีทาง\nวิทยากร\nวิทยากล\nวิทยาการ\nวิทยาเขต\nวิทยาทาน\nวิทยาธร\nวิทยานิพนธ์\nวิทยาศาสตร์\nวิเทศสัมพันธ์\nวิธีการ\nวินัยธร\nวินัยปิฎก\nวินาศกรรม\nวินาศภัย\nวินาศสันตะโร\nวิภัชพยากรณ์\nวิภัชวาที\nวิไลวรรณ\nวิสัญญีแพทย์\nวิสัญญีภาพ\nวิสัญญีวิทยา\nวุฒิบัตร\nวุฒิสภา\nวุฒิสมาชิก\nวุ่นวาย\nวุ้นเส้น\nวูบวาบ\nเวจกุฎี\nเวจมรรค\nเวชกรรม\nเวชภัณฑ์\nเวชศาสตร์\nเวทมนตร์\nเวนคืน\nเวรกรรม\nเวฬุการ\nเวฬุวัน\nเว้าวอน\nเวิ้งว้าง\nเวียงวัง\nเวียนเทียน\nแว้งกัด\nแวดล้อม\nแวดวง\nแว่นขยาย\nแว่นแคว้น\nแว่นตา\nแวบวับ\nแววตา\nแวววาม\nแวววาว\nแวะเวียน\nโวยวาย\nไวไฟ\nไว้ใจ\nไว้ชื่อ\nไว้ตัว\nไว้ทุกข์\nไว้ลาย\nไว้หน้า\nไว้อาลัย\nศนิวาร\nศอกกลับ\nศอกกำ\nศอกกำมา\nศักดิ์ศรี\nศักดิ์สิทธิ์\nศารทวิษุวัติ\nศาลแขวง\nศาลจังหวัด\nศาลชั้นต้น\nศาลฎีกา\nศาลเตี้ย\nศาลทหาร\nศาลปกครอง\nศาลพระภูมิ\nศาลเพียงตา\nศาลแพ่ง\nศาลรัฐธรรมนูญ\nศาลแรงงาน\nศาลล้มละลาย\nศาลโลก\nศาลสูง\nศาลสูงสุด\nศาลอาญา\nศาลอุทธรณ์\nศาลากลาง\nศาลาดิน\nศาลาราย\nศาลาวัด\nศิลาฤกษ์\nศิลาแลง\nศิษย์เก่า\nศิษย์เอก\nศีลจุ่ม\nศีลธรรม\nศีลวัต\nศีลอด\nศูนย์กลาง\nศูนย์การค้า\nศูนย์ถ่วง\nศูนย์สูตร\nศูนย์หน้า\nเศร้าใจ\nเศร้าโศก\nเศร้าสร้อย\nเศร้าสลด\nเศร้าหมอง\nเศวตฉัตร\nเศษเกิน\nเศษซ้อน\nเศษวรรค\nเศษส่วน\nเศษเหล็ก\nโศกนาฏกรรม\nโศกศัลย์\nโศกเศร้า\nโศกสลด\nสกลโลก\nส่งเดช\nส่งท้าย\nส่งเสริม\nส่งเสีย\nส่งเสียง\nสงบเงียบ\nสงบเสงี่ยม\nสง่างาม\nสง่าราศี\nสดชื่น\nสดใส\nสตรีเพศ\nสติปัญญา\nสถลมารค\nสถานกงสุล\nสถานที่\nสถานทูต\nสถานการณ์\nสถานภาพ\nสถิติศาสตร์\nสนตะพาย\nสนใจ\nส้นตีน\nสนธิสัญญา\nสนนราคา\nสนับแข้ง\nสนับเพลา\nสนับมือ\nสนามบิน\nสนามเพลาะ\nสนิทสนม\nสนิมขุม\nสนิมสร้อย\nสนุกสนาน\nสบประมาท\nสบายใจ\nสภาพธรรม\nสมควร\nสมจริง\nสมใจ\nสมนัย\nสมน้ำหน้า\nสมประกอบ\nสมส่วน\nสมหวัง\nสมคบ\nสมทบ\nสมยอม\nสมรัก\nสมรู้\nสมสู่\nส้มฉุน\nส้มตำ\nส้มลิ้ม\nส้มกุ้ง\nส้มเช้า\nสมญานาม\nสมมติฐาน\nสมมุติฐาน\nสมมติเทพ\nสมรภูมิ\nสมัครใจ\nสมัยนิยม\nสมุทรศาสตร์\nสมุทรเสนา\nสยดสยอง\nสยองขวัญ\nสยามรัฐ\nสรรหา\nสรวมชีพ\nสรวลเส\nสร้อยเศร้า\nสร้างสรรค์\nสร้างเสริม\nสลดใจ\nสลบไสล\nสละสลวย\nสลาเหิน\nสลากภัต\nสวนครัว\nสวนป่า\nสวนสนุก\nสวนหย่อม\nส่วนกลาง\nส่วนเกิน\nส่วนตัว\nส่วนบุญ\nส่วนแบ่ง\nส่วนประกอบ\nส่วนพระองค์\nส่วนผสม\nส่วนรวม\nส่วนร่วม\nส่วนลด\nส่วนสัด\nสวมกอด\nสวมเขา\nสวมรอย\nสวยมภู\nสว่างไสว\nสวามิภักดิ์\nสวิงสวาย\nสสารนิยม\nส่อเสียด\nสอดคล้อง\nสอดแทรก\nสอดแนม\nสอบถาม\nสอบทาน\nสอบไล่\nสอบสวน\nส้อมเสียง\nสะสวย\nสะแกวัลย์\nสะแกแสง\nสะใจ\nสะเด็ดยาด\nสะเทือนใจ\nสะบัดช่อ\nสั่งสม\nสั่งสอน\nสั่งเสีย\nสังเกตการณ์\nสังคมนิยม\nสังคมวิทยา\nสังคมศาสตร์\nสังคมศึกษา\nสังคมสงเคราะห์\nสัญญาบัตร\nสัดส่วน\nสัตการ\nสัตบุรุษ\nสัตบริภัณฑ์\nสัตภัณฑ์\nสัตมหาสถาน\nสัตโลหะ\nสันเขา\nสันดอน\nสันหลัง\nสั่นเทา\nสั่นเทิ้ม\nสันติบาล\nสันติภาพ\nสันติวิธี\nสันติสุข\nสับเปลี่ยน\nสับสน\nสับหลีก\nสับหว่าง\nสัมมาคารวะ\nสัมมาชีพ\nส่าเหล้า\nสากกะเบือ\nสาทิสลักษณ์\nสาธุการ\nสาธุชน\nสาบเสือ\nสาปสรร\nสาปแช่ง\nสาปส่ง\nสามง่าม\nสามล้อ\nสามเหลี่ยม\nสามเวท\nสามัญชน\nสามัญสำนึก\nสายดิ่ง\nสายดิน\nสายตรวจ\nสายน้ำ\nสายบัว\nสายพาน\nสายฟ้า\nสายยาง\nสายยู\nสายใย\nสายรก\nสายรุ้ง\nสายล่อฟ้า\nสายลับ\nสายเลือด\nสายโลหิต\nสายวัด\nสายส่ง\nสายสวาท\nสายสะดือ\nสายสะพาย\nสายสัมพันธ์\nสายสิญจน์\nสายสืบ\nสายไหม\nสายอากาศ\nสายตา\nสายหยุด\nสารตรา\nสารประกอบ\nสารละลาย\nสารส้ม\nสารหนู\nสารทฤดู\nสาวใช้\nสาวน้อย\nสาวใหญ่\nสำนักงาน\nสำนักพิมพ์\nสำนักสงฆ์\nสำมะโนครัว\nสำเร็จรูป\nสิกขาบท\nสิงสถิต\nสิงสู่\nสิ่งก่อสร้าง\nสิ่งของ\nสิ่งปฏิกูล\nสิ่งพิมพ์\nสิ่งแวดล้อม\nสิ่งศักดิ์สิทธิ์\nสิทธิกร\nสิทธิ์ขาด\nสิทธิชัย\nสิทธิโชค\nสิทธิบัตร\nสินค้า\nสินจ้าง\nสินเชื่อ\nสินไถ่\nสินทรัพย์\nสินน้ำใจ\nสินบน\nสินแร่\nสินสมรส\nสินสอด\nสินไหม\nสิ้นเชิง\nสิ้นสุด\nสีผึ้ง\nสีลม\nสีชอล์ก\nสีถ่าน\nสีเทียน\nสีน้ำ\nสีน้ำมัน\nสีโปสเตอร์\nสีฝุ่น\nสี่เหลี่ยม\nสีหน้า\nสึกหรอ\nสืบทอด\nสืบค้น\nสืบสวน\nสืบสาว\nสืบเสาะ\nสื่อผสม\nสื่อมวลชน\nสื่อสาร\nสุกงอม\nสุกดิบ\nสุกปลั่ง\nสุกใส\nสุขนาฏกรรม\nสุขภัณฑ์\nสุขภาพ\nสุขลักษณะ\nสุขวิทยา\nสุขศาลา\nสุขศึกษา\nสุดท้าย\nสุตกวี\nสุนทรพจน์\nสุภาพชน\nสู่ขอ\nสู่รู้\nสู่สม\nสูงส่ง\nสูญเปล่า\nสูญสิ้น\nสูญเสีย\nสูญหาย\nเสสรวล\nเสแสร้ง\nเสกสรร\nเสถียรภาพ\nเส้นชัย\nเส้นตรง\nเส้นตาย\nเส้นทาง\nเส้นใย\nเส้นรุ้ง\nเส้นเลือด\nเส้นแวง\nเส้นสาย\nเส้นเสียง\nเส้นหมี่\nเส้นเอ็น\nเสบียงกรัง\nเสมอภาค\nเสมอหน้า\nเสมอเหมือน\nเสมียนตรา\nเสร็จสรรพ\nเสร็จสิ้น\nเสริมส่ง\nเสริมสร้าง\nเสริมสวย\nเสรีไทย\nเสรีธรรม\nเสรีนิยม\nเสรีภาพ\nเสาเข็ม\nเสาธง\nเสียใจ\nเสียเชิง\nเสียดาย\nเสียที\nเสียเที่ยว\nเสียเปรียบ\nเสียเปล่า\nเสียรู้\nเสียแรง\nเสียสละ\nเสียหลัก\nเสียหาย\nเสี่ยงทาย\nเสียดแทง\nเสียดแทรก\nเสียดสี\nเสี้ยนศึก\nเสี้ยนหนาม\nเสี้ยมสอน\nเสียวซ่าน\nเสียวไส้\nเสือดาว\nเสือดำ\nเสือปลา\nเสือป่า\nเสือไฟ\nเสื่อกก\nเสื่อกระจูด\nเสื่อน้ำมัน\nเสื่อลำแพน\nเสื้อกล้าม\nเสื้อกั๊ก\nเสื้อเกราะ\nเสื้อครุย\nเสื้อแสง\nเสื้อเมือง\nเสือกคลาน\nเสือกสน\nเสือกไส\nเสื่อมคลาย\nเสื่อมถอย\nเสื่อมทราม\nเสื่อมโทรม\nเสื่อมสลาย\nเสื่อมสูญ\nเสื่อมเสีย\nเสือหมอบ\nแสกหน้า\nแสดงออก\nแสเถา\nแสนกล\nแสนรู้\nแสร้งว่า\nใส่ความ\nใส่ไคล้\nใส่ใจ\nใส่ไฟ\nไส้กรอก\nไส้ไก่\nไส้ติ่ง\nไส้ศึก\nไส้อั่ว\nไส้เดือน\nไส้ตัน\nไสยเวท\nไสยศาสตร์\nหกล้ม\nหงส์หยก\nหงอนไก่\nหงอยก๋อย\nหงอยเหงา\nหงายท้อง\nหงายหลัง\nหงำเหงอะ\nหงำเหงือก\nหดหาย\nหดหู่\nหนทาง\nหนวกหู\nหน่วงเหนี่ยว\nหน่วยก้าน\nหน่อไม้\nหนองใน\nหนองแซง\nหนักข้อ\nหนักใจ\nหนักแน่น\nหนักหน่วง\nหนักหนา\nหนังกลับ\nหนังตะลุง\nหนังเรียด\nหนังสด\nหนังใหญ่\nหนังสือพิมพ์\nหนาแน่น\nหน้ากระดาน\nหน้ากาก\nหน้ากาฬ\nหน้าแข้ง\nหน้าจั่ว\nหน้าฉาน\nหน้าตัก\nหน้าตา\nหน้าต่าง\nหน้าท้อง\nหน้าทับ\nหน้าที่\nหน้าที่นั่ง\nหน้าบัน\nหน้าปัด\nหน้าผา\nหน้าผาก\nหน้าม้า\nหน้ามุข\nหน้าไม้\nหน้าเลือด\nหน้าอก\nหนามเตย\nหน่ายหนี\nหน่ายแหนง\nหนาวเหน็บ\nหนำใจ\nหนี้สิน\nหนี้สูญ\nหนุนเนื่อง\nหนุนหลัง\nหมกมุ่น\nหมดจด\nหมอขวัญ\nหมอความ\nหมอแคน\nหมองู\nหมอดู\nหมอตำแย\nหมอทำขวัญ\nหมอนวด\nหมอผี\nหมอยา\nหมอลำ\nหมอเสน่ห์\nหม้อแกง\nหม้อตาล\nหม้อน้ำ\nหม้อแปลง\nหมองใจ\nหมองมัว\nหมองหม่น\nหมองหมาง\nหมอนขวาน\nหมอนข้าง\nหมอนทอง\nหม่อมเจ้า\nหม่อมฉัน\nหม่อมราชวงศ์\nหม่อมหลวง\nหม่อมห้าม\nหมั่นไส้\nหมาป่า\nหมาหมู่\nหมากฝรั่ง\nหมากสง\nหมากหอม\nหมากเก็บ\nหมากรุก\nหมากเม่า\nหมางใจ\nหมางเมิน\nหมาไม้\nหมายเกณฑ์\nหมายขัง\nหมายค้น\nหมายความ\nหมายจับ\nหมายใจ\nหมายตา\nหมายปล่อย\nหมายมั่น\nหมายเรียก\nหมายเลข\nหมายเหตุ\nหมิ่นเหม่\nหมึกจีน\nหมุนเวียน\nหมูแดง\nหมูป่า\nหมูแผ่น\nหมูยอ\nหมูหย็อง\nหมูหัน\nหมูแฮม\nหมู่บ้าน\nหยดย้อย\nหยอกเย้า\nหยักรั้ง\nหยักศก\nหยั่งทราบ\nหยั่งรู้\nหยั่งเสียง\nหยาบคาย\nหยาบช้า\nหยาบโลน\nหยาบหยาม\nหยิบมือ\nหยิบยก\nหยิบยืม\nหยิบหย่ง\nหยิบโหย่ง\nหริรักษ์\nหริวงศ์\nหลงผิด\nหลบฉาก\nหลบมุม\nหลวงจีน\nหลวงพ่อ\nหลวมตัว\nหล่อลื่น\nหล่อเลี้ยง\nหล่อหลอม\nหลอกลวง\nหลอกล่อ\nหลอกล้อ\nหลอดลม\nหลอดเลือด\nหลอดอาหาร\nหลอมตัว\nหลอมเหลว\nหลักการ\nหลักเกณฑ์\nหลักชัย\nหลักฐาน\nหลักทรัพย์\nหลักเมือง\nหลักลอย\nหลักสูตร\nหลักแหล่ง\nหลักแหลม\nหลังคา\nหลังเต่า\nหลั่งไหล\nหลับนก\nหลับใน\nหลากใจ\nหลากหลาย\nหลาบจำ\nหลายหลาก\nหลายแหล่\nหลุดพ้น\nหลุดลอย\nหลุดลุ่ย\nหลุมโจน\nหลุมพราง\nหวงก้าง\nหวงห้าม\nหวงแหน\nห่วงใย\nห้วงน้ำ\nหวังใจ\nหวังดี\nหวั่นกลัว\nหวั่นเกรง\nหวั่นใจ\nหวั่นวิตก\nหวั่นหวาด\nหวั่นไหว\nหวาดกลัว\nหวาดเกรง\nหวาดผวา\nหวาดเสียว\nหวาดหวั่น\nหวาดไหว\nหวานเย็น\nหว่านล้อม\nหอคอย\nหอคำ\nหอฉัน\nหอไตร\nหอประชุม\nหอพัก\nห่อหมก\nห่อเหี่ยว\nหอกซัด\nห้องเครื่อง\nห้องชุด\nห้องแถว\nห้องโถง\nห้องน้ำ\nห้องสมุด\nหอสมุด\nหอมหวน\nห้อมล้อม\nห้อยโหน\nหักล้าง\nหักหาญ\nหักห้าม\nหักเห\nหักโหม\nหักมุก\nหันเห\nหับเผย\nหัวขโมย\nหัวข้อ\nหัวขั้ว\nหัวเข่า\nหัวโขน\nหัวคะแนน\nหัวค่ำ\nหัวคิด\nหัวจุก\nหัวโจก\nหัวใจ\nหัวเทียน\nหัวนม\nหัวนอน\nหัวป่า\nหัวมุม\nหัวเรื่อง\nหัวแร้ง\nหัวใส\nหัวหน้า\nหัวหน่าว\nหัวหอก\nหัวเห็ด\nหัวไหล่\nหัวอก\nหัสดนตรี\nหัสนาฏกรรม\nหัสนิยาย\nหัสดีลิงค์\nหางเครื่อง\nหางแถว\nหางเลข\nหางว่าว\nหางเสียง\nหางเสือ\nห่างเหิน\nหาบเร่\nห้ามปราม\nห้ามล้อ\nหายตัว\nหาวนอน\nห้าวหาญ\nห้ำหั่น\nหินงอก\nหินทราย\nหินปูน\nหินย้อย\nหินอ่อน\nหินชาติ\nหินยาน\nหีบเพลง\nหีบห่อ\nหุ่นกระบอก\nหุ่นยนต์\nหุ้นลม\nหุ้นส่วน\nหุบเขา\nหุบผา\nหุบเหว\nหูกระต่าย\nหูช้าง\nหูรูด\nหูกวาง\nเหงาหงอย\nเหงื่อกาฬ\nเหตุการณ์\nเหตุผล\nเห็นแก่\nเห็นใจ\nเหน็บแนม\nเหน็บชา\nเหนียวแน่น\nเหนี่ยวนำ\nเหนี่ยวรั้ง\nเหนื่อยหน่าย\nเหมาะเจาะ\nเหมาะสม\nเหมาะเหม็ง\nเหยเก\nเหยียดหยาม\nเหล็กกล้า\nเหล็กจาร\nเหล็กใน\nเหล็กส่ง\nเหล็กเส้น\nเหล็กหล่อ\nเหล็กไหล\nเหลวแหลก\nเหลวไหล\nเหลอหลา\nเหล่ากอ\nเหลียวแล\nเหลือเกิน\nเหลือขอ\nเหลือใจ\nเหลือเชื่อ\nเหลือเฟือ\nเหลือร้าย\nเหลือล้น\nเหลือหลาย\nเหลือแหล่\nเหลือแสน\nเหลือหลอ\nเหลื่อมล้ำ\nเห่อเหิม\nเหินห่าง\nเหิมเกริม\nเหิมหาญ\nเหี้ยมเกรียม\nเหี้ยมหาญ\nเหี้ยมโหด\nเหี่ยวแห้ง\nเหือดหาย\nเหือดแห้ง\nแห่แหน\nแหนงหน่าย\nแหลกลาญ\nแหลกเหลว\nแหวกแนว\nแหวกว่าย\nโหงพราย\nโหดร้าย\nโหดเหี้ยม\nโหยหวน\nโหวงเหวง\nให้การ\nให้ท่า\nให้ท้าย\nให้ร้าย\nให้หลัง\nไหมพรม\nไหวพริบ\nอกไก่\nอกร่อง\nองค์กร\nองค์การ\nอดกลั้น\nอดทน\nอดสู\nอดอยาก\nอดออม\nอดีตกาล\nอดีตชาติ\nอดีตภพ\nอติชาตบุตร\nอธิการบดี\nอนาคตกาล\nอนิจกรรม\nอนุชาตบุตร\nอเนกประสงค์\nอบรม\nอบอวล\nอบอ้าว\nอบอุ่น\nอบายภูมิ\nอบายมุข\nอภัพบุคคล\nอภัยทาน\nอภัยโทษ\nอภิชาตบุตร\nอมยิ้ม\nอมรรัตน์\nอมฤตบท\nอมฤตรส\nอย่างไร\nอรรถกร\nอรรถกวี\nอรรถคดี\nอรรถประโยชน์\nอรรถรส\nอรรธนิศา\nอรรธภาค\nอรรธสระ\nอรสุมพล\nอรูปฌาน\nอรูปพรหม\nอรูปภพ\nอรูปภูมิ\nอวชาตบุตร\nอวดดี\nอวดอ้าง\nอ้วนท้วน\nอ้วนพี\nอวบอั๋น\nอวยชัย\nอวยพร\nอสุภกรรมฐาน\nอสุภสัญญา\nอโหสิกรรม\nออเจ้า\nออกแขก\nออกตัว\nออกโรง\nออกฤทธิ์\nออกลาย\nออกหาก\nออดอ้อน\nออดแอด\nอ่อนข้อ\nอ่อนใจ\nอ่อนช้อย\nอ่อนน้อม\nอ่อนเปลี้ย\nอ่อนเพลีย\nอ่อนโยน\nอ่อนหวาน\nอ่อนหัด\nอ่อนไหว\nอ่อนแอ\nอ้อนวอน\nอ้อนออด\nอ้อมค้อม\nอักษรศาสตร์\nอักษรสาส์น\nอัคคีภัย\nอัญชนะศักราช\nอัดฉีด\nอัดอั้น\nอัตราส่วน\nอันโตชน\nอันโตนาที\nอับจน\nอับเฉา\nอับอาย\nอัสสุชล\nอัสสุธารา\nอากัปกิริยา\nอาการนาม\nอากาศธาตุ\nอากาศยาน\nอาคารชุด\nอ่างเก็บน้ำ\nอ้างอิง\nอาจหาญ\nอาจอง\nอาชญากร\nอาชญากรรม\nอาชญาบัตร\nอาชญาสิทธิ์\nอาญาสิทธิ์\nอาณาเขต\nอาณาจักร\nอาณานิคม\nอาณาประโยชน์\nอาโปกสิณ\nอาโปธาตุ\nอาภากร\nอายุขัย\nอายุวัฒนะ\nอาโลกกสิณ\nอาหารว่าง\nอำพราง\nอิดโรย\nอิดออด\nอิดเอื้อน\nอิตถีลิงค์\nอิทธิปาฏิหาริย์\nอิทธิพล\nอิทธิฤทธิ์\nอินังขังขอบ\nอิ่มตัว\nอิ่มหนำ\nอิ่มเอม\nอิ่มเอิบ\nอีฉัน\nอีตัว\nอึงคะนึง\nอึงมี่\nอึงอล\nอึ่งยาง\nอึ่งอ่าง\nอึดใจ\nอึดอัด\nอืดอาด\nอื้อฉาว\nอื้อซ่า\nอื้ออึง\nอุกฉกรรจ์\nอุกอาจ\nอุดอู้\nอุ่นเครื่อง\nอุ่นใจ\nอุบอิบ\nอุบัติภัย\nอุบัติเหตุ\nอุโบสถกรรม\nอุโบสถหัตถี\nอุปมาโวหาร\nอุ้มชู\nอุ้มสม\nอุ้ยอ้าย\nอู้อี้\nเอกจิต\nเอกฉันท์\nเอกชน\nเอกเทศ\nเอกนัย\nเอกบุคคล\nเอกบุรุษ\nเอกพจน์\nเอกภพ\nเอกภาพ\nเอกมัย\nเอกราช\nเอกรูป\nเอกลักษณ์\nเอกศก\nเอกสาร\nเอกสิทธิ์\nเอกอุ\nเอ็ดอึง\nเอนเอียง\nเอมอร\nเอออวย\nเออออ\nเอาการ\nเอางาน\nเอาจริง\nเอาใจ\nเอาเปรียบ\nเอาเยี่ยง\nเอิบอาบ\nเอียงอาย\nเอียงเอน\nเอื้อเฟื้อ\nโอ่โถง\nโอ้โถง\nโอ่อวด\nโอ้อวด\nโอ่อ่า\nโอ้โลม\nโอดครวญ\nโอดโอย\nโอนอ่อน\nโอนเอน\nโอบอ้อม\nโอบอุ้ม\nโอสถกรรม\nไอเสีย\nไอกรน\nฮวบฮาบ\nฮาป่า\nฮึกหาญ\nฮึกห้าว\nฮึกเหิม\nฮึกโหม\nฮึกฮัก\nเฮงซวย\nโฮกฮือ\nโฮกฮาก\n\nก็\nกก\nก๊ก\nกกุธภัณฑ์\nกง\nก่ง\nก้ง\nก๊ง\nก๋ง\nกงกอน\nกงไฉ่\nกงเต๊ก\nกงสี\nกงสุล\nกช\nกฎ\nกฏุก\nกฐิน\nกณิกนันต์\nกณิการ์\nกด\nกตเวทิตา\nกตเวที\nกตัญชลี\nกตัญญุตา\nกตัญญู\nกตาธิการ\nกตาภินิหาร\nกติกา\nกถา\nกถิกาจารย์\nกทลี\nกน\nก่น\nก้น\nกนก\nกนิษฐ์\nกนิษฐา\nกบ\nกบฏ\nกบดาน\nกบทู\nกบาล\nกบินทร์\nกบิล\nกบี่\nกบูร\nกเบนทร์\nกม\nก้ม\nกมณฑลาภิเษก\nกมณฑโลทก\nกมล\nกมลา\nกมลาศ\nกมลาสน์\nกมเลศ\nกมัณฑลุ\nกมุท\nกร\nกรกฎ\nกรกฎาคม\nกรกฏ\nกรง\nกรชกาย\nกรณฑ์\nกรณิการ์\nกรณี\nกรณีย์\nกรณียกิจ\nกรณียะ\nกรด\nกรน\nกรบ\nกรบูร\nกรพินธุ์\nกรม\nกรรกฎ\nกรรกศ\nกรรเกด\nกรรไกร\nกรรเจียก\nกรรชิง\nกรรเชียง\nกรรโชก\nกรรฐ์\nกรรฐา\nกรรณ\nกรรณา\nกรรณิกา\nกรรณิการ์\nกรรดิ\nกรรดิก\nกรรดึก\nกรรตุ\nกรรไตร\nกรรทบ\nกรรแทก\nกรรบิด\nกรรบูร\nกรรภิรมย์\nกรรม\nกรรม์\nกรรม์ภิรมย์\nกรรมชวาต\nกรรมัชวาต\nกรรมาชีพ\nกรรมาธิการ\nกรรมาร\nกรรษก\nกรรสะ\nกรรแสง\nกรวด\nกรวบ\nกรวม\nกร้วม\nกรวย\nกรวิก\nกรสาปน์\nกรสุทธิ์\nกรอ\nกร้อ\nกรอก\nกร็อกกร๋อย\nกรอกแกรก\nกรอง\nกรองกรอย\nกรอด\nกร่อน\nกรอบ\nกรอม\nกร่อย\nกระ\nกระกร\nกระกรุ่น\nกระกลับกลอก\nกระกี้\nกระเกรอก\nกระเกริก\nกระเกริ่น\nกระคน\nกระคาย\nกระงกกระเงิ่น\nกระง่องกระแง่ง\nกระง่อนกระแง่น\nกระเง้ากระงอด\nกระโงก\nกระจก\nกระจง\nกระจร\nกระจอก\nกระจองหง่อง\nกระจ๋องหง่อง\nกระจองอแง\nกระจ้อน\nกระจอนหู\nกระจ้อย\nกระจ๋อหวอ\nกระจะ\nกระจัก\nกระจัง\nกระจัด\nกระจับ\nกระจ่า\nกระจ่าง\nกระจาด\nกระจาน\nกระจาบ\nกระจาม\nกระจาย\nกระจาว\nกระจิก\nกระจิ๋ง\nกระจิด\nกระจิบ\nกระจิ๋ม\nกระจิริด\nกระจิ๋ว\nกระจี้\nกระจี๋\nกระจุก\nกระจุ๋งกระจิ๋ง\nกระจุบ\nกระจุ๊บ\nกระจุ๋มกระจิ๋ม\nกระจุย\nกระจู้\nกระจู๋กระจี๋\nกระจูด\nกระเจอะกระเจิง\nกระเจา\nกระเจ่า\nกระเจ้า\nกระเจาะ\nกระเจิง\nกระเจิดกระเจิง\nกระเจี้ยง\nกระเจี๊ยบ\nกระเจียว\nกระเจี๊ยว\nกระแจะ\nกระโจน\nกระโจม\nกระฉอก\nกระฉ่อน\nกระฉับกระเฉง\nกระฉิ่ง\nกระฉีก\nกระฉูด\nกระเฉก\nกระเฉด\nกระแฉก\nกระโฉกกระเฉก\nกระโฉม\nกระชดกระช้อย\nกระชอน\nกระชอมดอก\nกระช้อย\nกระชัง\nกระชั้น\nกระชับ\nกระชาก\nกระชาย\nกระชิง\nกระชิด\nกระชุ\nกระชุก\nกระชุ่มกระชวย\nกระเชอ\nกระเชา\nกระเช้า\nกระเชียง\nกระแชง\nกระแชะ\nกระโชก\nกระซ่องกระแซ่ง\nกระซับ\nกระซาบ\nกระซิก\nกระซิบ\nกระซี้\nกระซุง\nกระซุบกระซิบ\nกระซุ้ม\nกระซู่\nกระเซ็น\nกระเซอ\nกระเซอะกระเซอ\nกระเซอะกระเซิง\nกระเซ้า\nกระเซิง\nกระแซ\nกระแซะ\nกระโซกระเซ\nกระฎี\nกระฎุมพี\nกระดก\nกระด้ง\nกระดนโด่\nกระดวง\nกระดวน\nกระด้วมกระเดี้ยม\nกระดอ\nกระดอง\nกระดองหาย\nกระดอน\nกระดอม\nกระดักกระเดี้ย\nกระดังงัว\nกระดังงา\nกระดาก\nกระด้าง\nกระดางลาง\nกระดาด\nกระดาดขาว\nกระดาน\nกระดานพน\nกระดาษ\nกระดำกระด่าง\nกระดิก\nกระดิ่ง\nกระดิ้ง\nกระดิบ\nกระดี่\nกระดี้กระเดียม\nกระดึง\nกระดืบ\nกระดุ\nกระดุกกระดิก\nกระดุ้งกระดิ้ง\nกระดุบ\nกระดุบกระดิบ\nกระดุม\nกระดูก\nกระเดก\nกระเด้ง\nกระเด็น\nกระเด้า\nกระเดาะ\nกระเดิด\nกระเดี้ย\nกระเดียด\nกระเดือก\nกระเดื่อง\nกระแด็ก\nกระแด้ง\nกระแด้แร่\nกระแด่ว\nกระแดะ\nกระโดก\nกระโดง\nกระโดด\nกระโดน\nกระได\nกระตรับ\nกระตราก\nกระตรุด\nกระตรุม\nกระต้วมกระเตี้ยม\nกระต้อ\nกระต่องกระแต่ง\nกระต๊อบ\nกระต้อยตีวิด\nกระตัก\nกระตั้ว\nกระต่าย\nกระติก\nกระติ๊ด\nกระติบ\nกระตือรือร้น\nกระตุก\nกระตุ้งกระติ้ง\nกระตุ่น\nกระตุ้น\nกระตูบ\nกระเตง\nกระเต็น\nกระเตอะ\nกระเตาะ\nกระเตาะกระแตะ\nกระเตื้อง\nกระแต\nกระแตแต้แว้ด\nกระโตกกระตาก\nกระโตน\nกระถด\nกระถอบ\nกระถั่ว\nกระถาง\nกระถิก\nกระถิน\nกระเถิบ\nกระโถน\nกระทก\nกระทง\nกระทบ\nกระทรวง\nกระทอก\nกระท้อน\nกระท่อนกระแท่น\nกระท่อม\nกระท้อมกระแท้ม\nกระทะ\nกระทั่ง\nกระทั้น\nกระทา\nกระทาย\nกระทาสี\nกระทาหอง\nกระทำ\nกระทิกกระทวย\nกระทิง\nกระทึง\nกระทืบ\nกระทุ\nกระทุง\nกระทุ้ง\nกระทุ่ม\nกระทู้\nกระเท่\nกระเทียบ\nกระเทียม\nกระเทือน\nกระเทื้อม\nกระแทก\nกระแท่น\nกระแทะ\nกระไทชาย\nกระน่อง\nกระนั้น\nกระนี้\nกระแนะกระแหน\nกระโน้น\nกระไน\nกระบก\nกระบม\nกระบวน\nกระบวย\nกระบวร\nกระบอก\nกระบอง\nกระบะ\nกระบัด\nกระบั้วกระเบี้ย\nกระบ่า\nกระบ้า\nกระบาก\nกระบาย\nกระบาล\nกระบิ\nกระบิ้ง\nกระบิด\nกระบิล\nกระบี่\nกระบือ\nกระบุง\nกระบุ่มกระบ่าม\nกระบู้กระบี้\nกระบูน\nกระบูร\nกระเบง\nกระเบญ\nกระเบ็ดกระบวน\nกระเบน\nกระเบา\nกระเบิก\nกระเบียด\nกระเบียน\nกระเบื้อง\nกระแบก\nกระแบะ\nกระโบม\nกระปมกระปำ\nกระปมกระเปา\nกระปรอก\nกระปรอกว่าว\nกระปรี้กระเปร่า\nกระปอก\nกระป้อกระแป้\nกระป่อง\nกระป๋อง\nกระปอดกระแปด\nกระป๋อหลอ\nกระปั้วกระเปี้ย\nกระป่ำ\nกระปุก\nกระปุ๊กลุก\nกระปุ่ม\nกระปุ่มกระป่ำ\nกระปุ่มกระปิ่ม\nกระเป๋า\nกระเปาะ\nกระโปก\nกระโปรง\nกระผม\nกระผลีกระผลาม\nกระผาน\nกระผีก\nกระพรวน\nกระพริ้ม\nกระพอก\nกระพอง\nกระพ้อม\nกระพัก\nกระพัง\nกระพังเหิร\nกระพังโหม\nกระพัด\nกระพัตร\nกระพัน\nกระพั่น\nกระพา\nกระพาก\nกระพี้\nกระพือ\nกระพุ้ง\nกระพุ่ม\nกระเพาะ\nกระเพิง\nกระเพื่อม\nกระแพ้ง\nกระฟัดกระเฟียด\nกระฟูมกระฟาย\nกระมล\nกระมอบ\nกระมอมกระแมม\nกระมัง\nกระมัน\nกระมิดกระเมี้ยน\nกระมุท\nกระเมาะ\nกระย่อง\nกระย่องกระแย่ง\nกระย่อน\nกระย่อม\nกระยา\nกระยาง\nกระยาจก\nกระยาหงัน\nกระยิก\nกระยิ้มกระย่อง\nกระยึกกระยือ\nกระยืดกระยาด\nกระเย้อกระแหย่ง\nกระรอก\nกระเรียน\nกระโรกน้ำข้าว\nกระโรกใหญ่\nกระไร\nกระลด\nกระลบ\nกระลอก\nกระลอม\nกระละหล่ำ\nกระลัด\nกระลับ\nกระลัมพร\nกระลา\nกระลำ\nกระลำพัก\nกระลำพุก\nกระลิง\nกระลี\nกระลุมพาง\nกระลุมพุก\nกระลุมพู\nกระลูน\nกระลู่น์\nกระเล็น\nกระเลียด\nกระเลือก\nกระโลง\nกระวน\nกระวัด\nกระวาด\nกระวาน\nกระวาย\nกระวิน\nกระวี\nกระวีกระวาด\nกระวูดกระวาด\nกระเวน\nกระเวยกระวาย\nกระแวน\nกระโวยกระวาย\nกระษัย\nกระษาปณ์\nกระสง\nกระสบ\nกระสม\nกระสรวล\nกระสร้อย\nกระสวน\nกระสวย\nกระสอบ\nกระสะ\nกระสัง\nกระสัน\nกระสับกระส่าย\nกระสา\nกระสานติ์\nกระสาบ\nกระสาย\nกระสือ\nกระสุงกระสิง\nกระสุน\nกระสูทธิ์\nกระสูบ\nกระเสด\nกระเส็นกระสาย\nกระเส่า\nกระเสาะกระแสะ\nกระเสียน\nกระเสียร\nกระเสือกกระสน\nกระแส\nกระแสง\nกระแสะ\nกระโสง\nกระไส\nกระหนก\nกระหนาก\nกระหนาบ\nกระหน่ำ\nกระหมวด\nกระหมอบ\nกระหม่อม\nกระหมั่ง\nกระหมิบ\nกระหมุดกระหมิด\nกระหมุบ\nกระหย่ง\nกระหย่อม\nกระหยัง\nกระหยับ\nกระหยิ่ม\nกระหรอด\nกระหริ่ง\nกระหวน\nกระหวัด\nกระหอง\nกระหัง\nกระหัด\nกระหาง\nกระหาย\nกระหึม\nกระหึ่ม\nกระหืดกระหอบ\nกระเห็น\nกระเหนียด\nกระเหม็ดกระเหมียด\nกระเหม็ดกระแหม่\nกระเหม่น\nกระเหม่า\nกระเหว่า\nกระเห่อ\nกระเหิม\nกระเหี้ยนกระหือรือ\nกระแห\nกระแหทอง\nกระแหนบ\nกระแหนะ\nกระแหมบ\nกระแหม่ว\nกระแหย่ง\nกระแหร่ม\nกระแหล่ง\nกระโห้\nกระโหนด\nกระโหม\nกระโหย\nกระโหย่ง\nกระอวล\nกระอ้อกระแอ้\nกระออดกระแอด\nกระออบ\nกระออม\nกระอ้อมกระแอ้ม\nกระอัก\nกระอักกระอ่วน\nกระอั้วแทงควาย\nกระอ้า\nกระอาน\nกระอิด\nกระอิดกระเอื้อน\nกระอึก\nกระอืด\nกระอุ\nกระอุก\nกระเอา\nกระเอิก\nกระเอิบ\nกระแอก\nกระแอบ\nกระแอม\nกระไอ\nกรัก\nกรักขี\nกรัง\nกรัชกาย\nกรัณฑ์\nกรัณย์\nกรัน\nกรับ\nกรัม\nกราก\nกราง\nกร่าง\nกราด\nกราดวง\nกราน\nกร้าน\nกราบ\nกราฟ\nกราม\nกราย\nกร่าย\nกราว\nกร้าว\nกรำ\nกร่ำ\nกริก\nกริ๊ก\nกริกกริว\nกริกกรี\nกริ่ง\nกริ๊ง\nกริงกริว\nกริ้งกริ้ว\nกริช\nกริณี\nกริน\nกรินทร์\nกรินี\nกริบ\nกริม\nกริ่ม\nกริยา\nกริยานุเคราะห์\nกริว\nกริ้ว\nกรี\nกรีฑา\nกรีด\nกรี๊ด\nกรีธา\nกรีษ\nกรีส\nกรึ๊บ\nกรุ\nกรุง\nกรุ้งกริ่ง\nกรุณ\nกรุณา\nกรุณาธิคุณ\nกรุ่น\nกรุบ\nกรุ่ม\nกรุ้มกริ่ม\nกรุย\nกรุยเกรียว\nกรู\nกรูด\nกรูม\nกเรณุ\nกเรนทร\nกเรนทร์\nกฤช\nกฤดาภินิหาร\nกฤตติกา\nกฤษฎา\nกฤษฎาธาร\nกฤษฎาภินิหาร\nกฤษฎีกา\nกฤษณา\nกล\nกลด\nกล่น\nกลบ\nกลม\nกลละ\nกลวง\nกล้วย\nกลศ\nกล้อ\nกลอก\nกลอง\nกล่อง\nกล้อง\nกล้องแกล้ง\nกลอน\nกล่อน\nกล้อน\nกล่อม\nกล้อมแกล้ม\nกลอย\nกลัก\nกลัด\nกลั่น\nกลั้น\nกลันทก์\nกลันทะ\nกลับ\nกลัมพร\nกลัมพัก\nกลัว\nกลั้ว\nกลา\nกล้า\nกลาก\nกลากลาด\nกลาง\nกลาด\nกลาบาต\nกลาป\nกล้าม\nกลาย\nกล้าย\nกลายกลอก\nกล่าว\nกลาโหม\nกล่ำ\nกล้ำ\nกลิ้ง\nกลิงค์\nกลิ่น\nกลี\nกลีบ\nกลึง\nกลึงค์\nกลืน\nกลุ่ม\nกลุ้ม\nกลูโคส\nกเลวระ\nกวด\nกวน\nกวม\nกวย\nกวยจั๊บ\nกวยจี๊\nก๋วยเตี๋ยว\nกวัก\nกวัด\nกวา\nกว่า\nกวาง\nกว่าง\nกว้าง\nกว่างโซ้ง\nกวางตุ้ง\nกวาด\nกว้าน\nกว๊าน\nกว้าว\nกวาวเครือ\nกวี\nกษณะ\nกษมา\nกษัตร\nกษัตรา\nกษัตริย์\nกษัตรี\nกษัตรีย์\nกษัย\nกษาปณ์\nกษิดิ\nกษีร\nกษีรธารา\nกษีระ\nกสานติ์\nกสิกร\nกสิกรรม\nกสิณ\nกหังปายา\nกหาปณะ\nกเฬวราก\nกอ\nก่อ\nก้อ\nก๊อ\nกอก\nก๊อก\nกอแก\nกอง\nก่อง\nก้อง\nกองกอย\nก๊อซ\nกอด\nก่อน\nก้อน\nกอบ\nกอบนาง\nก๊อบปี้\nกอปร\nก้อม\nกอมก้อ\nก่อมก้อ\nกอย\nก้อย\nก๋อย\nกอริลลา\nกอล์ฟ\nกอและ\nกอเอี๊ยะ\nกะ\nกะกัง\nกะง้องกะแง้ง\nกะจัง\nกะแจะ\nกะชะ\nกะชัง\nกะชามาศ\nกะชิง\nกะชึ่กกะชั่ก\nกะแช่\nกะซวก\nกะซ้าหอย\nกะซี่\nกะโซ่\nกะโซ้\nกะดก\nกะดง\nกะดวน\nกะดอก\nกะดะ\nกะดังบาย\nกะดัด\nกะด้าง\nกะดำกะด่าง\nกะดี\nกะดี่\nกะดุ้ง\nกะเด้\nกะเดก\nกะเดี๋ยว\nกะตรุด\nกะตอก\nกะต่อย\nกะตัก\nกะตั้ก\nกะตัง\nกะตังกะติ้ว\nกะต๊าก\nกะต้ำ\nกะติ๊กริก\nกะติงกะแตง\nกะตีบ\nกะตึงกะแตง\nกะตุ๊ก\nกะตุด\nกะตูก\nกะเตง\nกะโต๊ก\nกะโตงกะเตง\nกะโต้งโห่ง\nกะถัว\nกะทกรก\nกะทอ\nกะทัง\nกะทังหัน\nกะทัดรัด\nกะทันหัน\nกะทับ\nกะทิ\nกะทือ\nกะทุน\nกะเทย\nกะเทาะ\nกะแท้\nกะแท่ง\nกะแทน\nกะนวล\nกะนัด\nกะบ่อนกะแบ่น\nกะบัง\nกะบั้ง\nกะบิ้ง\nกะบิล\nกะบึงกะบอน\nกะบุด\nกะเบ้อ\nกะเบียน\nกะเบือ\nกะปริดกะปรอย\nกะปริบ\nกะปริบกะปรอย\nกะปลกกะเปลี้ย\nกะปวกกะเปียก\nกะปอม\nกะปอมขาง\nกะปะ\nกะป้ำกะเป๋อ\nกะปิ\nกะปู\nกะปูด\nกะปูดหลูด\nกะเปะ\nกะเปิ๊บกะป๊าบ\nกะเปียด\nกะแป้น\nกะแปะ\nกะโปรง\nกะโปโล\nกะผลุบกะโผล่\nกะเผ่น\nกะเผลก\nกะโผลกกะเผลก\nกะพง\nกะพรวดกะพราด\nกะพร่องกะแพร่ง\nกะพริบ\nกะพรุน\nกะพรูดกะพราด\nกะพล้อ\nกะพ้อ\nกะเพรา\nกะเพียด\nกะเม็ง\nกะร่องกะแร่ง\nกะระตะ\nกะระหนะ\nกะรัง\nกะรัต\nกะราง\nกะริง\nกะรุงกะรัง\nกะรุ่งกะริ่ง\nกะรุน\nกะเร\nกะเรกะร่อน\nกะเร่กะร่อน\nกะเร่อ\nกะเรี่ยกะราด\nกะโรกะเร\nกะลวย\nกะลอ\nกะล่อกะแล่\nกะลอจี๊\nกะล่อน\nกะล่อมกะแล่ม\nกะล่อยกะหลิบ\nกะละปังหา\nกะละมัง\nกะละแม\nกะละออม\nกะลังตังไก่\nกะลัน\nกะลันทา\nกะลา\nกะลาง\nกะลาสี\nกะลำพอ\nกะลิง\nกะลิงปลิง\nกะลิ้มกะเหลี่ย\nกะลิอ่อง\nกะลุมพี\nกะเล็ง\nกะเล่อกะล่า\nกะเลิด\nกะเลียว\nกะแล\nกะโล่\nกะโลง\nกะวอกกะแวก\nกะวะ\nกะส้มชื่น\nกะสัง\nกะส้าหอย\nกะหนอกะแหน\nกะหน็องกะแหน็ง\nกะหนะ\nกะหนุงกะหนิง\nกะหร่อง\nกะหรอด\nกะหร็อมกะแหร็ม\nกะหราน\nกะหรี่\nกะหรี่ปั๊บ\nกะหลาป๋า\nกะหล่ำ\nกะหลี่\nกะหลีกะหลอ\nกะหลุกกะหลิก\nกะหำ\nกะหำแพะ\nกะหือ\nกะหูด\nกะเหรี่ยง\nกะเหลาะเปาะ\nกะแหยก\nกะแหะ\nกะโหลก\nกะโหล้ง\nกะไหล่\nกะอวม\nกะออม\nกะอาน\nกะอาม\nกะอูบ\nกัก\nกั๊ก\nกักกรา\nกักการุ\nกักขฬะ\nกัง\nกั้ง\nกังก้า\nกังเกียง\nกังขา\nกังฉิน\nกังฟู\nกังวล\nกังวาน\nกังสดาล\nกังไส\nกังหัน\nกัจฉปะ\nกัจฉะ\nกัจฉา\nกัญ\nกัญจุก\nกัญจุการา\nกัญชา\nกัญญา\nกัฐ\nกัณฏกะ\nกัณฐกะ\nกัณฐชะ\nกัณฐัศ\nกัณฐัศว์\nกัณฐา\nกัณฐี\nกัณฑ์\nกัณณ์\nกัณหา\nกัด\nกัตติกมาส\nกัตติกา\nกัตติเกยา\nกัตรา\nกัทลี\nกัน\nกั่น\nกั้น\nกันเกรา\nกันไกร\nกันชิง\nกันเชอ\nกันดาร\nกันดาล\nกันได\nกันต์\nกันตัง\nกันไตร\nกันทร\nกันทรากร\nกันภิรมย์\nกันเมียง\nกันย์\nกันยา\nกันยายน\nกันลง\nกันลอง\nกันแสง\nกั้นหยั่น\nกับ\nกับแก้\nกัป\nกัปตัน\nกัปปาสิก\nกัปปิยภัณฑ์\nกัปปิยะ\nกัมปนาท\nกัมประโด\nกัมปี\nกัมพล\nกัมพุช\nกัมพู\nกัมพูชา\nกัมโพช\nกัมมัชวาต\nกัมมัฏฐาน\nกัมมันตภาพรังสี\nกัมมันตรังสี\nกัมมาร\nกัมลาศ\nกัยวิกัย\nกัลชาญ\nกัลบก\nกัลป์\nกัลปนา\nกัลปพฤกษ์\nกัลปังหา\nกัลปาวสาน\nกัลปิต\nกัลเม็ด\nกัลยา\nกัลยาณมิตร\nกัลยาณี\nกัลออม\nกัศยป\nกัษณ\nกา\nก๋า\nกาก\nกากบาท\nกากะทิง\nกากะเยีย\nกากี\nกาง\nก้าง\nกางเกง\nกางเขน\nก๊าซ\nกาซะลอง\nกาญจนา\nกาฐ\nกาด\nก๊าด\nกาน\nก่าน\nก้าน\nก๊าน\nกานดา\nกานต์\nกานน\nก้านพร้าว\nกานพลู\nกาน้า\nกาบ\nก้าบ\nกาบู\nกาพย์\nกาเฟอีน\nกาแฟ\nกาม\nก้าม\nกามารมณ์\nกามินี\nกาเมสุมิจฉาจาร\nกาย\nก่าย\nกาเยน\nการ\nการณ์\nการ์ด\nการ์ตูน\nการบูร\nการย์\nการวิก\nการเวก\nการะเกด\nการะบุหนิง\nการัณย์\nการันต์\nการางหัวขวาน\nการิตการก\nการิตวาจก\nการุญ\nการุณย์\nกาเรการ่อน\nกาล\nกาลกรรณี\nกาลกิณี\nกาลจักร\nกาลัญญุตา\nกาลัญญู\nกาลัด\nกาลานุกาล\nกาลิก\nกาลี\nกาแล\nกาแล็กซี\nกาแล็กโทส\nกาว\nก้าว\nกาววาว\nกาวาง\nกาแวน\nกาศิก\nกาษฐะ\nกาษา\nกาสร\nกาสะ\nกาสา\nกาสาร\nกาสาวะ\nกาสิโน\nกาหล\nกาหลง\nกาหลา\nกาเหว่า\nกาไหล่\nกาฬ\nกาฬาวก\nกาฮัง\nกำ\nก่ำ\nกำกวม\nกำกัด\nกำกับ\nก้ำกึ่ง\nกำกูน\nก้ำเกิน\nกำเกียง\nกำคูน\nกำจร\nกำจัด\nกำจาย\nกำชับ\nกำชำ\nกำซาบ\nกำซำ\nกำด้น\nกำดัด\nกำดาล\nกำเดา\nกำธร\nกำนล\nกำนัน\nกำนัล\nกำเนิด\nกำบัง\nก่ำบึ้ง\nกำเบ้อ\nกำปอ\nกำปั่น\nกำผลา\nกำพง\nกำพด\nกำพต\nกำพร้า\nกำพราก\nกำพวด\nกำพอง\nกำพืด\nกำพุด\nกำพู\nกำเพลิง\nกำแพง\nกำภู\nกำมลาศน์\nกำมเลศ\nกำมะถัน\nกำมะลอ\nกำมะหยี่\nกำมะหริด\nกำมังละการ\nกำมังวิลิต\nกำมัชพล\nกำยาน\nกำยำ\nกำรอ\nกำราบ\nกำราล\nกำเริบ\nกำไร\nกำลัง\nกำลุง\nกำเลา\nกำไล\nกำสรด\nกำสรวล\nกำหนด\nกำหนัด\nกำเหน็จ\nกำแหง\nกิก\nกิ๊ก\nกิ่ง\nกิ้งก่า\nกิ้งกือ\nกิ้งโครง\nกิจ\nกิจจะ\nกิจจา\nกิดาการ\nกิดาหยัน\nกิตติ\nกิตติมศักดิ์\nกิน\nกินนร\nกินปลี\nกินเปี้ยว\nกินริน\nกินรี\nกิ๊บ\nกิมตึ๋ง\nกิมิชาติ\nกิมิวิทยา\nกิโมโน\nกิโยตีน\nกิระ\nกิริณี\nกิรินท\nกิริเนศวร\nกิริยา\nกิเลน\nกิเลส\nกิโล\nกิโลมกะ\nกิ่ว\nกิ๋ว\nกี\nกี่\nกี้\nกี๊\nกี๋\nกีฏวิทยา\nกีด\nกีตาร์\nกีบ\nกีรติ\nกีฬา\nกึก\nกึง\nกึ่ง\nกึ๋น\nกุ\nกุก\nกุ๊ก\nกุกกุฏ\nกุกกุร\nกุกรรม\nกุ้ง\nกุงอน\nกุงาน\nกุโงก\nกุจี\nกุญแจ\nกุญชร\nกุฎ\nกุฎา\nกุฎี\nกุฎุมพี\nกุฏฐัง\nกุฏิ\nกุณฑ์\nกุณฑล\nกุณฑี\nกุณโฑ\nกุณาล\nกุณี\nกุด\nกุดัง\nกุดั่น\nกุดา\nกุทัณฑ์\nกุน\nกุ๊น\nกุนเชียง\nกุนที\nกุโนกามอ\nกุบ\nกุบกับ\nกุม\nกุ่ม\nกุมฝอย\nกุมภ์\nกุมภนิยา\nกุมภัณฑ์\nกุมภา\nกุมภิล\nกุมภีล์\nกุมเหง\nกุมาร\nกุมารา\nกุมารี\nกุมุท\nกุย\nกุ๊ย\nกุ๋ย\nกุยช่าย\nกุยเฮง\nกุรระ\nกุรุพินท์\nกุเรา\nกุล\nกุลา\nกุลาหล\nกุลี\nกุลีกุจอ\nกุเลา\nกุแล\nกุเวร\nกุศราช\nกุศล\nกุศโลบาย\nกุสุม\nกุสุมภ์\nกุสุมา\nกุสุมาลย์\nกุสุมิตลดาเวลลิตา\nกุหนี\nกุหนุง\nกุหร่า\nกุหล่า\nกุหลาบ\nกุแหละ\nกู\nกู่\nกู้\nกู๊ก\nกูฏ\nกูฏา\nกูณฑ์\nกูด\nกูบ\nกูปรี\nกูรมะ\nกูรมาวตาร\nเก\nเก้\nเก๊\nเก๋\nเกก\nเก๊ก\nเกกมะเหรก\nเก๊กฮวย\nเก้กัง\nเก็ง\nเก่ง\nเก้ง\nเก๋ง\nเกงกอย\nเก่งกาจ\nเกงเขง\nเก๋งเคง\nเก็จ\nเกจิอาจารย์\nเกชา\nเกณฑ์\nเกด\nเก็ด\nเกตุ\nเกน\nเก็บ\nเกม\nเกย\nเกยูร\nเกรง\nเกร็ง\nเกร็ด\nเกรน\nเกร่อ\nเกรอะ\nเกราะ\nเกริก\nเกริน\nเกริ่น\nเกรียก\nเกรียง\nเกรียด\nเกรียน\nเกรียบ\nเกรียม\nเกรียว\nเกรี้ยว\nเกเร\nเกล็ด\nเกลศ\nเกลอ\nเกลา\nเกล้า\nเกลาะ\nเกลี่ย\nเกลี้ย\nเกลียง\nเกลี้ยง\nเกลียด\nเกลียว\nเกลือ\nเกลื้อ\nเกลือก\nเกลื่อน\nเกลื้อน\nเกวัฏ\nเกวียน\nเกศ\nเกศว\nเกศวะ\nเกศา\nเกศินี\nเกศี\nเกษตร\nเกษม\nเกษียณ\nเกษียน\nเกษียร\nเกส\nเกสร\nเกสรี\nเกสา\nเกสี\nเก้อ\nเกอิชา\nเกะ\nเกะกะ\nเกา\nเก่า\nเก้า\nเก๋า\nเกาต์\nเกาทัณฑ์\nเกาบิล\nเกาลัด\nเกาลิน\nเกาไศย\nเกาหลี\nเกาเหลา\nเกาเหลียง\nเก้าอี้\nเกาะ\nเกิ้ง\nเกิด\nเกิน\nเกิบ\nเกีย\nเกียกกาย\nเกียง\nเกี่ยง\nเกี๋ยง\nเกียจ\nเกียด\nเกียน\nเกี้ยมไฉ่\nเกี้ยมอี๋\nเกียร์\nเกียรติ\nเกียรติ์\nเกี่ยว\nเกี้ยว\nเกี๊ยว\nเกี๊ยะ\nเกื้อ\nเกือก\nเกื้อกูล\nเกือบ\nแก\nแก่\nแก้\nแกง\nแก่ง\nแก้ง\nแก๊ง\nแกงได\nแกงแนง\nแกโดลิเนียม\nแกน\nแก่น\nแก๊ป\nแกม\nแก้ม\nแกมมา\nแกรก\nแกร่ง\nแกร็น\nแกรนิต\nแกรไฟต์\nแกร่ว\nแกระ\nแกล\nแกล้ง\nแกลน\nแกลบ\nแกล้ม\nแกลลอน\nแกลเลียม\nแกล้ว\nแกละ\nแกแล\nแกว\nแก้ว\nแกว่ง\nแก๊ส\nแกะ\nโก\nโก่\nโก้\nโก๋\nโกก\nโกกนุท\nโกกิลา\nโกโก้\nโกง\nโก่ง\nโกงกาง\nโก้งเก้ง\nโกงโก้\nโก้งโค้ง\nโกเชาว์\nโกญจนาท\nโกญจา\nโกฏิ\nโกฐ\nโกฐาส\nโกณะ\nโกดัง\nโกทัณฑ์\nโกน\nโก่น\nโก๋น\nโกมล\nโกมุท\nโกเมน\nโกเมศ\nโกย\nโกรก\nโกรกกราก\nโกรง\nโกร่ง\nโกร่งกร่าง\nโกรงเกรง\nโกร๋งเกร๋ง\nโกรญจ\nโกรต๋น\nโกรธ\nโกรธา\nโกร๋น\nโกรม\nโกรย\nโกรศ\nโกโรโกเต\nโกโรโกโรก\nโกโรโกโส\nโกลน\nโกลาหล\nโกไล\nโกวิท\nโกศ\nโกศล\nโกษม\nโกสน\nโกสัช\nโกสินทร์\nโกสีย์\nโกสุม\nโกไสย\nโกหก\nใกล้\nไก\nไก่\nไก๊\nไก๋\nไก่กอม\nไกพัล\nไกร\nไกรพ\nไกรลาส\nไกรศร\nไกรศรี\nไกรสร\nไกรสรี\nไกรสิทธิ\nไกล\nไกล่\nไกลาส\nไกว\nไกวัล\nขงจื๊อ\nขจร\nขจรจบ\nขจัด\nขจ่าง\nขจาย\nขจาว\nขจิต\nขจี\nขจุย\nขเจา\nขณะ\nขด\nขน\nข้น\nขนง\nขนด\nขนบ\nขนม\nขนอง\nขนอน\nขนอบ\nขนัด\nขนัน\nขนาก\nขนาง\nขนาด\nขนาน\nขนาบ\nขนาย\nขนำ\nขนิษฐ\nขนิษฐา\nขนุน\nขนุนนก\nขบ\nขบถ\nขบวน\nขบวร\nขม\nข่ม\nขมงโกรย\nขมวด\nขมวน\nขมอง\nขม่อม\nขมัง\nขมับ\nขมา\nขม้ำ\nขมิ้น\nขมิบ\nขมีขมัน\nขมึง\nขมึงทึง\nขมุ\nขมุกขมัว\nขมุบ\nขโมย\nขยด\nขยม\nขย่ม\nขยอก\nขยอง\nขย่อน\nขย้อน\nขยะ\nขยัก\nขยัน\nขยั้น\nขยับ\nขยาด\nขยาย\nขยำ\nขย้ำ\nขยิก\nขยิบ\nขยิ่ม\nขยี้\nขยุกขยิก\nขยุกขยุย\nขยุบ\nขยุบขยิบ\nขยุม\nขยุ้ม\nขยุย\nขรม\nขรรค์\nขรัว\nขริบ\nขรี\nขรึม\nขรุขระ\nขลบ\nขล้อ\nขลัง\nขลับ\nขลาด\nขลาย\nขลิบ\nขลุก\nขลุกขลัก\nขลุกขลิก\nขลุบ\nขลุม\nขลุ่ย\nขลู\nขลู่\nขวง\nข่วง\nขวด\nข่วน\nขวนขวาย\nขวบ\nขวย\nขวักไขว่\nขวัญ\nขวั้น\nขวับ\nขวับเขวียว\nขวา\nขวาก\nขวาง\nขว้าง\nขวาด\nขวาน\nขวายขวน\nขวาว\nขว้าว\nขวิด\nขอ\nข่อ\nข้อ\nของ\nข้อง\nขอด\nขอน\nข้อน\nขอบ\nขอม\nข่อย\nข้อย\nข่อยหยอง\nขะแจะ\nขะเน็ด\nขะมอมขะแมม\nขะมักเขม้น\nขะมุกขะมอม\nขะยิก\nขะยุก\nขะเย้อแขย่ง\nขัค\nขัง\nขังขอก\nขัช\nขัณฑสกร\nขัณฑสีมา\nขัด\nขัดมอน\nขัตติยมานะ\nขัน\nขั้น\nขันติ\nขันตี\nขันโตก\nขันที\nขันธ์\nขันธาวาร\nขับ\nขัว\nขั้ว\nขา\nข่า\nข้า\nขาก\nขาก๊วย\nขาง\nข่าง\nข้าง\nขาณุ\nขาด\nขาทนียะ\nขาน\nขาบ\nข้าพเจ้า\nขาม\nข่าม\nข้าม\nขาย\nข่าย\nขาล\nขาว\nข่าว\nข้าว\nข้าวอังกุลี\nขำ\nขิก\nขิง\nขิงแกลง\nขิงแครง\nขิด\nขิปสัทโท\nขิม\nขี่\nขี้\nขี้เข็บ\nขีณาสพ\nขีด\nขี้ตังนี\nขีปนาวุธ\nขี้ยอก\nขีระ\nขึง\nขึ้ง\nขึ้น\nขึ้นฉ่าย\nขืน\nขื่น\nขื่อ\nขุก\nขุด\nขุน\nขุ่น\nขุนเพ็ด\nขุม\nขุย\nขู่\nขูด\nเข\nเข้\nเขก\nเข็ง\nเข่ง\nเขจร\nเข็ญ\nเข็ด\nเขดา\nเขต\nเขน\nเข็น\nเข่น\nเขนง\nเขน็ด\nเขนย\nเขบ็จขบวน\nเขบ็ต\nเขม\nเข็ม\nเข้ม\nเข้มขาบ\nเขม็ง\nเขม็ดแขม่\nเขม่น\nเขม้น\nเขม้นขะมัก\nเขมร\nเขมา\nเขม่า\nเขมือบ\nเขย\nเขยก\nเขย่ง\nเขย้อแขย่ง\nเขย่า\nเขยิน\nเขยิบ\nเขยื้อน\nเขรอะ\nเขลง\nเขลอะ\nเขละ\nเขลา\nเขลาะ\nเขว\nเขษม\nเขฬะ\nเขะขะ\nเขา\nเข่า\nเข้า\nเขิง\nเขิน\nเขิบ\nเขี่ย\nเขียง\nเขียด\nเขียดตะปาด\nเขียน\nเขี่ยน\nเขียม\nเขียว\nเขี้ยว\nเขียะ\nเขือ\nเขือง\nเขื่อง\nเขื่อน\nเขือม\nแข\nแข้\nแขก\nแข็ง\nแข่ง\nแข้ง\nแขน\nแข่น\nแข้น\nแขนง\nแขม\nแขม็บ\nแขม่ว\nแขยง\nแขย่ง\nแขวก\nแขวง\nแขวน\nแขวะ\nโข\nโขก\nโขง\nโข่ง\nโขด\nโขดง\nโขน\nโขนง\nโขม\nโขมง\nโขมด\nโขยก\nโขยง\nโขย่ง\nโขยด\nโขลก\nโขลง\nโขลน\nโขษม\nไข\nไข่\nไข้\nไขว่\nไขว้\nคคนะ\nคคนัมพร\nคคนางค์\nคคนานต์\nคง\nคงคา\nคงไคย\nคช\nคชาชาติ\nคชาชีพ\nคชาธาร\nคชาภรณ์\nคณนา\nคณบดี\nคณะ\nคณาจารย์\nคณาธิการ\nคณาธิปไตย\nคณานับ\nคณิกา\nคณิต\nคเณศ\nคด\nคดี\nคติ\nคทา\nคน\nค้น\nคนทา\nคนทิสอ\nคนที\nคนโท\nคนธ์\nคันธ์\nคนธรรพ์\nคเนจร\nคบ\nคม\nคมน์\nคมนาการ\nคมนาคม\nคมิกภัต\nครก\nครบ\nครรชิต\nครรภ\nครรภ์\nครรลอง\nครรโลง\nครรไล\nครวญ\nครวี\nครหา\nครอก\nครอง\nครองแครง\nคร่อเงาะ\nคร่อเทียน\nครอบ\nคร่อม\nคระเมิม\nคระแลง\nคระไล\nคระแวง\nคระหน\nคระหวน\nคระหาย\nคระโหย\nครั่ง\nครั้ง\nครัดเคร่ง\nครัน\nครั่น\nครั้น\nครับ\nครัว\nครา\nคร่า\nคราก\nคราง\nคราญ\nคราด\nคร้าน\nคราบ\nคราม\nคร้าม\nครามครัน\nคราว\nคร่าว\nคราส\nครำ\nคร่ำ\nคร่ำเคร่ง\nคริปทอน\nคริสต์\nครีบ\nครีม\nครีษมายัน\nครึ\nครึกครื้น\nครึกโครม\nครึ่ง\nครึ่ด\nครึน\nครึ้ม\nครืด\nครืน\nครื้น\nครืนครั่น\nครื้นครั่น\nครื้นครึก\nครื้นเครง\nครือ\nครุ\nครุคระ\nครุฑ\nครุ่น\nครุมเครือ\nครุย\nครุวนา\nครู\nครู่\nครูด\nคฤโฆษ\nคฤนถ์\nคฤหบดี\nคฤหัสถ์\nคฤหาสน์\nคลวง\nคลอ\nคล้อ\nคลอก\nคลอง\nคล่อง\nคล้อง\nคลอด\nคลอน\nคล้อย\nคลอรีน\nคลอโรฟอร์ม\nคลอโรฟีลล์\nคละ\nคละคลุ้ง\nคลัก\nคลั่ก\nคลัง\nคลั่ง\nคลัตช์\nคลับคล้าย\nคลับคลา\nคลา\nคล้า\nคลางแคลง\nคลาด\nคลาน\nคลาย\nคล้าย\nคล้ายคลึง\nคล่าว\nคลำ\nคล่ำ\nคล้ำ\nคลิ้งโคลง\nคลิด\nคลินิก\nคลี\nคลี่\nคลึง\nคลื่น\nคลุก\nคลุ้ง\nคลุบ\nคลุม\nคลุ่ม\nคลุ้ม\nควง\nควณ\nควน\nควบ\nควย\nควร\nควัก\nควั่ก\nควั่งคว้าง\nควัน\nควั่น\nคว้า\nควาก\nคว้าง\nควาญ\nควาน\nคว้าน\nความ\nควาย\nคว่าว\nคว่ำ\nควินิน\nควิวคว่าง\nคหกรรม\nคหกรรมศาสตร์\nคหบดี\nคหัฐ\nคอ\nค้อ\nคอก\nค็อกคัส\nค็อกเทล\nคอเคซอยด์\nค่องอ้อย\nคอด\nคอแดง\nคอน\nค่อน\nค้อน\nคอนกรีต\nคอนเดนเซอร์\nคอนแวนต์\nคอนเสิร์ต\nคอม\nค่อม\nค้อม\nคอมพิวเตอร์\nคอมมานโด\nคอมมิวนิสต์\nคอย\nค่อย\nค้อย\nคอยล์\nคอร์ด\nคอแลน\nคอสติกโซดา\nคะ\nค่ะ\nคะไขว่\nคะค้อย\nคะคาน\nคะนน\nคะนอง\nคะน้า\nคะนึง\nคะเน\nคะเนงร้าย\nคะเน็ด\nคะแนน\nคะมำ\nคะยั้นคะยอ\nคะเยอ\nคัก\nคั่ก\nคัคนะ\nคัคนัมพร\nคัคนางค์\nคัคนานต์\nคั่ง\nคังไคย\nคัจฉ\nคัณฑมาลา\nคัณฑสูตร\nคัด\nคัดเค้า\nคัดมอน\nคัดเม็ง\nคัทลียา\nคัน\nคั่น\nคั้น\nคันถรจนาจารย์\nคันธกุฎี\nคันธมาทน์\nคันธารราษฎร์\nคับ\nคับค้อน\nคับคา\nคับแค\nคัพภ์\nคัมภีร์\nคัมภีรภาพ\nคัล\nคั่ว\nคา\nค่า\nค้า\nค่าคบ\nคาง\nค่าง\nค้าง\nคางคก\nค้างคาว\nคาด\nคาถา\nคาทอลิก\nคาน\nค้าน\nคาบ\nคาพยุต\nคาม\nคามวาสี\nคามณีย์\nคามภีร์\nคาย\nค่าย\nคาร์บอน\nคาร์บอเนต\nคาร์บอลิก\nคาร์บูเรเตอร์\nคาร์โบรันดัม\nคาร์โบไฮเดรต\nคารม\nคารวะ\nคาราเต้\nคาราวาน\nคาว\nค่าว\nค้าว\nคาวตอง\nคาวี\nคาวุต\nคาส\nคำ\nค่ำ\nค้ำ\nคำนวณ\nคำนวร\nคำนับ\nคำนัล\nคำนึง\nคำนูณ\nคำฝอย\nคำเพลิง\nคำรน\nคำรบ\nคำราม\nคำแสด\nคำแหง\nคำโอง\nคิก\nคิง\nคิด\nคิมหันต์\nคิรี\nคิลาน\nคิลานะ\nคิว\nคิ้ว\nคี่\nคีต\nคีบ\nคีม\nคีรี\nคีรีบูน\nคึก\nคึ่ก\nคึกคัก\nคืน\nคืบ\nคือ\nคุ\nคุก\nคุกกี้\nคุกคาม\nคุกพาทย์\nคุ้ง\nคุณ\nคุด\nคุดทะราด\nคุต\nคุตติ\nคุ่น\nคุ้น\nคุป\nคุปต์\nคุปติ\nคุม\nคุ่ม\nคุ้ม\nคุย\nคุ้ย\nคุยหฐาน\nคุยหประเทศ\nคุรุ\nคุลา\nคุลิก่า\nคุลีการ\nคุหา\nคู\nคู่\nคู้\nคูณ\nคูถ\nคูน\nคูปอง\nคูเรียม\nคูหา\nเค้ก\nเค้เก้\nเค้ง\nเคณฑะ\nเคด\nเค็ด\nเคน\nเค้น\nเคเบิล\nเค็ม\nเคมี\nเคย\nเครง\nเคร่ง\nเครงครา\nเครงครำ\nเครดิต\nเครน\nเครา\nเคร่า\nเคราหณี\nเคราะห์\nเครียด\nเครียว\nเครือ\nเครื่อง\nเคล้ง\nเคล็ด\nเคล้น\nเคล้า\nเคล่าคล่อง\nเคลิบเคลิ้ม\nเคลิ้ม\nเคลีย\nเคลื่อน\nเคลือบ\nเคว้ง\nเคหะ\nเคหา\nเคอะ\nเค้า\nเคาน์เตอร์\nเคารพ\nเคาะ\nเคาะแคะ\nเคียง\nเคียด\nเคียน\nเคียม\nเคี่ยม\nเคียร\nเคียว\nเคี่ยว\nเคี้ยว\nเคือง\nแค\nแค่\nแค้\nแคแล\nแคดเมียม\nแค็ตตาล็อก\nแคแตร\nแคโทด\nแคน\nแค่น\nแค้น\nแคบ\nแคบหมู\nแคปซูล\nแคม\nแคร่\nแครก\nแครง\nแคระ\nแคลคูลัส\nแคลง\nแคลเซียม\nแคลน\nแคล้ว\nแคล่วคล่อง\nแคลอรี\nแคลิฟอร์เนียม\nแคว\nแควก\nแคว้น\nแคแสด\nแคะ\nโค\nโคก\nโคเคน\nโค่ง\nโค้ง\nโคจร\nโคเซแคนต์\nโคไซน์\nโคตร\nโคแทนเจนต์\nโคธา\nโคน\nโค่น\nโคบอลต์\nโคปผกะ\nโคม\nโคม่า\nโครก\nโครกคราก\nโครง\nโคร่ง\nโคร่งคร่าง\nโครม\nโครเมียม\nโครโมโซม\nโคราช\nโครำ\nโคล\nโคลง\nโคลน\nโควตา\nโคออร์ดิเนต\nใคร\nใคร่\nใคร่ครวญ\nไค\nไค้\nไคร้\nไคร้เครือ\nไคล\nไคล้\nฆนะ\nฆราวาส\nฆ้อง\nฆ่า\nฆาต\nฆาน\nฆานินทรีย์\nเฆี่ยน\nโฆรวิส\nโฆษก\nโฆษณา\nโฆษะ\nโฆษิต\nงก\nงง\nงด\nงดงาม\nงบ\nงม\nงวง\nง่วง\nงวด\nง่วน\nง้วน\nงวยงง\nงอ\nง้อ\nงอก\nงอกแงก\nง่อกแง่ก\nง่อง\nง่องแง่ง\nงอแง\nงอด\nงอดแงด\nงอน\nง่อน\nง่อนแง่น\nงอนหง่อ\nงอบ\nงอม\nง้อม\nงอย\nง่อย\nงัก\nงั่ก\nงั่ง\nงัด\nงัน\nงันงก\nงับ\nงัว\nงั่ว\nงัวเงีย\nงา\nง่า\nง้าง\nงาน\nง่าน\nงาบ\nงาม\nง่าม\nงาย\nง่าย\nง้าว\nงำ\nง่ำ\nง้ำ\nงิ้ว\nงี่เง่า\nงีบ\nงึก\nงึน\nงึม\nงุด\nงุนงง\nงุ่นง่าน\nงุบ\nงุบงิบ\nงุ้ม\nงุ่มง่าม\nงุย\nงู\nงูบ\nงูสวัด\nเงก\nเงย\nเงอะ\nเงอะงะ\nเงา\nเง่า\nเง้า\nเงาะ\nเงิน\nเงี่ยง\nเงี่ยน\nเงียบ\nเงี้ยว\nเงี่ยหู\nเงื้อ\nเงือก\nเงื่อง\nเงือด\nเงื่อน\nเงือบ\nเงื้อม\nแง\nแง่\nแง่ง\nแง่น\nแง้ม\nแงะ\nโง\nโง่\nโงก\nโงกเงก\nโงง\nโง่ง\nโง้ง\nโงงเงง\nโง่งเง่ง\nโงเง\nโงน\nโงนเงน\nไง้\nจก\nจง\nจ่ง\nจงกรม\nจงกล\nจงกลนี\nจงโคร่ง\nโจงโคร่ง\nจงอร\nจงอาง\nจด\nจดุรงค์\nจตุปัจจัย\nจตุลังคบาท\nจตุโลกบาล\nจตุสดมภ์\nจตุตถ\nจตุตถี\nจตุร\nจตุรงค์\nจตุรพักตร์\nจตุรพิธ\nจตุรพิธพร\nจน\nจบ\nจม\nจ่ม\nจมร\nจมรี\nจมูก\nจยุติ\nจร\nจรณะ\nจรด\nจรรจา\nจรรโจษ\nจรรม\nจรรยา\nจรรโลง\nจรลี\nจรวจ\nจรวด\nจรส\nจรอก\nจระเข้\nจระนำ\nจระบี\nจรัล\nจรัส\nจราจร\nจราญ\nจริก\nจริง\nจริต\nจริม\nจริยธรรม\nจริยวัตร\nจริยาวัตร\nจริยศาสตร์\nจริยศึกษา\nจริยา\nจรุง\nจรูง\nจรูญ\nจเร\nจล\nจลนพลศาสตร์\nจลนศาสตร์\nจลนี\nจลาจล\nจวก\nจ๊วก\nจวง\nจ้วง\nจ๋วง\nจวด\nจวน\nจวบ\nจวัก\nจอ\nจ่อ\nจ้อ\nจ๋อ\nจอก\nจ้อก\nจ๊อก\nจ้อกแจ้ก\nจอง\nจ้อง\nจ๋อง\nจ้องเต\nจองเปรียง\nจ้องหน่อง\nจองหอง\nจอแจ\nจ๋อแจ๋\nจอด\nจอน\nจ้อน\nจอนจ่อ\nจอบ\nจอม\nจ่อม\nจอมสุรางค์\nจ่อย\nจ้อย\nจ๋อย\nจอแส\nจะ\nจ้ะ\nจ๊ะ\nจ๋ะ\nจะกละ\nจะกลาม\nจะกูด\nจะขาบ\nจะเข้\nจะเข็บ\nจะงอย\nจะจะ\nจ๊ะจ๋า\nจะแจ้ง\nจะแจ่ม\nจะละเม็ด\nจะละหวั่น\nจัก\nจั้ก\nจักกาย\nจั๊กกิ้ม\nจักขุ\nจักจั่น\nจักจี้\nจั๊กจี้\nจั๊กเดียม\nจักร\nจักรพาก\nจักรวาก\nจักริน\nจักรี\nจั๊กเล้อ\nจักษุ\nจักแหล่น\nจัง\nจั้ง\nจั๋ง\nจังกวด\nจังกอบ\nจังก้า\nจังกูด\nจังโกฏก์\nจังงัง\nจั้งมั่ง\nจังไร\nจังหนับ\nจังหรีด\nจังหวะ\nจังหวัด\nจังหัน\nจัญไร\nจัณฑ์\nจัณฑาล\nจัด\nจัตตาฬีสะ\nจัตวา\nจัตุ\nจัตุรงค์\nจัตุรัส\nจัตุลังคบาท\nจัตุโลกบาล\nจัตุสดมภ์\nจัน\nจั่น\nจันโจษ\nจั่นดิน\nจันท์\nจันทน์\nจันทร์\nจันทรคติ\nจันทรคราส\nจันทรุปราคา\nจันทรเม็ด\nจันทวาร\nจันทัน\nจันอับ\nจับ\nจับกัง\nจับฉ่าย\nจับเดิม\nจับปิ้ง\nจับยี่กี\nจัมบก\nจัมปกะ\nจัมปา\nจัมมะ\nจัว\nจั่ว\nจั๊วะ\nจา\nจ่า\nจ้า\nจ๋า\nจาก\nจากพาก\nจาคะ\nจาคี\nจาง\nจ่าง\nจ้าง\nจางปาง\nจางวาง\nจาด\nจาตุรงค์\nจาตุรนต์\nจาตุรันต์\nจาน\nจ้าน\nจาบ\nจาบัล\nจาบัลย์\nจาป\nจาม\nจ่ามงกุฎ\nจามจุรี\nจามร\nจามรี\nจามีกร\nจ่าย\nจาร\nจ่ารง\nจารวาก\nจาระไน\nจาระบี\nจาริก\nจารึก\nจารี\nจารีต\nจารุ\nจ้าละหวั่น\nจาว\nจ้าว\nจ่าหวัก\nจำ\nจ้ำ\nจำกัด\nจำงาย\nจ้ำจี้\nจำเจ\nจำเดิม\nจำทวย\nจำนง\nจำนน\nจำนรรจ์\nจำนรรจา\nจำนวน\nจำนอง\nจำนัล\nจำนำ\nจำเนียน\nจำเนียม\nจำเนียร\nจำแนก\nจำบ่ม\nจำบัง\nจ้ำเบ้า\nจำปา\nจำปาดะ\nจำปี\nจำปูน\nจำพวก\nจำเพาะ\nจ้ำม่ำ\nจำรัส\nจำราญ\nจำรูญ\nจำเริญ\nจำเรียง\nจำลอง\nจำเลย\nจำเลาะ\nจำแลง\nจำแล่น\nจำหนับ\nจ๋ำหนับ\nจำหน่าย\nจำหระ\nจำหล่อ\nจำหลัก\nจำเหียง\nจำอวด\nจิ\nจิก\nจิ้งโกร่ง\nจิ้งจก\nจิงจ้อ\nจิ้งจอก\nจิงจัง\nจิ้งจัง\nจิงโจ้\nจิ้งหรีด\nจิ้งเหลน\nจิต\nจิตกาธาน\nจิตต์\nจิตร\nจิตรจุล\nจิตระ\nจิตรา\nจินเจา\nจินดา\nจินดาหนา\nจินดาหรา\nจินต์\nจิบ\nจิปาถะ\nจิ่ม\nจิ้ม\nจิ้มก้อง\nจิ้มลิ้ม\nจิรกาล\nจิ๋ว\nจี\nจี่\nจี้\nจี๋\nจี๋จ้อ\nจีแจ๊บ\nจี๊ด\nจีน\nจีนแส\nจีบ\nจีโบ\nจีม\nจีวร\nจึง\nจึ่ง\nจึ้ง\nจืด\nจุ\nจุก\nจุ๊กกรู๊\nจุกจิก\nจุกชี\nจุกผาม\nจุกโรหินี\nจุ่ง\nจุ๋งจิ๋ง\nจุฑา\nจุณ\nจุณณียบท\nจุด\nจุติ\nจุตูปปาตญาณ\nจุทส\nจุน\nจุ่น\nจุ้น\nจุนจู๋\nจุ้นจู๊\nจุนทการ\nจุนสี\nจุบ\nจุ๊บ\nจุบจิบ\nจุ๊บแจง\nจุ่ม\nจุ้ม\nจุ๋มจิ๋ม\nจุมพฏ\nจุมพรวด\nจุมพล\nจุมพิต\nจุมโพล่\nจุ้ย\nจุรณ\nจูรณ\nจุรี\nจุไร\nจุล\nจุลจอมเกล้า\nจุลวงศ์\nจุฬา\nจุฬาราชมนตรี\nจุฬาลัมพา\nจุฬาลำพา\nจู\nจู่\nจู้\nจู๋\nจูง\nจู้จี้\nจู๋จี๋\nจู๊ด\nจูบ\nเจ\nเจ๊ก\nเจ่ง\nเจ้ง\nเจ๊ง\nเจ๋ง\nเจ็ด\nเจ็ดตะคลี\nเจดีย์\nเจดียสถาน\nเจต\nเจตนา\nเจตพังคี\nเจตมูลเพลิง\nเจตสิก\nเจโตวิมุติ\nเจน\nเจ็บ\nเจรจา\nเจริญ\nเจริด\nเจรียง\nเจลียง\nเจว็ด\nเจษฎา\nเจ๊สัว\nเจอ\nเจ่อ\nเจ๋อ\nเจ๋อเจ๊อะ\nเจอร์เมเนียม\nเจอะ\nเจา\nเจ่า\nเจ้า\nเจ๊า\nเจาะ\nเจิ่ง\nเจิด\nเจิ่น\nเจิม\nเจีย\nเจียง\nเจียด\nเจียน\nเจี๋ยน\nเจี๊ยบ\nเจียม\nเจี๋ยมเจี้ยม\nเจียร\nเจียระไน\nเจียระบาด\nเจียว\nเจี๊ยวจ๊าว\nเจือ\nเจื่อน\nเจื้อย\nเจือสม\nแจ\nแจ้\nแจ๋\nแจก\nแจกัน\nแจง\nแจ่ง\nแจ้ง\nแจงลอน\nแจ๊ด\nแจ๊ดแจ๋\nแจตร\nแจ้น\nแจบ\nแจ่ม\nแจรง\nแจว\nแจ่ว\nแจ้ว\nแจ๋ว\nแจะ\nโจก\nโจ๊ก\nโจง\nโจ่งครึ่ม\nโจ๋งครึ่ม\nโจ่งครุ่ม\nโจ๋งเจ๋ง\nโจ่งแจ้ง\nโจท\nโจทก์\nโจทนา\nโจทย์\nโจน\nโจม\nโจร\nโจล\nโจษ\nโจษจัน\nใจ\nไจ\nไจ้\nฉก\nฉกรรจ์\nฉกษัตริย์\nฉกาจ\nฉกามาพจร\nฉกามาวจร\nฉง\nฉงน\nฉงาย\nฉทึง\nฉนวน\nฉนัง\nฉนาก\nฉนำ\nฉบัง\nฉบัด\nฉบับ\nฉบำ\nฉม\nฉมบ\nฉมวก\nฉมวย\nฉม่อง\nฉมัง\nฉมัน\nฉมา\nฉมำ\nฉล\nฉลวย\nฉลอง\nฉลอม\nฉลัก\nฉลับ\nฉลาก\nฉลาง\nฉลาด\nฉลาม\nฉลาย\nฉลิว\nฉลีก\nฉลุ\nฉลู\nฉวย\nฉวะ\nฉวัดเฉวียน\nฉวาง\nฉวี\nฉศก\nฉ้อ\nฉอก\nฉ่อง\nฉอด\nฉ่อย\nฉอเลาะ\nฉะ\nฉะฉาด\nฉะฉาน\nฉะฉ่ำ\nฉะฉี่\nฉะเฉื่อย\nฉะนั้น\nฉะนี้\nฉะอ้อน\nฉักกะ\nฉัฐ\nฉัด\nฉัตร\nฉัททันต์\nฉัน\nฉันท\nฉันท์\nฉันทะ\nฉันทา\nฉันทาคติ\nฉันทานุมัติ\nฉับ\nฉัพพรรณรังสี\nฉัยยา\nฉ่า\nฉาก\nฉาง\nฉ่าง\nฉ่าฉาว\nฉาด\nฉาดฉาน\nฉาตกภัย\nฉาน\nฉาบ\nฉาบฉวย\nฉาย\nฉายา\nฉาว\nฉ่ำ\nฉำฉา\nฉำแฉะ\nฉิ่ง\nฉิน\nฉินท์\nฉินทฤกษ์\nฉิบ\nฉิมพลี\nฉิว\nฉี่\nฉีก\nฉีด\nฉุ\nฉุก\nฉุด\nฉุน\nฉุป\nฉุป\nฉุย\nฉุยฉาย\nฉู่\nฉู่ฉี่\nฉูด\nฉูดฉาด\nเฉ\nเฉก\nเฉโก\nเฉ่ง\nเฉด\nเฉท\nเฉนียน\nเฉพาะ\nเฉย\nเฉลย\nเฉลว\nเฉลา\nเฉลิม\nเฉลี่ย\nเฉลียง\nเฉลี่ยง\nเฉลียบ\nเฉลียว\nเฉวียง\nเฉวียน\nเฉอะแฉะ\nเฉา\nเฉาก๊วย\nเฉาฮื้อ\nเฉาะ\nเฉิด\nเฉิบ\nเฉียง\nเฉียงพร้านางแอ\nเฉียด\nเฉียบ\nเฉียว\nเฉี่ยว\nเฉือน\nเฉื่อย\nแฉ\nแฉ่\nแฉก\nแฉง\nแฉ่ง\nแฉลบ\nแฉล้ม\nแฉะ\nโฉ\nโฉ่\nโฉเก\nโฉ่งฉ่าง\nโฉงเฉง\nโฉด\nโฉนด\nโฉบ\nโฉเบ๊\nโฉม\nโฉลก\nไฉน\nไฉไล\nชก\nชคัตตรัย\nชง\nชงโค\nชงฆ์\nชงฆา\nชงโลง\nชฎา\nชฎามังษี\nชฎามังสี\nชฎิล\nชด\nชน\nชนก\nชนนี\nชนม์\nชนวน\nชนะ\nชนัก\nชนา\nชนาง\nชนิด\nชเนตตี\nชบา\nชม\nชมดชม้อย\nชมนาด\nชมพู\nชมพู่\nชมรม\nชม้อย\nชม้าย\nชไม\nชยา\nชโย\nชรทึง\nชรริน\nชรอุ่ม\nชระล้ำ\nชระลุ\nชระอาบ\nชระเอม\nชรัด\nชรา\nชล\nชโลง\nชโลม\nช่วง\nชวด\nชวน\nชวย\nช่วย\nชวร\nชวลิต\nชวา\nชวาล\nชวาลา\nช่อ\nชอก\nช็อก\nช็อกโกเลต\nช็อกโกแลต\nชอง\nช่อง\nช้อง\nชองระอา\nชอน\nช่อน\nช้อน\nชอบ\nชอม\nช้อย\nชอล์ก\nชอ่ำ\nชอุ่ม\nชะ\nชะคราม\nชะงอก\nชะง่อน\nชะงัก\nชะงัด\nชะง้ำ\nชะงุ้ม\nชะเง้อ\nชะเงื้อม\nชะแง้\nชะโงก\nชะฉ่า\nชะช่อง\nชะชะ\nชะช้า\nชะโด\nชะตา\nชะต้า\nชะนี\nชะเนาะ\nชะเนียง\nชะพลู\nชะเพลิง\nชะมด\nชะมบ\nชะมวง\nชะมัง\nชะมัด\nชะแม่\nชะรอย\nชะลอ\nชะลอม\nชะล่า\nชะลาน\nชะลิน\nชะลูด\nชะเลง\nชะเลย\nชะแล็ก\nชะแลง\nชะวาก\nชะวาด\nชะเวิกชะวาก\nชะแวง\nชะอม\nชะอ้อน\nชะเอม\nชะโอน\nชัก\nชักคราม\nชักช้า\nชัง\nชั่ง\nชังคา\nชังฆ\nชัชวาล\nชัฏ\nชัด\nชัดช้า\nชัน\nชั้น\nชันกาด\nชันชี\nชันตุ\nชันนะตุ\nชันนุ\nชันโรง\nชันษา\nชันสูตร\nชัปนะ\nชัพ\nชัมพูนท\nชัย\nชัยพฤกษ์\nชัยภูมิ\nชัลลุกา\nชั่ว\nชั้ว\nชัวชม\nชา\nช้า\nชาคระ\nชาคริต\nชาคริยานุโยค\nช่าง\nช้าง\nช้าช่อน\nชาญ\nชาด\nชาดก\nชาต\nชาตบุษย์\nชาตรี\nชาตะ\nชาตา\nชาติ\nชาน\nชานุ\nช้าปี่\nชาปีไหน\nช้าแป้น\nช้าพลู\nชาม\nชามพูนท\nชามาดร\nชามาดา\nชามาตุ\nชาย\nชายา\nชาล\nชาลา\nชาลินี\nช้าเลือด\nชาว\nชาวี\nชำ\nช่ำ\nช้ำ\nชำงัด\nชำงาย\nช่ำชอง\nชำนะ\nชำนัญ\nชำนัน\nชำนาญ\nชำนิ\nชำเนียร\nชำมะนาด\nชำมะเลียง\nชำร่วย\nชำระ\nช้ำรั่ว\nชำรุด\nชำเรา\nชำเราะ\nชำแรก\nชำแระ\nชำเลือง\nชำแหละ\nชิ\nชิง\nชิ่ง\nชิงชัน\nชิงช้า\nชิงช้าชาลี\nชิงชี่\nชิงฮื้อ\nชิชะ\nชิชิ\nชิณณะ\nชิด\nชิเดนทรีย์\nชิต\nชิตินทรีย์\nชิน\nชิ้น\nชินโต\nชิโนรส\nชิม\nชิมแปนซี\nชิยา\nชิรณะ\nชิระ\nชิวหา\nชิสา\nชี\nชี่\nชี้\nชีปะขาว\nชีผะขาว\nชีผ้าขาว\nชีพ\nชีฟอง\nชีรณ\nชีระ\nชีวเคมี\nชีวประวัติ\nชีวภาพ\nชีววิทยา\nชีวะ\nชีวัน\nชีวา\nชีวาตม์\nชีวาลัย\nชีวิต\nชีวิตักษัย\nชีวิน\nชีวี\nชืด\nชื่น\nชื้น\nชื่อ\nชุก\nชุกชี\nชุ้ง\nชุณห\nชุด\nชุติ\nชุน\nชุบ\nชุม\nชุ่ม\nชุมนุม\nชุมพร\nชุมพา\nชุมแพรก\nชุมรุม\nชุมแสง\nชุมเห็ด\nชุ่ย\nชุลมุน\nชุลี\nชุษณะ\nชู\nชู้\nเช็ค\nเช้ง\nเช้งวับ\nเชงเลง\nเช็ด\nเชน\nเช่น\nเชย\nเชลง\nเชลย\nเชลแล็ก\nเชลียง\nเชวง\nเชษฐะ\nเชษฐา\nเชอ\nเช่า\nเช้า\nเชาว์\nเชาวน์\nเชิง\nเชิญ\nเชิด\nเชิ้ต\nเชียง\nเชี่ยน\nเชียบ\nเชี่ยม\nเชียร\nเชียร์\nเชียว\nเชี่ยว\nเชื่อ\nเชื้อ\nเชือก\nเชื่อง\nเชือด\nเชือน\nเชื่อม\nแช\nแช่\nแช่ง\nแชงมา\nแชบ๊วย\nแช่ม\nแชร์\nแชล่ม\nแชสซี\nแชะ\nโชก\nโชค\nโชงโลง\nโชดก\nโชดึก\nโชต\nโชตก\nโชติ\nโชติก\nโชน\nโชมโรม\nโชย\nโชยงการ\nโชยชาย\nโชยติส\nโชว์\nใช่\nใช้\nไช\nไชนะ\nไชย\nไชโย\nซก\nซ่ก\nซงดำ\nซ่งฮื้อ\nซด\nซน\nซ้น\nซบ\nซม\nซวดเซ\nซวน\nซวย\nซอ\nซอก\nซอง\nซ่อง\nซ้อง\nซองแมว\nซ้องแมว\nซอน\nซ่อน\nซ้อน\nซอม\nซ่อม\nซ้อม\nซอมซ่อ\nซอย\nซอส\nซัก\nซักส้าว\nซัง\nซั้ง\nซัด\nซับ\nซัลฟา\nซั้ว\nซา\nซ่า\nซาก\nซาง\nซ่าง\nซาด\nซาน\nซ่าน\nซาบซ่าน\nซาบซึ้ง\nซ่าโบะ\nซาแมเรียม\nซ้าย\nซาลาเปา\nซาว\nซ่าหริ่ม\nซำ\nซ้ำ\nซิ\nซี\nซิก\nซิกข์\nซิกซี้\nซิกแซ็ก\nซิการ์\nซิงโคนา\nซิ่น\nซินนามิก\nซินแส\nซิบ\nซิป\nซิฟิลิส\nซิลิคอน\nซิว\nซี่\nซีก\nซีเซียม\nซีด\nซี้ด\nซีนอน\nซีป่าย\nซีเมนต์\nซีเรียม\nซีลีเนียม\nซีอิ๊ว\nซึก\nซึง\nซึ่ง\nซึ้ง\nซึม\nซื่อ\nซื้อ\nซุก\nซุง\nซุน\nซุบ\nซุป\nซุ่ม\nซุ้ม\nซุ่มซ่าม\nซุย\nซู่\nซูโครส\nซูด\nซู้ด\nซูดซาด\nซูบ\nเซ\nเซ็ก\nเซแคนต์\nเซ็ง\nเซ่ง\nเซ้ง\nเซ็งแซ่\nเซต\nเซน\nเซ็น\nเซ่น\nเซนติกรัม\nเซนติเกรด\nเซนติเมตร\nเซนติลิตร\nเซปักตะกร้อ\nเซราะ\nเซรุ่ม\nเซลเซียส\nเซลล์\nเซลลูลอยด์\nเซลลูโลส\nเซ่อ\nเซอร์โคเนียม\nเซอะ\nเซา\nเซ้าซี้\nเซาะ\nเซิง\nเซิ้ง\nเซียน\nเซียบ\nเซียมซี\nเซียว\nเซี่ยว\nเซี่ยวกาง\nเซื่อง\nแซ\nแซ่\nแซ็กคาริน\nแซง\nแซงแซว\nแซด\nแซบ\nแซม\nแซยิด\nแซ่ว\nแซะ\nโซ\nโซ่\nโซก\nโซ่ง\nโซงโขดง\nโซเซ\nโซดา\nโซเดียม\nโซม\nโซรม\nโซลา\nไซ\nไซ้\nไซเกิล\nไซโคลน\nไซน์\nไซยาไนด์\nไซร้\nไซเรน\nไซโล\nฌาน\nฌาปน\nฌาปนกิจ\nฌาปนสถาน\nเฌอ\nเฌอเอม\nญวน\nญัตติ\nญาณ\nญาติ\nญานาซะฮ์\nญิบ\nญี่ปุ่น\nเญยธรรม\nไญยธรรม\nฎีกา\nฐกัด\nฐากูร\nฐาน\nฐานะ\nฐานันดร\nฐานานุกรม\nฐานานุรูป\nฐานานุศักดิ์\nฐานียะ\nฐาปน\nฐาปนา\nฐายี\nฐิต\nฐิติ\nฑาหก\nฑาหะ\nเฒ่า\nณรงค์\nเณร\nดก\nดง\nด้ง\nด้น\nดนโด่\nดนตรี\nดนัย\nดนุ\nดนู\nดบัสวิน\nดบัสวี\nดม\nดรงค์\nดรณี\nดรรชนี\nดราฟต์\nดรุณ\nดรุณี\nดล\nดวง\nด้วง\nดวด\nด่วน\nด้วน\nด้วย\nดอก\nดอง\nด่อง\nด้อง\nดองฉาย\nดองดึง\nดอด\nดอน\nด่อน\nดอม\nด้อม\nดอย\nด้อย\nดอลลาร์\nดะ\nดะโต๊ะ\nดะหมัง\nดัก\nดักดาน\nดักแด้\nดัง\nดั่ง\nดั้ง\nดัชนี\nดัด\nดัตช์\nดัน\nดั้น\nดับ\nดัมพ์\nดั้วเดี้ย\nดัสกร\nดา\nด่า\nดาก\nด่าง\nด้าง\nดาด\nดาน\nด่าน\nด้าน\nดาบ\nดาบส\nดาม\nด้าม\nด้ามจิ้ว\nดามพ์\nดาย\nด้าย\nดารกะ\nดารณี\nดารดาษ\nดาระ\nดารา\nดาล\nดาลัด\nดาว\nด่าว\nด้าว\nดาวดึงส์\nดาวบส\nดาษ\nดาษดา\nดำ\nด่ำ\nด้ำ\nดำกล\nดำเกิง\nดำแคง\nดำดง\nดำนาณ\nดำเนิน\nดำบล\nดำรง\nดำรวจ\nดำรัส\nดำริ\nดำรี\nดำรู\nดำฤษณา\nดำเลิง\nดิก\nดิ่ง\nดิฉัน\nดิฐ\nดิตถ์\nดิถี\nดิน\nดิ้น\nดิบ\nดิรัจฉาน\nดิลก\nดิ่ว\nดิ้ว\nดิ้วเดี้ยว\nดิษฐ์\nดิสโพรเซียม\nดี\nดีเซล\nดีด\nดีดีที\nดีบุก\nดีปลี\nดีเปรสชัน\nดีหมี\nดีหลี\nดึก\nดึง\nดึ่ง\nดึ่ม\nดื่น\nดื่ม\nดือ\nดื้อ\nดุ\nดุก\nดุกดิก\nดุกทะเล\nดุ้ง\nดุ้งดิ้ง\nดุจ\nดุด\nดุน\nดุ้น\nดุบ\nดุม\nดุ่ม\nดุ่ย\nดุรงค์\nดุริยะ\nดุริยางค์\nดุริยางคศาสตร์\nดุริยางคศิลป์\nดุล\nดุษฎี\nดุษณี\nดุษณีภาพ\nดุษิต\nดุสิต\nดุเหว่า\nดู\nดูกค่าง\nดูกร\nดูด\nดูรา\nดูแล\nเด\nเด่\nเดก\nเด็ก\nเดกซ์โทรส\nเดคากรัม\nเดคาเมตร\nเดคาลิตร\nเด้ง\nเด็จ\nเดช\nเดชน์\nเดชนะ\nเดชะ\nเดโช\nเดซิกรัม\nเดซิเมตร\nเดซิลิตร\nเด็ด\nเดน\nเด่น\nเดนมาร์ก\nเดรัจฉาน\nเด๋อ\nเด๋อด๋า\nเดา\nเด้า\nเดาะ\nเดิน\nเดิ่น\nเดิม\nเดียง\nเดียด\nเดียรดาษ\nเดียรถีย์\nเดียรัจฉาน\nเดียว\nเดี่ยว\nเดี๋ยว\nเดียะ\nเดื่อ\nเดือก\nเดื่อง\nเดือด\nเดือน\nเดือย\nแด\nแด่\nแดก\nแด็ก\nแดกงา\nแดกแด้\nแดง\nแดด\nแดน\nแด่น\nแด่ว\nแดะ\nแดะแด๋\nโด\nโด่\nโดกเดก\nโด่ง\nโดด\nโดน\nโดม\nโดมร\nโดย\nโดรณ\nใด\nได\nได้\nไดแซ็กคาไรด์\nไดนาโม\nไดนาไมต์\nไดโนเสาร์\nไดเรกตริกซ์\nตก\nต๊กโต\nตง\nต๋ง\nตงฉิน\nตงิด\nตงุ่น\nตด\nตติย\nตถาคต\nตน\nต้น\nตนัย\nตนุ\nตบ\nตบะ\nตปนียะ\nตม\nต้ม\nตมูก\nตยาคี\nตรง\nตรณี\nตรม\nตรรก\nตรรกะ\nตรลบ\nตรลอด\nตรลาด\nตรวจ\nตรวน\nตรอก\nตรอง\nตรอมใจ\nตรอมตรม\nตระ\nตระกล\nตระกวน\nตระกอง\nตระการ\nตระกูล\nตระคัร\nตระเตรียม\nตระนาว\nตระบก\nตระบอก\nตระบอง\nตระบัด\nตระบัน\nตระเบ็ง\nตระแบก\nตระแบง\nตระโบม\nตระพอง\nตระพัง\nตระลาการ\nตระวัน\nตระเว็ด\nตระเวน\nตระสัก\nตระหง่าน\nตระหนก\nตระหนัก\nตระหน่ำ\nตระหนี่\nตรัง\nตรังค์\nตรับ\nตรับฟัง\nตรัย\nตรัยตรึงศ์\nตรัส\nตรัสสา\nตรา\nตรากตรำ\nตราชู\nตราบ\nตราสัง\nตรำ\nตริ\nตริว\nตรี\nตรีปวาย\nตรีพิธพรรณ\nตรียัมปวาย\nตรึก\nตรึง\nตรุ\nตรุณ\nตรุณะ\nตรุษ\nตรู\nตรู่\nตฤณ\nตฤตีย\nตฤษณา\nตลก\nตลบ\nตลอด\nตลับ\nตลาด\nตลิ่ง\nตลึง\nตวง\nต่วน\nต้วมเตี้ยม\nตวัก\nตวัด\nตวาด\nตอ\nตอม่อ\nต่อ\nต้อ\nตอก\nต๊อก\nต๊อกต๋อย\nตอง\nต้อง\nตองกราย\nต้องเต\nตองแตก\nต่องแต่ง\nตองเหลือง\nตอด\nตอน\nต้อน\nตอบ\nตอเบา\nตอม\nต่อม\nต๋อม\nต่อย\nต้อย\nต้อยตริ่ง\nต้อยติ่ง\nต้อยตีวิด\nตอแย\nตอร์ปิโด\nต่อไส้\nตอแหล\nตะ\nตะกรน\nตะกร้อ\nตะกรัน\nตะกรับ\nตะกร้า\nตะกราม\nตะกรุด\nตะกรุม\nตะกรุมตะกราม\nตะกละ\nตะกลาม\nตะกวด\nตะกอ\nตะกอน\nตะกัง\nตะกั่ว\nตะกาง\nตะกาด\nตะกาย\nตะกาว\nตะกุกตะกัก\nตะกุย\nตะกู\nตะกูด\nตะเกียกตะกาย\nตะเกียง\nตะเกียบ\nตะแก\nตะแก่\nตะแกรง\nตะโก\nตะโก้\nตะโกก\nตะโกน\nตะโกรง\nตะโกรม\nตะไกร\nตะขบ\nตะขอ\nตะขาบ\nตะขิดตะขวง\nตะเข้\nตะเข็บ\nตะโขง\nตะคร้อ\nตะครอง\nตะครั่นตะครอ\nตะคร้ำ\nตะคริว\nตะคิว\nตะครุบ\nตะคอก\nตะคัน\nตะค้า\nตะคาก\nตะค้าน\nตะคุ่ม\nตะเครียว\nตะเคียว\nตะเคียน\nตะแคง\nตะไคร่\nตะไคร้\nตะเฆ่\nตะนอย\nตะนาว\nตะบม\nตะบอง\nตะบอย\nตะบัน\nตะบิ้ง\nตะบิด\nตะบิดตะบอย\nตะบี้ตะบัน\nตะบึง\nตะบูน\nตะเบ็ง\nตะเบ็งมาน\nตะเบ๊ะ\nตะแบก\nตะแบง\nตะโบม\nตะไบ\nตะปบ\nตะปลิง\nตะปิ้ง\nตะปุ่มตะป่ำ\nตะปู\nตะพง\nตะพด\nตะพอง\nตะพัก\nตะพัง\nตะพัด\nตะพั้น\nตะพาก\nตะพาน\nตะพาบ\nตะพาย\nตะพึด\nตะพึดตะพือ\nตะพุ่น\nตะเพรา\nตะเพิง\nตะเพิด\nตะเพียน\nตะโพก\nตะโพง\nตะโพน\nตะเภา\nตะใภ้\nตะม่อ\nตะมอย\nตะรังกะนู\nตะรังตังกวาง\nตะรังตังช้าง\nตะราง\nตะลอง\nตะลอน\nตะล่อม\nตะละ\nตะลาน\nตะลิงปลิง\nตะลิบ\nตะลีตะลาน\nตะลึง\nตะลึงพรึงเพริด\nตะลุง\nตะลุ่ม\nตะลุ่มนก\nตะลุมบอน\nตะลุ่มโปง\nตะลุมพอ\nตะลุมพุก\nตะลุย\nตะเลง\nตะแลงแกง\nตะไล\nตะวัน\nตะเวน\nตะหลิว\nตะหลุก\nตะหลุง\nตะแหง่ว\nตะแหมะแขะ\nตะโหงก\nตัก\nตักกะ\nตักเตือน\nตั๊กแตน\nตักษัย\nตัง\nตั่ง\nตั้ง\nตังเก\nตังฉ่าย\nตังเม\nตังวาย\nตังโอ๋\nตัจฉก\nตัจฉนี\nตัณฑุล\nตัณหา\nตัด\nตัน\nตันตระ\nตันติ\nตันหยง\nตับ\nตับปิ้ง\nตัว\nตั๋ว\nตัวจี๊ด\nตัวตืด\nตั้วโผ\nตั้วเหี่ย\nตา\nตาก\nตากวาง\nต่าง\nตาด\nตาน\nต่าน\nต้าน\nตานนกกด\nตานี\nตาบ\nตาม\nตามะแน\nตามิน\nตาย\nตาราไต\nตาล\nตาลุ\nต๋าว\nตาเสือ\nตาหนู\nตาฬ\nตำ\nต่ำ\nตำนาน\nตำบล\nตำแบ\nตำแย\nตำรวจ\nตำรับ\nตำรา\nตำรุ\nตำลึง\nตำเสา\nตำหนัก\nตำหนิ\nตำแหน่ง\nติ\nติก\nติ๊ก\nติกะ\nติกาหรัง\nติง\nติ่ง\nติ๋ง\nติ่งตั่ง\nติ๋งต่าง\nติงส\nติงสติ\nติณ\nติด\nติตติกะ\nติตติร\nติตถ\nติตถะ\nติถี\nติมิงคละ\nติรัจฉาน\nติลก\nติละ\nติ้ว\nตี\nตี่\nตีน\nตีบ\nตีรถะ\nตีระ\nตึ\nตึก\nตึ้ก\nตึ้กตั้ก\nตึง\nตึดตื๋อ\nตึ๊ดตื๋อ\nตืด\nตื่น\nตื้น\nตื้อ\nตื๊อ\nตื๋อ\nตุ\nตุ๊\nตุ๊กแก\nตุ๊กตา\nตุ๊กต่ำ\nตุกติก\nตุ๊กติ๊ก\nตุ๊กตุ่น\nตุ๊กตุ๋ย\nตุง\nตุ้งก่า\nตุ้งติ้ง\nตุ๊ดตู่\nตุน\nตุ่น\nตุ๋น\nตุนาหงัน\nตุบ\nตุ้บ\nตุ๊บป่อง\nตุปัดตุป่อง\nตุปัดตุเป๋\nตุ่ม\nตุ้ม\nตุ๋ม\nตุ้มกว้าว\nตุมกา\nตุ้มแซะ\nตุมตัง\nตุ้มเต๋น\nตุ้มปี่\nตุมพะ\nตุ่ย\nตุ้ย\nตุ๊ย\nตุ๋ยตุ่ย\nตุรคะ\nตุรงค์\nตุล\nตุลา\nตุหรัดตุเหร่\nตู\nตู่\nตู้\nตูก\nตูด\nตูบ\nตูม\nเต๊ก\nเต็ง\nเต่ง\nเตช\nเตโช\nเต้น\nเต็นท์\nเต็ม\nเตย\nเตร่\nเตร็ด\nเตรตา\nเตรียม\nเตรียมตรม\nเตละ\nเตลิด\nเตว็ด\nเต่อ\nเตอะ\nเตะ\nเตา\nเต่า\nเต้า\nเต๋า\nเต่าเกียด\nเต้าเจี้ยว\nเต้าทึง\nเต้าหู้\nเต้าฮวย\nเต๊าะ\nเตาะแตะ\nเติ่ง\nเติบ\nเติม\nเตี้ย\nเตียง\nเตียน\nเตียบ\nเตี๋ยม\nเตียรถ์\nเตียว\nเตี่ยว\nเตือน\nแต่\nแต้\nแตก\nแตง\nแต่ง\nแตงเม\nแต้จิ๋ว\nแตด\nแต๊ดแต๋\nแตน\nแต้ม\nแตร\nแตระ\nแต้ว\nแต้วแร้ว\nแต้วแล้ว\nแต่ว่า\nแต้แว้ด\nแตะ\nโต\nโต้\nโตก\nโต่ง\nโต้ง\nโตงเตง\nโตฎก\nโต๊ด\nโตน\nโตนด\nโต้โผ\nโตมร\nโตย\nโตรก\nโต๊ะ\nใต้\nไต\nไต่\nไต้\nไต๋\nไตร\nไตรกิศยา\nไตรดายุค\nไตร่ตรอง\nไตรย\nไต้หวัน\nถก\nถกล\nถงาด\nถด\nถนน\nถนอม\nถนัด\nถนัน\nถนำ\nถนิม\nถม\nถ่ม\nถมอ\nถมึงทึง\nถลก\nถลกบาตร\nถลน\nถล่ม\nถลอก\nถลัน\nถลา\nถลาก\nถลาย\nถลำ\nถลึงตา\nถลุง\nถ่วง\nถ้วน\nถ้วย\nถวัล\nถวัลย์\nถวาย\nถวิน\nถวิล\nถ่อ\nถ้อ\nถอก\nถอง\nถ่อง\nถ้อง\nถอด\nถอน\nถอบ\nถอบแถบ\nถ่อม\nถอย\nถ่อย\nถ้อย\nถะ\nถะถั่น\nถะมัดถะแมง\nถัก\nถัง\nถั่ง\nถัด\nถัทธ\nถัน\nถั่น\nถับ\nถัมภ์\nถัว\nถั่ว\nถา\nถ้า\nถาก\nถาง\nถ่าง\nถาด\nถาน\nถ่าน\nถาบ\nถาม\nถามะ\nถ่าย\nถ่าว\nถาวร\nถาวรธิรา\nถ้ำ\nถิ่น\nถี่\nถีบ\nถึก\nถึง\nถือ\nถุง\nถุน\nถุย\nถู\nถูก\nเถกิง\nเถน\nเถร\nเถระ\nเถรานุเถระ\nเถรี\nเถลไถล\nเถลิง\nเถลือกถลน\nเถ่อ\nเถอะ\nเถา\nเถ้า\nเถาวัลย์\nเถาะ\nเถิก\nเถิง\nเถิด\nเถิดเทิง\nเถิน\nเถียง\nเถียร\nเถือ\nเถือก\nเถื่อน\nแถ\nแถก\nแถง\nแถน\nแถบ\nแถม\nแถลง\nแถลบ\nแถว\nโถ\nโถง\nโถงเถง\nโถบ\nโถม\nโถมนาการ\nไถ\nไถ่\nไถ้\nไถง\nไถล\nทกล้า\nทแกล้ว\nท่ง\nทด\nทน\nท้น\nทนต์\nทนโท่\nทนาย\nทบ\nทบวง\nทมอ\nทมะ\nทมิฬ\nทโมน\nทยอย\nทแยง\nทรกรรม\nทรชน\nทรชาติ\nทรพิษ\nทรยศ\nทรราช\nทรลักษณ์\nทรง\nทรพี\nทรมาทรกรรม\nทรมาน\nทรรทึง\nทรรป\nทรรปณ์\nทรรปณะ\nทรรศนะ\nทรรศนาการ\nทรรศนีย์\nทรวง\nทรวดทรง\nทรวาร\nทรหด\nทรหวล\nทรหึง\nทรอมโบน\nทระนง\nทรัพย์\nทรัพยากร\nทรัมเป็ต\nทรานซิสเตอร์\nทราบ\nทราม\nทราย\nทรุด\nทฤษฎี\nทลาย\nทลิท\nทลิททก\nทวง\nท้วง\nท่วงท่า\nท่วงทำนอง\nท่วงที\nทวด\nทวน\nท้วน\nท่วม\nท้วม\nทวย\nท่วย\nท้วย\nทวอย\nทวัตดึงส์\nทวัย\nทวา\nทวาบร\nทว่า\nทวาย\nทวาร\nทวิ\nทวิช\nทวิตีย์\nทวิตียา\nทวี\nทวีธาภิเษก\nทวีป\nทศ\nทศมี\nทศางค์\nทหระ\nทหาร\nทอ\nท่อ\nท้อ\nทอก\nทอง\nท่อง\nท้อง\nทองกวาว\nทองภู\nทองลิน\nทองหลาง\nทองโหลง\nทองอุไร\nทอด\nทอน\nท่อน\nทอนซิล\nทอฟฟี่\nท่อม\nทอย\nทอเรียม\nทะ\nทะงัน\nทะนง\nทะนน\nทะนาน\nทะนุ\nทะเบียน\nทะมัดทะแมง\nทะมึน\nทะมื่น\nทะแม่ง\nทะยาน\nทะเยอทะยาน\nทะแย\nทะร่อทะแร่\nทะลวง\nทะลอก\nทะลัก\nทะลาย\nทะลึ่ง\nทะลุ\nทะลุดทะลาด\nทะเล\nทะเล้น\nทะเล่อทะล่า\nทะเลาะ\nทะเลิ่กทะลั่ก\nทะวาย\nทัก\nทักข์\nทักขิญ\nทักขิณ\nทักขิณา\nทักขิณาวัฏ\nทักขิโณทก\nทักขิไณยบุคคล\nทักทิน\nทักษะ\nทักษา\nทักษิณ\nทักษิณา\nทักษิโณทก\nทัง\nทั่ง\nทั้ง\nทังวล\nทังวี้ทังวล\nทังสเตน\nทัณฑ์\nทัณฑกรรม\nทัณฑฆาต\nทัณฑสถาน\nทัณฑะ\nทัณฑิกา\nทัณฑิมา\nทัณฑีบท\nทัด\nทัดทา\nทัต\nทัน\nทันต์\nทันตชะ\nทันตแพทย์\nทันติน\nทันตี\nทันธ์\nทับ\nทับทิม\nทับสมิงคลา\nทัพ\nทัพพะ\nทัพพี\nทั่ว\nทัศ\nทัศน์\nทัศนะ\nทัศนา\nทัศนคติ\nทัศนวิสัย\nทัศนศาสตร์\nทัศนศิลป์\nทัศนศึกษา\nทัศนาการ\nทัศนาจร\nทัศนีย์\nทัศนียภาพ\nทัศนูปกรณ์\nทัศไนย\nทัสนานุตริยะ\nทัฬหะ\nทัฬหิ\nทัฬหี\nทา\nท่า\nท้า\nทาก\nทาง\nท้าง\nทาฐะ\nทาฐิกะ\nทาฒะ\nทาฒิกะ\nทาน\nท่าน\nทานต์\nทานพ\nทาบ\nทาม\nท่ามกลาง\nทาย\nท้าย\nทายก\nทายัช\nทายาด\nทายาท\nทายิกา\nทารก\nทารพี\nทาริกา\nทารุณ\nทาว\nท่าว\nท้าว\nทาส\nทาสี\nทำ\nทำนบ\nทำนอง\nทำนาย\nทำนุ\nทำนูล\nทำเนา\nทำเนียบ\nทำไม\nทำลาย\nทำเล\nทิคัมพร\nทิฆัมพร\nทิ้ง\nทิงเจอร์\nทิ้งถ่อน\nทิ้งทูด\nทิชะ\nทิชากร\nทิชาชาติ\nทิฏฐะ\nทิฏฐานุคติ\nทิฏฐุชุกรรม\nทิฐธรรม\nทิฐิ\nทิด\nทิต\nทิน\nทิพ\nทิพย์\nทิพา\nทิม\nทิ่ม\nทิมทอง\nทิว\nทิวงคต\nทิวทัศน์\nทิวา\nทิศ\nทิศา\nทิศานุทิศ\nที\nที่\nทีฆชาติ\nทีฆนิกาย\nทีฆสระ\nทีฆายุ\nทีป\nทีม\nทีเอ็นที\nทึก\nทึกทัก\nทึ่ง\nทึ้ง\nทึดทือ\nทึนทึก\nทึบ\nทึม\nทึ่ม\nทื่อ\nทุ\nทุก\nทุกข์\nทุกขลาภ\nทุกขเวทนา\nทุกขารมณ์\nทุกฏ\nทุกรกิริยา\nทุกะ\nทุกัง\nทุกูล\nทุคตะ\nทุคติ\nทุ่ง\nทุ้ง\nทุงงะ\nทุจริต\nทุด\nทุทรรศนนิยม\nทุนิยม\nทุน\nทุ่น\nทุนนิมิต\nทุบ\nทุบทู\nทุปปัญญา\nทุพพรรณ\nทุพพล\nทุพพลภาพ\nทุพภิกขภัย\nทุม\nทุ่ม\nทุ้ม\nทุย\nทุ้ย\nทุรกันดาร\nทุรชน\nทุรชาติ\nทุรพล\nทุรลักษณ์\nทุรน\nทุรนทุราย\nทุรัศ\nทุราคม\nทุราจาร\nทุเรศ\nทุเรียน\nทุลักทุเล\nทุเลา\nทุศีล\nทุสสะ\nทุสสีล\nทู\nทูโม่ง\nทู่\nทู้\nทูกัง\nทู่ซี้\nทูต\nทูตานุทูต\nทูน\nทูบ\nทูม\nทูล\nทูเลียม\nเท\nเท่\nเทคนิค\nเทคนีเชียม\nเทคโนโลยี\nเท้ง\nเท้งเต้ง\nเท็จ\nเทนนิส\nเทพ\nเทพา\nเทพารักษ์\nเทพยเจ้า\nเทพยดา\nเทพยุดา\nเทพิน\nเทพินทร์\nเทพี\nเทเพนทร์\nเทโพ\nเทริด\nเทลลูเรียม\nเทวทัณฑ์\nเทวดา\nเทวทูต\nเทวธรรม\nเทวนาครี\nเทวนิยม\nเทวรูป\nเทวโลก\nเทววิทยา\nเทวสถาน\nเทวศ\nเทวษ\nเทวัญ\nเทวัน\nเทวาลัย\nเทวินทร์\nเทวี\nเทเวศ\nเทเวศร์\nเทเวศวร์\nเทศ\nเทศะ\nเทศาภิบาล\nเทศน์\nเทศนา\nเทห์\nเท่ห์\nเทห์ฟากฟ้า\nเทหวัตถุ\nเท่อ\nเท้อ\nเทอญ\nเทอม\nเทอร์เบียม\nเทอร์โมมิเตอร์\nเทอะทะ\nเทา\nเท่า\nเท้า\nเท้ายายม่อม\nเท่ารึง\nเทิ่ง\nเทิด\nเทิน\nเทิบ\nเทิบทาบ\nเทิ้ม\nเที่ยง\nเทียด\nเทียน\nเที้ยน\nเทียบ\nเทียม\nเทียร\nเที้ยร\nเทียว\nเที่ยว\nเทือ\nเทื่อ\nเทื้อ\nเทือก\nแท้\nแท็กซี่\nแทง\nแท่ง\nแท้ง\nแท็งก์\nแทงทวย\nแทงวิสัย\nแทตย์\nแทน\nแท่น\nแทนเจนต์\nแทนทาลัม\nแทบ\nแทรก\nแทรกเตอร์\nแทลเลียม\nแทะ\nโท\nโท่\nโทกเทก\nโทง\nโทงเทง\nโทณะ\nโทน\nโทนโท่\nโทมนัส\nโทรคมนาคม\nโทรทรรศน์\nโทรทัศน์\nโทรพิมพ์\nโทรภาพ\nโทรเลข\nโทรศัพท์\nโทรสาร\nโทรม\nโทษ\nโทษา\nโทษานุโทษ\nโทสะ\nโทสาคติ\nโทโส\nโทหฬินี\nไท\nไท้\nไทเทเนียม\nไทเทรต\nไทย\nไทร\nไทวะ\nธง\nธงก์\nธชะ\nธชี\nธตรฐ\nธนบัตร\nธนสมบัติ\nธนสาร\nธนะ\nธนา\nธนาคม\nธนาคาร\nธนาณัติ\nธเนศ\nธโนปจัย\nธไนศวรรย์\nธนิต\nธนิษฐะ\nธนิษฐา\nธนุ\nธนุรวิทยา\nธนุรเวท\nธนู\nธม\nธมกรก\nธรณะ\nธรณิน\nธรณินทร์\nธรณิศ\nธรณิศร\nธรณิศวร์\nธรณี\nธรมาน\nธรรม\nธรรมนูญ\nธรรมยุต\nธรรมยุติกนิกาย\nธรรมะ\nธรรมาทิตย์\nธรรมาธรรม\nธรรมาธิปไตย\nธรรมาธิษฐาน\nธรรมานุสาร\nธรรมาภิมุข\nธรรมาภิสมัย\nธรรมายตนะ\nธรรมารมณ์\nธรรมาสน์\nธรรมิก\nธรา\nธราดล\nธราธร\nธราธาร\nธราธิบดี\nธราธิป\nธริษตรี\nธเรษตรี\nธเรศ\nธวัช\nธัช\nธัญ\nธัญญาหาร\nธันยา\nธันยาวาท\nธันวาคม\nธัมมะ\nธาดา\nธาตรี\nธาตวากร\nธาตุ\nธาตุโขภ\nธาตุมมิสสา\nธานิน\nธานินทร์\nธานี\nธาร\nธารกำนัล\nธารคำนัล\nธารณะ\nธารณา\nธารา\nธาษตรี\nธำมรงค์\nธำรง\nธิดา\nธิติ\nธีระ\nธุช\nธุดงค์\nธุดงควัตร\nธุต\nธุตตะ\nธุมเกตุ\nธุมา\nธุรการ\nธุรกิจ\nธุระ\nธุรำ\nธุลี\nธุวดารา\nธุวภาค\nธุวมณฑล\nธูป\nเธนุ\nเธอ\nเธียร\nโธ่\nโธวนะ\nนก\nนกุล\nนขลิขิต\nนขะ\nนขา\nนเคนทร์\nนโคทร\nนคร\nนครินทร์\nนคเรศ\nนง\nนงคุฐ\nนที\nนนตรา\nนนท์\nนันทน์\nนนทรี\nนนทลี\nนนทิ\nนบ\nนปุงสกลิงค์\nนปุงสกลึงค์\nนพ\nนพนิต\nนภจร\nนภดล\nนภศูล\nนภา\nนภาลัย\nนม\nนมตำเรีย\nนมตำเลีย\nนมะ\nนมัสการ\nนมาซ\nนยนะ\nนยนา\nนโยบาย\nนรชาติ\nนรเทพ\nนรนาถ\nนรบดี\nนรบาล\nนรสิงห์\nนรสีห์\nนรา\nนรากร\nนราธิป\nนรินทร์\nนริศ\nนริศร\nนริศวร\nนเรศ\nนเรศวร\nนเรศวร์\nนโรดม\nนรก\nนรกานต์\nนรการ\nนรี\nนฤเทพ\nนฤบดี\nนฤบาล\nนฤเบศ\nนฤปเวศม์\nนฤปัตนี\nนฤคหิต\nนฤนาท\nนฤมล\nนฤตย์\nนฤตยสถาน\nนฤพาน\nนฤมาณ\nนฤมิต\nนลาฏ\nนลิน\nนลินี\nนวกรรม\nนวการ\nนวกิจ\nนวนิยาย\nนวปฎล\nนวรัตน์\nนวโลหะ\nนวกะ\nนวโกวาท\nนวด\nนวม\nน่วม\nนวมี\nนวย\nนวล\nนวัตกรรม\nนวาระ\nนหารุ\nนหุต\nนฬการ\nนอ\nนอก\nนอง\nน่อง\nน้อง\nน่องแน่ง\nนอต\nนอน\nนอบ\nน้อม\nน้อย\nน้อยหน่า\nน้อยโหน่ง\nนะ\nนะแน่ง\nนัก\nนักขัต\nนักขัตฤกษ์\nนักษัตร\nนักสราช\nนัข\nนั่ง\nนังคัล\nนัจ\nนัฑ\nนัด\nนัดดา\nนัตถุ์\nนั่น\nนั้น\nนันททายี\nนันทนาการ\nนันทวัน\nนันทิ\nนับ\nนัย\nนัยน์\nนัยนา\nนัว\nนัวเนีย\nนา\nน่า\nน้า\nนาก\nนากบุด\nนากาสาหรี\nนาค\nนาคร\nนาคา\nนาคาวโลก\nนาคินทร์\nนาคี\nนาเคนทร์\nนาเคศวร\nนาง\nนางเกล็ด\nนางนวล\nนางนูน\nนางรม\nนางรำ\nนางล้อม\nนางเล็ด\nนางเลิ้ง\nนางหงส์\nนางอาย\nนางแอ่น\nนาฏ\nนาฏกะ\nนาด\nนาถ\nนาท\nนาที\nนาน\nน่าน\nนานัครส\nนานัปการ\nนานา\nนาเนก\nนาบ\nนาภี\nนาม\nนามานุกรม\nนามาภิไธย\nนาย\nน่าย\nนายก\nนายิกา\nนารา\nนารายณ์\nนารี\nนาเรศ\nนาลิวัน\nนาว\nน้าว\nนาวา\nนาวิก\nนาวิน\nนาวี\nนาเวศ\nนาศ\nนาสา\nนาสิก\nนาฬิกา\nนาฬิเก\nนาฬี\nนำ\nน้ำ\nน้ำละว้า\nน้ำว้า\nนิ\nนิกเกิล\nนิกขะ\nนิกร\nนิกรอยด์\nนิกาย\nนิคม\nนิครนถ์\nนิคหกรรม\nนิคหะ\nนิคหิต\nนิคาลัย\nนิเคราะห์\nนิโคติน\nนิโครธ\nนิโครม\nนิ่ง\nนิจ\nนิด\nนิตย์\nนิตยทาน\nนิตยภัต\nนิตยสาร\nนิติ\nนิทร\nนิทรรศการ\nนิทรา\nนิทรารมณ์\nนิทัศน์\nนิทาน\nนิเทศ\nนิธาน\nนิธิ\nนินทา\nนินนาท\nนินาท\nนิบาต\nนิปริยาย\nนิปัจการ\nนิพจน์\nนิพนธ์\nนิพพาน\nนิพพิทา\nนิพัทธ์\nนิพันธ์\nนิพิท\nนิเพท\nนิภา\nนิ่ม\nนิ้ม\nนิมนต์\nนิมมาน\nนิมมานรดี\nนิมิต\nนิยต\nนิยม\nนิยัตินิยม\nนิยาม\nนิยาย\nนิยุต\nนิรคุณ\nนิรชร\nนิรชรา\nนิรทุกข์\nนิรเทศ\nนิรโทษ\nนิรโทษกรรม\nนิรนัย\nนิรนาม\nนิรภัย\nนิรมล\nนิรมาน\nนิรัตศัย\nนิรันดร\nนิราพาธ\nนิรามัย\nนิรามิษ\nนิราศรัย\nนิรินธน์\nนิรมาณ\nนิรมิต\nนิรยบาล\nนิรัพพุท\nนิรา\nนิราศ\nนิรุกติ\nนิรุตติ\nนิรุทธ์\nนิโรธ\nนิล\nนิลุบล\nนิโลบล\nนิ่ว\nนิ้ว\nนิวคลิอิก\nนิวเคลียร์\nนิวเคลียส\nนิวตรอน\nนิวรณ์\nนิวัต\nนิวัตน์\nนิวาต\nนิวาส\nนิเวศ\nนิเวศน์\nนิศา\nนิษาท\nนิสัช\nนิสัชชาการ\nนิสัย\nนิสาท\nนิสิต\nนิสีทนสันถัต\nนิสีทนะ\nนิสีทนาการ\nนิเสธ\nนี่\nนี้\nนี่นัน\nนีรนาท\nนีออน\nนีโอดิเมียม\nนึก\nนึง\nนึ่ง\nนุง\nนุ่ง\nนุงนัง\nนุช\nนุต\nนุ่น\nนุ่ม\nนุ้ย\nนูน\nนู่น\nนู้น\nเนกขัม\nเนตบอล\nเนตร\nเนติ\nเน้น\nเนบิวลา\nเนปจูน\nเนปทูเนียม\nเนมิ\nเนย\nเนรกัณฐี\nเนรคุณ\nเนรเทศ\nเนรนาด\nเนรมิต\nเนระพูสี\nเนอ\nเน้อ\nเนา\nเน่า\nเนาวนิต\nเนาวรัตน์\nเนิน\nเนิ่น\nเนิบ\nเนียง\nเนียน\nเนียม\nเนียร\nเนียรทุกข์\nเนียรเทศ\nเนียรนาท\nเนื้อ\nเนือง\nเนื่อง\nเนือย\nแน่\nแน่ง\nแน่น\nแนบ\nแน่บ\nแนม\nแนว\nแน่ว\nแนะ\nแน่ะ\nแนะแหน\nโน\nโน้ต\nโนน\nโน่น\nโน้น\nโนเบเลียม\nโน้ม\nโนมพรรณ\nโนรา\nโนรี\nใน\nไน\nไนต์คลับ\nไนโตรเจน\nไนลอน\nไนโอเบียม\nบ่\nบก\nบง\nบ่ง\nบงก์\nบ๊งเบ๊ง\nบงสุ์\nบด\nบดินทร์\nบดี\nบถ\nบท\nบน\nบ่น\nบพิตร\nบพิธ\nบ่ม\nบรม\nบรมัตถ์\nบรรจง\nบรรจถรณ์\nบรรจบ\nบรรจวบ\nบรรจุ\nบรรเจิด\nบรรณ\nบรรดา\nบรรตานึก\nบรรถร\nบรรทม\nบรรทัด\nบรรทาน\nบรรทุก\nบรรเทา\nบรรเทือง\nบรรพ\nบรรพ์\nบรรพชา\nบรรพชิต\nบรรพต\nบรรยง\nบรรยงก์\nบรรยเวกษก์\nบรรยากาศ\nบรรยาย\nบรรลัย\nบรรลาย\nบรรลุ\nบรรเลง\nบรรโลม\nบรรษัท\nบรรสบ\nบรรสพ\nบรรสม\nบรรสาน\nบรรสาร\nบรรหาน\nบรรหาร\nบรอนซ์\nบรั่นดี\nบรัศว์\nบราลี\nบริกรรม\nบริการ\nบริขาร\nบริขารโจล\nบริคณห์\nบริจาค\nบริจาริกา\nบริเฉท\nบริชน\nบริดจ์\nบริบท\nบริบาล\nบริบูรณ์\nบริพนธ์\nบริพัตร\nบริพันธ์\nบริพาชก\nบริพาร\nบริภัณฑ์\nบริภาษ\nบริโภค\nบริมาส\nบริยาย\nบริรม\nบริรักษ์\nบริราช\nบริวรรต\nบริวาร\nบริวาส\nบริเวณ\nบริษัท\nบริสชน\nบริสุทธิ์\nบริหาร\nบล็อก\nบวก\nบวง\nบ่วง\nบวช\nบวน\nบ้วน\nบวบ\nบวม\nบ๊วย\nบวร\nบหลิ่ม\nบอ\nบ่อ\nบ้อ\nบอก\nบอง\nบ่อง\nบ้อง\nบ๊อง\nบ้องแบ๊ว\nบองหลา\nบอด\nบอน\nบ่อน\nบอบ\nบ้อม\nบ๋อม\nบ่อย\nบอระเพ็ด\nบอล\nบอลลูน\nบ้อหุ้น\nบ๊ะ\nบ๊ะจ่าง\nบะหมี่\nบัก\nบักโกรก\nบัคเตรี\nบัง\nบั้ง\nบังกะโล\nบังเกิด\nบังคน\nบังคม\nบังคล\nบังควร\nบังคับ\nบังคัล\nบังแทรก\nบังวาย\nบังเวียน\nบังสุกุล\nบังสุกูลิก\nบังสูรย์\nบังหวน\nบังเหตุ\nบังเหียน\nบังอร\nบังอวจ\nบังอาจ\nบังเอิญ\nบัญจก\nบัญชร\nบัญชา\nบัญชี\nบัญญัติ\nบัญหา\nบัฏ\nบัณฑร\nบัณฑิต\nบัณฑิตย์\nบัณฑุ\nบัณฑูร\nบัณเฑาะก์\nบัณเฑาะว์\nบัณณาส\nบัณรส\nบัณรสี\nบัด\nบัดกรี\nบัดซบ\nบัดสี\nบัตร\nบัทม์\nบัน\nบั่น\nบั้น\nบันจวบ\nบันดล\nบันดาล\nบันได\nบันทึก\nบันทึง\nบันเทิง\nบันยะบันยัง\nบันลือ\nบัปผาสะ\nบัพ\nบัพชา\nบัพพาชนียกรรม\nบัล\nบัลลพ\nบัลลังก์\nบัลลูน\nบัลเลต์\nบัว\nบา\nบ่า\nบ้า\nบาก\nบาง\nบ่าง\nบ้าง\nบาจรีย์\nบาซิลลัส\nบาด\nบาดทะจิต\nบาดทะพิษ\nบาดทะยัก\nบาดาล\nบาตร\nบาท\nบาทสกุณี\nบาทหลวง\nบาทาธึก\nบาทุกา\nบาน\nบ้าน\nบานชื่น\nบานเช้า\nบานบุรี\nบานไม่รู้โรย\nบานเย็น\nบ้าบ๋า\nบาป\nบาย\nบ่าย\nบ้าย\nบาร์\nบารนี\nบารมี\nบาร์เรล\nบาร์เลย์\nบารอมิเตอร์\nบ้าระบุ่น\nบาเรียน\nบาเรียม\nบาล\nบาลี\nบ่าว\nบ่าวขุน\nบาศ\nบาศก์\nบาสเกตบอล\nบาหลี\nบ๋ำ\nบำเทิง\nบำนาญ\nบำบวง\nบำบัด\nบำเพ็ญ\nบำราบ\nบำราศ\nบำรุง\nบำรู\nบำเรอ\nบำหยัด\nบำเหน็จ\nบิ\nบิฐ\nบิณฑบาต\nบิด\nบิดร\nบิดหล่า\nบิดา\nบิตุ\nบิตุจฉา\nบิตุรงค์\nบิตุเรศ\nบิตุลา\nบิน\nบิ่น\nบินยา\nบิลเลียด\nบิวเรตต์\nบิสมัท\nบี้\nบีฑา\nบีตา\nบีบ\nบีเยศ\nบึก\nบึกบึน\nบึง\nบึ่ง\nบึ้ง\nบุ\nบุก\nบุคคล\nบุคลากร\nบุคลาธิษฐาน\nบุคลิก\nบุง\nบุ่ง\nบุ้ง\nบุ้งกี๋\nบุญ\nบุญญาธิการ\nบุญญานุภาพ\nบุญญาภินิหาร\nบุญญาภิสังขาร\nบุณฑริก\nบุณมี\nบุณย์\nบุตร\nบุตรี\nบุถุชน\nบุทคล\nบุนนาค\nบุบ\nบุบบิบ\nบุปผชาติ\nบุพกรรม\nบุพการี\nบุพกิจ\nบุพชาติ\nบุพทักษิณ\nบุพนิมิต\nบุพบท\nบุพพาจารย์\nบุพเพสันนิวาส\nบุพโพ\nบุ๋ม\nบุ่มบ่าม\nบุ้ย\nบุรณะ\nบุรพทิศ\nบุรพบท\nบุรพาจารย์\nบูรพาจารย์\nบุระ\nบุราณ\nบุรินทร์\nบุริมทิศ\nบุริมพรรษา\nบุริมสิทธิ\nบุรี\nบุรุษ\nบุโรทั่ง\nบุษกร\nบุษบก\nบุษบง\nบุษบัน\nบุษบา\nบุษบามินตรา\nบุษปราค\nบุษปะ\nบุษย์\nบุษย์น้ำทอง\nบุษยมาส\nบุษยะ\nบุษราคัม\nบุหงัน\nบุหงา\nบุหรง\nบุหรี่\nบุหลัน\nบู่\nบู้\nบูชนียสถาน\nบูชา\nบูชิต\nบูด\nบูดู\nบูร\nบูรณ์\nบูรณภาพ\nบูรณมี\nบูรณะ\nบูรณาการ\nบูรพ์\nบูรพะ\nบูรพา\nเบ้\nเบ่ง\nเบ๊จี๋\nเบญกานี\nเบญจกัลยาณี\nเบญจกามคุณ\nเบญจขันธ์\nเบญจดุริยางค์\nเบญจธรรม\nเบญจบรรพต\nเบญจพรรณ\nเบญจเพส\nเบญจมาศ\nเบญจรงค์\nเบญจศก\nเบญจศีล\nเบญจะ\nเบญจา\nเบญจางค์\nเบญจางคประดิษฐ์\nเบญญา\nเบญพาด\nเบ็ด\nเบ็ดเตล็ด\nเบ็ดเสร็จ\nเบน\nเบนซิน\nเบรก\nเบริลเลียม\nเบส\nเบ้อ\nเบอร์\nเบอร์คีเลียม\nเบ้อเร่อ\nเบ้อเร่อเท่อ\nเบ้อเริ่ม\nเบ้อเริ่มเทิ่ม\nเบอะ\nเบอะบะ\nเบะ\nเบา\nเบ้า\nเบาราณ\nเบาะ\nเบิก\nเบิ่ง\nเบี้ย\nเบี่ยง\nเบียด\nเบียน\nเบียร์\nเบี้ยว\nเบือ\nเบื่อ\nเบื้อ\nเบื้อง\nเบือน\nแบ\nแบ้\nแบก\nแบคทีเรีย\nแบ่ง\nแบงก์\nแบดมินตัน\nแบตเตอรี่\nแบน\nแบนโจ\nแบบ\nแบ็บ\nแบเรียม\nแบหลา\nแบะ\nโบ\nโบ้\nโบ๋\nโบก\nโบกขรณี\nโบกขรพรรษ\nโบชุก\nโบต\nโบนัส\nโบ๊เบ๊\nโบย\nโบรมีน\nโบรอน\nโบราณ\nโบสถ์\nใบ\nใบ้\nไบ่\nปก\nปกติ\nปกรณ์\nปกรณัม\nปกิณกะ\nปกีรณัม\nปโกฏิ\nปง\nป่ง\nปงช้าง\nปฎล\nปฏัก\nปฏิกรณ์\nปฏิกรรม\nปฏิการะ\nปฏิกิริยา\nปฏิกูล\nปฏิคม\nปฏิคหิต\nปฏิคาหก\nปฏิฆะ\nปฏิชีวนะ\nปฏิญญา\nปฏิญาณ\nปฏิทิน\nปฏิบถ\nปฏิบัติ\nปฏิปทา\nปฏิปักษ์\nปฏิปัน\nปฏิปุจฉาพยากรณ์\nปฏิปุจฉาวาที\nปฏิพัทธ์\nปฏิพากย์\nปฏิภาค\nปฏิภาณ\nปฏิมา\nปฏิมากร\nปฏิยุทธ์\nปฏิรพ\nปฏิรูป\nปฏิโลม\nปฏิวัติ\nปฏิวาต\nปฏิวาท\nปฏิเวธ\nปฏิสนธิ\nปฏิสวะ\nปฏิสังขรณ์\nปฏิสันถาร\nปฏิสัมภิทา\nปฏิเสธ\nปฐพี\nปฐม\nปฐวี\nปณต\nปณาม\nปณิธาน\nปณิธิ\nปณีต\nปด\nปดิวรัดา\nปติ\nปถพี\nปถมัง\nปถวี\nปทัฏฐาน\nปทัสถาน\nปทานุกรม\nปทีป\nปทุม\nปน\nป่น\nปนัดดา\nปปัญจะ\nปม\nปรนัย\nปรปักษ์\nปรโลก\nปรวาที\nปรก\nปรกติ\nปรง\nปรตยักษ์\nปรน\nปรนนิบัติ\nปรนิมมิตวสวัตดี\nปรบ\nปรปักษ์\nปรมัตถ์\nปรมาจารย์\nปรมาณู\nปรมาภิไธย\nปรมาภิเษก\nปรมินทร์\nบรเมนทร์\nปรเมศวร์\nปรเมษฐ์\nปรวด\nปรวนแปร\nปรศุ\nปรสิต\nปร๋อ\nปรองดอง\nปรอด\nปรอท\nปรอย\nประ\nประกบ\nประกฤต\nประกฤติ\nประกล\nประกวด\nประกวดประขัน\nประกอบ\nประกัน\nประกับ\nประกาย\nประกายพรึก\nประการ\nประกาศ\nประกาศนียบัตร\nประกาศิต\nประกำ\nประกิด\nประกิต\nประคด\nประคนธรรพ\nประคนธรรพ์\nประคบ\nประคบประหงม\nประคอง\nประคับประคอง\nประคัลภ์\nประคำ\nประคิ่น\nประคุณ\nประเคน\nประเคราะห์\nประโคน\nประโคนธรรพ\nประโคนธรรพ์\nประโคม\nประจง\nประจญ\nประจบ\nประจบประแจง\nประจวบ\nประจ๋อประแจ๋\nประจักษ์\nประจักษนิยม\nประจัญ\nประจัน\nประจาก\nประจาค\nประจาน\nประจำ\nประจิม\nประจิ้มประเจ๋อ\nประจุ\nประจุคมน์\nประจุบัน\nประเจก\nประเจิด\nประเจิดประเจ้อ\nประเจียด\nประแจ\nประชด\nประชน\nประชวม\nประชวร\nประชัน\nประชา\nประชาธิปไตย\nประชิด\nประชี\nประชุม\nประเชิญ\nประณต\nประณม\nประณาม\nประณิธาน\nประณิธิ\nประณีต\nประณุท\nประดง\nประดน\nประดวน\nประดอน\nประดอย\nประดัก\nประดักประเดิด\nประดัง\nประดับ\nประดา\nประดาก\nประดาป\nประดาษ\nประดิชญา\nประดิดประดอย\nประดิทิน\nประดิษฐ์\nประดิษฐกรรม\nประดิษฐาน\nประดุง\nประดุจ\nประดู่\nประเด\nประเด็น\nประเดิม\nประเดียง\nประเดี๋ยว\nประเดี๋ยวประด๋าว\nประแดง\nประแดะ\nประโดง\nประโดย\nประตง\nประตัก\nประตาป\nประติชญา\nประติญาณ\nประติทิน\nประติมากร\nประติมากรรม\nประติรพ\nประตู\nประถม\nประถมจินดา\nประทม\nประท้วง\nประทวน\nประทักษ์\nประทักษิณ\nประทัง\nประทัด\nประทับ\nประทาน\nประทาย\nประทาศี\nประทิน\nประทิ่น\nประทีป\nประทุฐ\nประทุน\nประทุษ\nประทุษฐ์\nประเทศ\nประเทา\nประเทียด\nประเทียบ\nประเทือง\nประธาน\nประธานาธิบดี\nประนม\nประนอ\nประนอม\nประนัง\nประนัปดา\nประนีประนอม\nประปราน\nประปราย\nประปา\nประเปรี้ยง\nประเปรียว\nประพจน์\nประพนธ์\nประพรม\nประพฤติ\nประพฤทธิ์\nประพัด\nประพัทธ์\nประพันธ์\nประพาต\nประพาส\nประพาสมหรณพ\nประพาฬ\nประพิณ\nประพิมพ์ประพาย\nประพุทธ์\nประเพณี\nประโพธ\nประไพ\nประไพร\nประภพ\nประภัสสร\nประภา\nประภาคาร\nประภาพ\nประภาษ\nประภาส\nประเภท\nประมง\nประมวล\nประมาณ\nประมาท\nประมุข\nประมุท\nประมูล\nประเมิน\nประโมง\nประโมทย์\nประยงค์\nประยุกต์\nประยุทธ์\nประยุร\nประยูร\nประโยค\nประโยชน์\nประโรหิต\nประลมพ์\nประลอง\nประลัย\nประลาต\nประลาย\nประลุ\nประเล่ห์\nประเล้าประโลม\nประโลม\nประวรรต\nประวรรตน์\nประวัติ\nประวาล\nประวาลปัทม์\nประวาส\nประวิง\nประวิช\nประวิตร\nประวิน\nประวีณ\nประเวณี\nประเวศ\nประเวศน์\nประศม\nประศาสน์\nประศุ\nประสก\nประสงค์\nประสบ\nประสพ\nประสม\nประสะ\nประสัก\nประสันนาการ\nประสัยห์\nประสา\nประสาท\nประสาธน์\nประสาน\nประสาร\nประสิทธิ์\nประสิทธิผล\nประสิทธิภาพ\nประสีประสา\nประสูต\nประสูติ\nประเสบัน\nประเสบันอากง\nประเสริฐ\nประหนึ่ง\nประหม่า\nประหยัด\nประหลาด\nประหล่ำ\nประหวัด\nประหวั่น\nประหัตประหาร\nประหาณ\nประหาร\nประเหล\nประเหส\nประไหมสุหรี\nประอบ\nประอร\nปรัก\nปรักปรำ\nปรักมะ\nปรัง\nปรัชญา\nปรัตถจริยา\nปรัตยุบัน\nปรัน\nปรับ\nปรัมปรา\nปรัศจิม\nปรัศนา\nปรัศนี\nปรัศว์\nปรัสสบท\nปร่า\nปรากฏ\nปรากรม\nปรากฤต\nปราการ\nปราง\nปรางค์\nปราจีน\nปราชญ์\nปราชญา\nปราชัย\nปราณ\nปราณี\nปราด\nปราน\nปรานี\nปราบ\nปราบดาภิเษก\nปราปต์\nปราม\nปรามาส\nปราโมช\nปราโมทย์\nปราย\nปรารถนา\nปรารภ\nปรารมภ์\nปราศ\nปราศจาก\nปราศรัย\nปราษณี\nปราษาณ\nปราสัย\nปราสาท\nปรำ\nปริ\nปริก\nปริกขาร\nปริกรรม\nปริกัป\nปริคณห์\nปริจาค\nปริจาริกา\nปริเฉท\nปริชน\nปริซึม\nปริญญา\nปริณาม\nปริณายก\nปริต\nปริตตะ\nปริตโตทก\nปริตร\nปริทรรศน์\nปริทัยหัคคี\nปริทัศน์\nปริเทพ\nปริเทวะ\nปรินิพพาน\nปริบ\nปริบท\nปริปันถ์\nปริพนธ์\nปริพัตร\nปริพันธ์\nปริพาชก\nปริภัณฑ์\nปริภาษ\nปริภูมิ\nปริโภค\nปริ่ม\nปริมณฑล\nปริมาณ\nปริมาตร\nปริยัติ\nปริยานุช\nปริยาย\nปริเยศ\nปริโยสาน\nปริวรรต\nปริวัตร\nปริวาร\nปริวาส\nปริวิตก\nปริเวณ\nปริศนา\nปริษัท\nปริสัญญู\nปริสุทธิ\nปริหาน\nปริหาร\nปรี่\nปรีชญา\nปรีชา\nปรี๊ด\nปรีดา\nปรีดิ\nปรีดิ์\nปรีดี\nปรีติ\nปรียะ\nปรียา\nปรึก\nปรึกษา\nปรึง\nปรือ\nปรื๋อ\nปรุ\nปรุง\nปรู\nปรู๋\nปรูด\nปรู๊ด\nปรู๊ดปร๊าด\nปรู๊ฟ\nปฤงคพ\nปฤจฉา\nปฤษฎางค์\nปฤษฐ\nปลก\nปลกเปลี้ย\nปลง\nปล่ง\nปลด\nปล้น\nปลวก\nปลอก\nปล่อง\nปล้อง\nปลอด\nปล้อน\nปลอบ\nปลอม\nปล่อย\nปละ\nปลัก\nปลั๊ก\nปลัง\nปลั่ง\nปลัด\nปลัดขิก\nปลา\nปลาต\nปลาบ\nปลาย\nปลาสเตอร์\nปลาสนาการ\nปล้ำ\nปลิง\nปลิด\nปลิ้น\nปลิโพธ\nปลิม\nปลิ่ม\nปลิว\nปลี\nปลีก\nปลื้ม\nปลุก\nปลูก\nปวกเปียก\nปวง\nป่วง\nปวด\nป่วน\nป้วน\nป้วนเปี้ยน\nป่วย\nปวัตน์\nปวารณา\nปวาล\nปวาส\nปวาฬ\nปวิช\nปวิตร\nปวิธ\nปวิเวก\nปวีณ\nปวุติ\nปเวณี\nปเวส\nปเวสน์\nปศุ\nปสันนะ\nปสันนาการ\nปสาท\nปสาน\nปสาสน์\nปสุ\nปสุต\nปสูติ\nปหังสนะ\nปหาน\nปหาร\nปหาส\nปอ\nป้อ\nป๋อ\nปอก\nปอง\nป่อง\nป้อง\nปอด\nปอน\nป้อน\nปอนด์\nปอเนาะ\nปอบ\nป้อแป้\nปอม\nป้อม\nป๋อม\nปอย\nป้อย\nป้อยอ\nปะ\nปะกน\nปะกัง\nปะการัง\nปะกำ\nปะขาว\nปะงาบ\nปะตาปา\nปะตาระกาหลา\nปะติดปะต่อ\nปะติยาน\nปะทะ\nปะทะปะทัง\nปะทุ\nปะทุน\nปะปน\nปะมง\nปะราลี\nปะรำ\nปะไร\nปะลอม\nปะเลง\nปะแล่ม\nปะโลง\nปะวะหล่ำ\nปะหงับ\nปะหนัน\nปะหัง\nปะเหลาะ\nปัก\nปักข์\nปักเป้า\nปักษ์\nปักษา\nปักษิน\nปักษี\nปัง\nปั๋ง\nปังสุ์\nปังสุกุล\nปัจจัตตะ\nปัจจันต์\nปัจจันตคาม\nปัจจันตชนบท\nปัจจันตประเทศ\nปัจจัย\nปัจจามิตร\nปัจจุคมน์\nปัจจุทธรณ์\nปัจจุบัน\nปัจจุสมัย\nปัจเจก\nปัจโจปการกิจ\nปัจฉา\nปัจฉิม\nปัจถรณ์\nปัจนึก\nปัจยาการ\nปัจเวกขณ์\nปัชชุน\nปัญจนที\nปัญจวัคคีย์\nปัญจก\nปัญจกะ\nปัญจมี\nปัญจวีสติ\nปัญญัติ\nปัญญา\nปัญหา\nปัฏ\nปัฏนะ\nปัฐยาวัต\nปัณฑรหัตถี\nปัณณะ\nปัณณาส\nปัณณาสก์\nปัณรสี\nปัณหิ\nปัด\nปัตคาด\nปัตตะ\nปัตตานึก\nปัตตานุโมทนา\nปัตตาเวีย\nปัตติ\nปัตติก\nปัตถร\nปัตถะ\nปัตนิ\nปัตนี\nปัตหล่า\nปัถพี\nปัถวี\nปัทม์\nปัทมะ\nปัทมาสน์\nปัน\nปั่น\nปั้น\nปั้นจั่น\nปันจุเหร็จ\nปั้นลม\nปั้นหยา\nปั้นเหน่ง\nปับ\nปั๊บ\nปัปผาสะ\nปัพพาชนียกรรม\nปัพภาระ\nปั๊ม\nปัยกา\nปัยยิกา\nปัวเปีย\nปัศจิม\nปัศตัน\nปัสสาวะ\nปัสสาสะ\nปา\nป่า\nป้า\nปาก\nปาง\nป้าง\nปาจรีย์\nปาจิตตีย์\nปาจีน\nปาฏลิ\nปาฏิบท\nปาฏิบุคลิก\nปาฏิโภค\nปาฏิหาริย์\nปาฐก\nปาฐกถา\nปาฐะ\nปาณกชาติ\nปาณะ\nปาณาติบาต\nปาณิ\nปาณี\nปาด\nปาติโมกข์\nปาตี\nปาเต๊ะ\nปาท่องโก๋\nปาทังกา\nปาทาน\nปาทุกา\nปาน\nป่าน\nป้าน\nปานะ\nปานียะ\nป้าบ\nป๊าบ\nปาพจน์\nปาม\nปาโมกข์\nป่าย\nป้าย\nปายาส\nปาร์เกต์\nปารมี\nปารเมศ\nปาราชิก\nปาริฉัตร\nปาริชาต\nปารุสกวัน\nปาล\nปาล์ม\nปาลิไลยก์\nปาลี\nปาว\nป่าว\nป๊าว\nปาวาร\nปาษาณ\nปาส\nปาสาณ\nปาสาทิกะ\nปาหนัน\nปาหี่\nปำ\nป้ำ\nป้ำเป๋อ\nปิกนิก\nปิ้ง\nปิงคละ\nปิงปอง\nปิฎก\nปิฏฐะ\nปิฐิ\nปิณฑะ\nปิด\nปิตตะ\nปิตา\nปิตามหัยกา\nปิตามหัยยิกา\nปิตุ\nปิตุจฉา\nปิตุภูมิ\nปิตุลา\nปิโตรเลียม\nปิ่น\nปิ่นแก้ว\nปิ่นโต\nปิปผลี\nปิ่ม\nปิ้ม\nปิยะ\nปิยังคุ\nปิโยรส\nปิลันธน์\nปิ๋ว\nปิศาจ\nปิหกะ\nปี\nปี่\nปี้\nปี๋\nปีก\nปีฐะ\nปี๊ด\nปีติ\nปีน\nปีบ\nปี๊บ\nปีศาจ\nปีฬกะ\nปึก\nปึง\nปึ่ง\nปึ๋ง\nปึ้ด\nปึมปื้อ\nปืน\nปื้น\nปือ\nปื้อ\nปื๋อ\nปุ\nปุ๊\nปุก\nปุกปุย\nปุคละ\nปุ้งกี๋\nปุงควะ\nปุงลิงค์\nปุงลึงค์\nปุจฉา\nปุฏะ\nปุณฑริก\nปุด\nปุตตะ\nปุถุชน\nปุนนาค\nปุนภพ\nปุนัพสุ\nปุบ\nปุ๊บ\nปุปผะ\nปุปะ\nปุพพะ\nปุ่ม\nปุ่มป่ำ\nปุ้ม\nปุ๋ม\nปุย\nปุ้ย\nปุ๋ย\nปุรณะ\nปุระ\nปุราณ\nปุราณะ\nปุริมพรรษา\nปุเรจาริก\nปุโรหิต\nปุลลิงค์\nปุลลึงค์\nปุลินท์\nปุโลปุเล\nปุษยะ\nปุสสะ\nปู\nปู่\nปูชกะ\nปูชนียบุคคล\nปูชนียวัตถุ\nปูชนียะ\nปูชา\nปูชิต\nปูด\nปูน\nปูม\nปู้ยี่ปู้ยำ\nปูระ\nปูลู\nเป้\nเป๋\nเปก\nเป๊ก\nเป่ง\nเป้ง\nเป๋ง\nเป็ด\nเปตพลี\nเปตอง\nเป็น\nเปยยาล\nเปร็ง\nเปรต\nเปรม\nเปรย\nเปรอ\nเปรอะ\nเปราะ\nเปรียง\nเปรี้ยง\nเปรี้ยงปร้าง\nเปรียญ\nเปรียบ\nเปรี่ยม\nเปรียว\nเปรี้ยว\nเปรียะ\nเปรี๊ยะ\nเปรื่อง\nเปรื้อย\nเปล\nเปล่ง\nเปลว\nเปลา\nเปล่า\nเปล้า\nเปลาะ\nเปลี้ย\nเปลี่ยน\nเปลี่ยม\nเปลี่ยว\nเปลือก\nเปลือง\nเปลื้อง\nเปลือย\nเปศะ\nเปศัส\nเปสการ\nเปสละ\nเปสุญวาท\nเป๋อ\nเป้อเย้อ\nเปอร์\nเปอร์เซ็นต์\nเปะ\nเปา\nเป่า\nเป้า\nเป๊า\nเป๋า\nเป๋าฮื้อ\nเปาะ\nเป๊าะ\nเปาะเปี๊ยะ\nเปาะแปะ\nเปิก\nเปิง\nเปิงมาง\nเปิด\nเปิ่น\nเปิบ\nเปิ๊บ\nเปีย\nเปียก\nเปี๊ยก\nเปี๊ยบ\nเปี่ยม\nเปี้ยว\nเปี๊ยว\nเปียะ\nเปี๊ยะ\nเปือก\nเปื้อน\nเปื่อย\nแป\nแป้ง\nแป๋ง\nแปด\nแป๊ด\nแปทู\nแป้น\nแป๊น\nแปบ\nแป๊บ\nแปม\nแปร\nแปร๋\nแปรก\nแปรง\nแปร่ง\nแปร๊ด\nแปร้น\nแปร๋น\nแปรปรวน\nแประ\nแปล\nแปล้\nแปลก\nแปลง\nแปลน\nแปลบ\nแปล๊บ\nแป้ว\nแป๊ว\nแปะ\nแป๊ะ\nแป๊ะซะ\nโป\nโป่\nโป้\nโป๊\nโปก\nโป๊ก\nโป๊กเกอร์\nโปกขรณี\nโปกขรพรรษ\nโปเก\nโปง\nโป่ง\nโป้ง\nโป่งข่าม\nโปงลาง\nโป่งวิด\nโปฐบท\nโปฐปทมาส\nโปดก\nโปตถกะ\nโปน\nโป๊ป\nโป๊ยเซียน\nโปรแกรม\nโปรง\nโปร่ง\nโปรด\nโปรตอน\nโปรตีน\nโปรเตสแตนต์\nโปรแทรกเตอร์\nโปรย\nโปล่ง\nโปลิโอ\nโปโล\nโปสก\nโปสต์การ์ด\nโปะ\nโป๊ะ\nโป๊ะจ้าย\nไป\nไป่\nไป๋\nไปยาล\nไปรษณีย์\nไปรษณียบัตร\nไปรษณียภัณฑ์\nไปรษณียากร\nไปล่\nไปศาจ\nผก\nผกา\nผกาย\nผคม\nผง\nผงก\nผงม\nผงะ\nผงาด\nผง่าน\nผจง\nผจญ\nผจัญ\nผจาน\nผชุม\nผณิน\nผณินทร\nผณิศวร\nผด\nผดุง\nผเดิน\nผทม\nผนวก\nผนวช\nผนัง\nผนิด\nผนึก\nผม\nผยอง\nผรณาปีติ\nผรสุ\nผริต\nผรุสวาท\nผล\nผลคุน\nผลคุนี\nผล็อย\nผละ\nผลัก\nผลัด\nผลับ\nผลัวะ\nผลา\nผลาญ\nผลานิสงส์\nผลาผล\nผลาหาร\nผลิ\nผลิกะ\nผลิต\nผลิน\nผลี\nผลีผลาม\nผลึก\nผลึ่ง\nผลือ\nผลุ\nผลุง\nผลุด\nผลุน\nผลุนผลัน\nผลุบ\nผลุบผลับ\nผลุย\nผลู\nผวน\nผวย\nผวา\nผสม\nผสาน\nผอง\nผ่อง\nผ่อน\nผอบ\nผอม\nผ็อย\nผอูน\nผะ\nผะดา\nผะสา\nผัก\nผัคคุณ\nผัคคุณี\nผัง\nผัด\nผัน\nผับ\nผัว\nผัวะ\nผัสสะ\nผัสสาหาร\nผา\nผ่า\nผ้า\nผาก\nผาง\nผ่าง\nผาณิต\nผาด\nผาติ\nผ่าน\nผาม\nผาย\nผ่ายผอม\nผาล\nผาลคุน\nผาลา\nผ่าว\nผาสุก\nผ้าฮาด\nผำ\nผ้ำ\nผิ\nผิง\nผิด\nผิตะ\nผิน\nผิว\nผี\nผี้ว์\nผึง\nผึ่ง\nผึ้ง\nผึ้งรวง\nผืน\nผื่น\nผุ\nผุด\nผุยผง\nผุสราคา\nผู้\nผูก\nเผ\nเผง\nเผชิญ\nเผ็ด\nเผด็จ\nเผดิม\nเผดียง\nเผ่น\nเผนิก\nเผย\nเผยอ\nเผยิบ\nเผยิบผยาบ\nเผล\nเผล่\nเผล็ด\nเผลอ\nเผลอไผล\nเผละ\nเผลาะ\nเผลาะแผละ\nเผลียง\nเผอเรอ\nเผอิญ\nเผอิล\nเผะ\nเผา\nเผ่า\nเผ้า\nเผาะ\nเผิ้ง\nเผิน\nเผียน\nเผือ\nเผื่อ\nเผือก\nเผือด\nเผือน\nเผื่อน\nแผ่\nแผก\nแผง\nแผด\nแผน\nแผ่น\nแผนก\nแผล\nแผลง\nแผล็บ\nแผล็ว\nแผละ\nแผ่ว\nแผ้ว\nโผ\nโผง\nโผฏฐัพพะ\nโผน\nโผเผ\nโผย\nโผล่\nโผลกเผลก\nโผละ\nโผอน\nโผะ\nไผ\nไผ่\nไผท\nฝน\nฝรั่ง\nฝรั่งเศส\nฝ่อ\nฝอย\nฝัก\nฝัง\nฝั่ง\nฝัด\nฝัน\nฝา\nฝ่า\nฝ้า\nฝาก\nฝาง\nฝาด\nฝาน\nฝาย\nฝ่าย\nฝ้าย\nฝิ่น\nฝี\nฝี่\nฝีก\nฝึก\nฝืด\nฝืน\nฝุ่น\nฝูง\nเฝ้า\nเฝือ\nเฝือก\nเฝือง\nเฝื่อน\nแฝก\nแฝง\nแฝด\nใฝ่\nไฝ\nพก\nพกุล\nพง\nพงศ์\nพงศกร\nพงศธร\nพงศา\nพงศาวดาร\nพจน์\nพจนา\nพจนานุกรม\nพจนารถ\nพจนีย์\nพจมาน\nพจี\nพชระ\nพญา\nพญาลอ\nพณิช\nพณิชย์\nพดด้วง\nพธู\nพนันดร\nพนาดร\nพนาดอน\nพนาราม\nพนาลัย\nพนาลี\nพนาวาส\nพนาเวศ\nพนาศรม\nพนาสณฑ์\nพนาสัณฑ์\nพเนจร\nพ่น\nพ้น\nพนม\nพนอง\nพนอม\nพนัก\nพนักงาน\nพนัง\nพนัน\nพนัส\nพนา\nพนาย\nพนิดา\nพนิต\nพบ\nพม่า\nพยนต์\nพยศ\nพยัก\nพยักพเยิด\nพยัคฆ์\nพยัคฆา\nพยัคฆิน\nพยัคฆี\nพยัชน์\nพยัญชนะ\nพยัต\nพยับ\nพยากรณ์\nพยาฆร์\nพยางค์\nพยาธิ\nพยาน\nพยาบาท\nพยาบาล\nพยาม\nพยามะ\nพยายาม\nพยุ\nพยุง\nพยุหยาตรา\nพยุหโยธา\nพยุหเสนา\nพยุหะ\nพยู่ห์\nพเยีย\nพร\nพรต\nพรม\nพรรค\nพรรค์\nพรรคานต์\nพรรณ\nพรรณนา\nพรรดึก\nพรรลาย\nพรรษ\nพรรษา\nพรรเอิญ\nพรวด\nพรวน\nพรหม\nพรหมจรรย์\nพรหมจาริณี\nพรหมจารี\nพรหมา\nพรหมาสตร์\nพรหมินทร์\nพรอก\nพร่อง\nพร้อง\nพรอด\nพร้อม\nพร้อมพรัก\nพร่อย\nพร้อย\nพระ\nพระนอม\nพระนาด\nพระฮาม\nพรักพร้อม\nพรั่ง\nพรัด\nพรั่น\nพรับ\nพร่า\nพร้า\nพราก\nพราง\nพร่าง\nพราด\nพราน\nพราย\nพราว\nพราหมณ์\nพราหมณะ\nพราหมณี\nพราหมี\nพรำ\nพร่ำ\nพริก\nพริ้ง\nพริบ\nพริ้ม\nพรึง\nพรึน\nพรึบ\nพรึ่บ\nพรืด\nพรุ\nพรุ่ง\nพรุน\nพรู\nพรูด\nพฤกษ์\nพฤกษชาติ\nพฤกษเทวดา\nพฤกษราช\nพฤกษศาสตร์\nพฤกษา\nพฤฒ\nพฤฒา\nพฤฒาจารย์\nพฤฒิ\nพฤต\nพฤติ\nพฤทธ์\nพฤทธิ์\nพฤนต์\nพฤนท์\nพฤศจิก\nพฤศจิกายน\nพฤษภ\nพฤษภาคม\nพฤหัสบดี\nพล\nพละ\nพลากร\nพลาดิศัย\nพลาธิการ\nพลานามัย\nพลบ\nพลวก\nพลวง\nพลวัต\nพลศาสตร์\nพลอ\nพล้อ\nพลอง\nพลอด\nพลอน\nพลอมแพลม\nพลอย\nพล่อย\nพลั่ก\nพลัง\nพลั่ง\nพลั้ง\nพลัด\nพลัน\nพลับ\nพลับพลา\nพลับพลึง\nพลั่ว\nพล่า\nพลาง\nพลาญ\nพลาด\nพล่าน\nพลาม\nพล่าม\nพลาย\nพลาสติก\nพลาสมา\nพลาหก\nพลำ\nพล้ำ\nพลำภัง\nพลิก\nพลิพัท\nพลิ้ว\nพลี\nพลุ\nพลุก\nพลุ่ก\nพลุกพล่าน\nพลุ่ง\nพลุ้ย\nพลู\nพลูโต\nพลูโทเนียม\nพวก\nพวง\nพ่วง\nพวน\nพวย\nพสก\nพสุ\nพสุธา\nพสุสงกรานต์\nพหล\nพหุ\nพหุล\nพหู\nพอ\nพ่อ\nพ้อ\nพอก\nพอง\nพ้อง\nพอน\nพ้อม\nพอโลเนียม\nพะ\nพะงา\nพะงาบ\nพะจง\nพะทำมะรง\nพะนอ\nพะเน้าพะนอ\nพะเนิน\nพะเนียง\nพะแนง\nพะพาน\nพะพิง\nพะเพิง\nพะยอม\nพ่ะย่ะค่ะ\nพะยูง\nพะยูน\nพะเยิบ\nพะเยิบพะยาบ\nพะรุงพะรัง\nพะโล้\nพะไล\nพะวง\nพะวักพะวน\nพะวา\nพะว้าพะวัง\nพะอง\nพะอากพะอำ\nพะอืดพะอม\nพัก\nพักตร์\nพักตรา\nพักร\nพัง\nพังกา\nพังงา\nพังผืด\nพังพวย\nพังพอน\nพังพาน\nพังพาบ\nพังเพย\nพัช\nพัชนี\nพัชระ\nพัญจน์\nพัฒนะ\nพัฒนา\nพัฒนากร\nพัฒนาการ\nพัด\nพัดชา\nพัดดึงส์\nพัตร\nพัทธ์\nพัทธยา\nพัทธสีมา\nพัทร\nพัน\nพันตู\nพันทาง\nพันธ์\nพันธะ\nพันธกรณี\nพันธบัตร\nพันธมิตร\nพันธนะ\nพันธนาคาร\nพันธนาการ\nพันธุ์\nพันธุกรรม\nพันลึก\nพันลือ\nพันเลิศ\nพันเอิญ\nพับ\nพัลลภ\nพัลวัน\nพัว\nพัวะ\nพัศดี\nพัสดุ\nพัสตร์\nพัสถาน\nพา\nพาก\nพากเพียร\nพากย์\nพาง\nพ่าง\nพาชี\nพาณิช\nพาณิชย์\nพาณิชยกรรม\nพาณิชยการ\nพาณิชยศาสตร์\nพาณิชยศิลป์\nพาณินี\nพาณี\nพาณีนี\nพาด\nพาท\nพาทย์\nพาธ\nพาธา\nพาน\nพ่าน\nพานร\nพานรินทร์\nพาม\nพาย\nพ่าย\nพายม้า\nพายัพ\nพายุ\nพาร์เซก\nพารณ\nพารา\nพาราฟิน\nพาล\nพาลา\nพาลี\nพาลุก\nพาโล\nพาไล\nพาส\nพาสน์\nพาสนา\nพาสุกรี\nพ่าห์\nพาหนะ\nพาหะ\nพาหา\nพาหิรกะ\nพาหิระ\nพาหุ\nพาหุรัด\nพาหุสัจจะ\nพาเหียร\nพาฬ\nพำ\nพำนัก\nพำพึม\nพำลา\nพิกล\nพิกสิต\nพิกัด\nพิกัติ\nพิกัน\nพิการ\nพิกุล\nพิเคราะห์\nพิฆน์\nพิฆเนศ\nพิฆเนศวร\nพิฆาต\nพิง\nพิจัย\nพิจาร\nพิจารณ์\nพิจารณา\nพิจิก\nพิจิต\nพิจิตร\nพิชญ์\nพิชัย\nพิชาน\nพิชิต\nพิเชฐ\nพิเชียร\nพิฑูรย์\nพิณ\nพิดทูล\nพิดาน\nพิโดร\nพิตร\nพิถี\nพิถีพิถัน\nพิทย\nพิทย์\nพิทยา\nพิทยาคม\nพิทยาคาร\nพิทยาธร\nพิทยาลัย\nพิทักษ์\nพิทูร\nพิเทศ\nพิธาน\nพิธี\nพิธุ\nพินทุ\nพินอบพิเทา\nพินัย\nพินาศ\nพินิจ\nพินิต\nพินิศ\nพินิศจัย\nพิเนต\nพิบัติ\nพิบุล\nพิบูล\nพิปริต\nพิปลาส\nพิพรรธ\nพิพรรธน์\nพิพักพิพ่วน\nพิพัฒ\nพิพัฒน์\nพิพากษ์\nพิพากษา\nพิพาท\nพิพิธ\nพิพิธภัณฑ์\nพิพิธภัณฑสถาน\nพิภพ\nพิภัช\nพิภาค\nพิภูษณะ\nพิเภก\nพิมปะการัง\nพิมพ์\nพิมพการัง\nพิมพา\nพิมพาภรณ์\nพิมล\nพิมเสน\nพิมาน\nพิมุข\nพิโมกข์\nพิโมกษ์\nพิโยกพิเกน\nพิโยค\nพิรอด\nพิระ\nพิรากล\nพิราบ\nพิราม\nพิราลัย\nพิริยะ\nพิรี้พิไร\nพิรุณ\nพิรุธ\nพิรุฬห์\nพิเรนทร์\nพิเราะ\nพิโรธ\nพิไร\nพิลังกาสา\nพิลาป\nพิลาส\nพิลิปดา\nพิลึก\nพิลึกกึกกือ\nพิลึกพิลั่น\nพิโลน\nพิไล\nพิศ\nพิศวง\nพิศวาส\nพิศาล\nพิศุทธ์\nพิศุทธิ์\nพิเศษ\nพิษ\nพิษฐาน\nพิษนาศน์\nพิสดาร\nพิสมร\nพิสมัย\nพิสัง\nพิสัช\nพิสัย\nพิสิฐ\nพิสุทธิ์\nพิสูจน์\nพิหค\nพิหาร\nพิฬาร\nพี\nพี่\nพี้\nพีชคณิต\nพีระมิด\nพึง\nพึ่ง\nพึ่บ\nพึ่บพั่บ\nพึม\nพึมพำ\nพืช\nพืด\nพื้น\nพุ\nพุก\nพุกาม\nพุง\nพุ่ง\nพุงดอ\nพุฒ\nพุฒิ\nพุด\nพุดตาน\nพุทธ\nพุทธะ\nพุทธังกูร\nพุทธางกูร\nพุทธันดร\nพุทธาภิเษก\nพุทธาวาส\nพุทธิ\nพุทโธ่\nพุทรา\nพุธ\nพุ่ม\nพุมเรียง\nพุ้ย\nพู\nพูพอน\nพู่\nพูด\nพูน\nพู้น\nพู่ระหง\nเพ\nเพ็ก\nเพกา\nเพคะ\nเพ็ง\nเพ่ง\nเพ็จ\nเพชฉลูกรรม\nเพชฌฆาต\nเพชร\nเพชรดา\nเพชรปาณี\nเพชรฤกษ์\nเพชรายุธ\nเพชรกลับ\nเพชรสังฆาต\nเพชรหลีก\nเพชรหึง\nเพ็ญ\nเพฑูริย์\nเพณี\nเพ็ดทูล\nเพดาน\nเพท\nเพทนา\nเพทาย\nเพทุบาย\nเพโทบาย\nเพ่นพ่าน\nเพนียด\nเพไนย\nเพ้ย\nเพรง\nเพรซีโอดิเมียม\nเพรา\nเพราะ\nเพริด\nเพริศ\nเพรียก\nเพรียง\nเพรียบ\nเพรี้ยม\nเพรียว\nเพรื่อ\nเพรือง\nเพล\nเพลง\nเพล็ด\nเพล้โพล้\nเพลา\nเพลาะ\nเพลิง\nเพลิดเพลิน\nเพลิน\nเพลีย\nเพลี้ย\nเพลี่ยง\nเพศ\nเพส\nเพสลาด\nเพ่อ\nเพ้อ\nเพ้อเจ้อ\nเพอิญ\nเพะ\nเพา\nเพาะ\nเพิก\nเพิง\nเพิ่ง\nเพิดเพ้ย\nเพิ่ม\nเพี้ย\nเพียง\nเพี้ยง\nเพียงออ\nเพี้ยน\nเพียบ\nเพียร\nเพื่อ\nเพื่อน\nแพ\nแพ้\nแพง\nแพ่ง\nแพงพวย\nแพทย์\nแพทยศาสตร์\nแพน\nแพ่น\nแพนก\nแพนงเชิง\nแพร\nแพร่\nแพรก\nแพร่ง\nแพรว\nแพร้ว\nแพลง\nแพลทินัม\nแพล็บ\nแพลม\nแพลเลเดียม\nแพละ\nแพละโลม\nแพว\nแพ้ว\nแพศย์\nแพศยา\nแพะ\nโพ\nโพก\nโพกพาย\nโพง\nโพงพาง\nโพชฌงค์\nโพซิตรอน\nโพด\nโพทะเล\nโพแทสเซียม\nโพธ\nโพธิ\nโพธิ์\nโพน\nโพ้น\nโพนทะนา\nโพบาย\nโพย\nโพยก๊วน\nโพยม\nโพรก\nโพรง\nโพรโทแอกทิเนียม\nโพรมีเทียม\nโพระดก\nโพล่\nโพลง\nโพล่ง\nโพล้ง\nโพลน\nโพล้เพล้\nโพละ\nโพสพ\nไพ\nไพ่\nไพจิตร\nไพชน\nไพชยนต์\nไพฑูรย์\nไพที\nไพบูลย์\nไพพรรณ\nไพร\nไพร่\nไพรจิตร\nไพรชน\nไพรชยนต์\nไพรฑูรย์\nไพรที\nไพรบูลย์\nไพรเราะ\nไพรัช\nไพรำ\nไพริน\nไพรินทร์\nไพรี\nไพเราะ\nไพโรจน์\nไพล\nไพล่\nไพศาขะ\nไพศาล\nไพเศษ\nไพสพ\nไพสิฐ\nไพหาร\nฟก\nฟ้ง\nฟรักโทส\nฟรี\nฟลูออรีน\nฟ่อ\nฟ้อ\nฟอก\nฟอง\nฟ่อง\nฟ้อง\nฟอด\nฟอน\nฟ่อน\nฟ้อน\nฟ้อแฟ้\nฟอร์มาลดีไฮด์\nฟอร์มาลิน\nฟอสฟอรัส\nฟอสเฟต\nฟัก\nฟักฟุ้น\nฟัง\nฟังก์ชัน\nฟัด\nฟัน\nฟั่น\nฟั้น\nฟ้า\nฟาก\nฟาง\nฟ่าง\nฟาด\nฟาทอม\nฟาน\nฟ่าม\nฟาย\nฟาร์ม\nฟาสซิสต์\nฟิด\nฟิต\nฟิบ\nฟิล์ม\nฟิวส์\nฟิสิกส์\nฟี่\nฟี้\nฟืดฟาด\nฟืน\nฟื้น\nฟืม\nฟุ\nฟุ้ง\nฟุต\nฟุน\nฟุบ\nฟุ่บ\nฟุ่มเฟือย\nฟุลสแก๊ป\nฟู\nฟู่\nฟูก\nฟูด\nฟูม\nเฟ็ด\nเฟ้น\nเฟลด์สปาร์\nเฟ้อ\nเฟอร์เมียม\nเฟอะ\nเฟอะฟะ\nเฟะ\nเฟะฟะ\nเฟิน\nเฟี้ยม\nเฟี้ยว\nเฟือ\nเฟื้อ\nเฟือง\nเฟื่อง\nเฟื้อง\nเฟือน\nเฟือย\nเฟื้อย\nแฟ่\nแฟง\nแฟชั่น\nแฟน\nแฟบ\nแฟ้ม\nแฟรนเซียม\nแฟลกซ์\nแฟลต\nแฟะ\nโฟกัส\nไฟ\nภควดี\nภควัต\nภควันต์\nภควัม\nภควา\nภควาน\nภคะ\nภคันทลา\nภคินี\nภณะ\nภณิดา\nภพ\nภมร\nภมริน\nภมรี\nภมุกา\nภยันตราย\nภยาคติ\nภระ\nภรณี\nภรต\nภรรดร\nภรรดา\nภรรยา\nภระมร\nภระมรี\nภราดร\nภราดรภาพ\nภราดา\nภริยา\nภฤศ\nภวะ\nภวตัณหา\nภวนะ\nภวังค์\nภวังคจิต\nภักดี\nภักตะ\nภักติ\nภักษ์\nภักษา\nภักษาหาร\nภัค\nภัคน์\nภังคะ\nภังคี\nภัจ\nภัณฑ์\nภัณฑาคาร\nภัณฑาคาริก\nภัณฑารักษ์\nภัณฑนะ\nภัณฑู\nภัต\nภัตตาคาร\nภัตตาหาร\nภัตร\nภัทระ\nภัทรกัป\nภัพ\nภัย\nภัสดา\nภัสตรา\nภัสมะ\nภัสสร\nภา\nภาค\nภาคย์\nภาคยานุวัติ\nภาคินี\nภาคิไนย\nภาคี\nภาคียะ\nภาชนะ\nภาชี\nภาณ\nภาณวาร\nภาณกะ\nภาณี\nภาณุ\nภาดร\nภาดา\nภาตระ\nภาตา\nภาตุ\nภาติกะ\nภาติยะ\nภาพ\nภาพย์\nภาม\nภาย\nภาร\nภาระ\nภารดี\nภารต\nภารตี\nภารยทรัพย์\nภารยา\nภารา\nภาวนา\nภาวะ\nภาษ\nภาษณ์\nภาษา\nภาษิต\nภาษี\nภาส\nภาสน์\nภาสวร\nภาสา\nภาสุระ\nภิกขา\nภิกขาจาร\nภิกขุ\nภิกขุนี\nภิกษา\nภิกษาจาร\nภิกษาหาร\nภิกษุ\nภิกษุณี\nภิงคาร\nภิญโญ\nภิตติ\nภินท์\nภินทนาการ\nภิยโย\nภิรมย์\nภิรมย์สุรางค์\nภิษัช\nภิสัก\nภีตะ\nภีมะ\nภีรุ\nภุกต์\nภุขัน\nภุช\nภุชงค์\nภุต\nภุมมะ\nภุมรัตน์\nภุมวาร\nภุมรา\nภุมริน\nภุมรี\nภุมเรศ\nภู\nภู่\nภูต\nภูติ\nภูม\nภูมิ\nภูมี\nภูริ\nภูรี\nภูวดล\nภูวนาถ\nภูวเนตร\nภูวไนย\nภูษา\nภูษิต\nเภกะ\nเภตรา\nเภท\nเภทุบาย\nเภรี\nเภสัช\nโภค\nโภคะ\nโภคิน\nโภคี\nโภไคย\nโภไคศวรรย์\nโภช\nโภชย์\nโภชก\nโภชนะ\nโภชนา\nโภชนาหาร\nโภชนียะ\nไภริน\nไภรี\nไภษัชคุรุ\nไภษัชย์\nมกร\nมกราคม\nมกุฎ\nมคธ\nมฆวัน\nมฆะ\nมฆา\nม่ง\nมงกุฎ\nมงโกรย\nมงคล\nมงคลวาร\nมณฑ์\nมณฑก\nมณฑนะ\nมณฑป\nมณฑล\nมณฑา\nมณฑารพ\nมณฑิระ\nมณเฑียร\nมณี\nมด\nมตะ\nมตกภัต\nมติ\nมทนะ\nมทะ\nมธุ\nมธุกร\nมธุการี\nมธุลีห์\nมธุระ\nมธุรพจน์\nมน\nมนินทรีย์\nม่น\nมนต์\nมนตร์\nมนตรี\nมนท์\nมนทิราลัย\nมนเทียร\nมนสิการ\nมนัส\nมนัสวี\nมนินทรีย์\nมนิมนา\nมนิลา\nมนุญ\nมนุษย์\nมนุษยชาติ\nมนุษยธรรม\nมนุษย์มนา\nมนุษยโลก\nมนุษยศาสตร์\nมนุษยสัมพันธ์\nมนุสาร\nมนู\nมนูสาร\nมโน\nมโนช\nมโนชญ์\nมโนราห์\nมโนสาเร่\nมโนห์รา\nมมังการ\nมยุรฉัตร\nมยุระ\nมยุรา\nมยุรี\nมยุเรศ\nมยูร\nมรกต\nมรคา\nมรฑป\nมรณ์\nมรณะ\nมรณกรรม\nมรณบัตร\nมรณภัย\nมรณภาพ\nมรดก\nมรรค\nมรรคา\nมรรตัย\nมรรยาท\nมรรษ\nมรสุม\nมริจ\nมริยาท\nมรีจิ\nมรุต\nมฤค\nมฤคย์\nมฤคศิระ\nมฤคศิรมาส\nมฤคเศียร\nมฤคินทร์\nมฤเคนทร์\nมฤดก\nมฤต\nมฤตยู\nมฤทุ\nมล\nมละ\nมลัก\nมลังเมลือง\nมล้าง\nมลาย\nมลายู\nมวก\nม่วง\nมวน\nม่วน\nม้วน\nม้วนต้วน\nมวย\nม้วย\nมวล\nมหกรรม\nมหรณพ\nมหรรณพ\nมหรสพ\nมหัจฉริยะ\nมหัต\nมหัทธนะ\nมหันต์\nมหันตโทษ\nมหัพภาค\nมหัศจรรย์\nมหา\nมหากฐิน\nมหากาฬ\nมหาขันธกะ\nมหาจักร\nมหาชน\nมหาชัย\nมหาชาติ\nมหาโชตรัต\nมหาดไทย\nมหาดเล็ก\nมหาตมะ\nมหาไถ่\nมหาเทพ\nมหาเทพี\nมหาเทวี\nมหาธาตุ\nมหานิกาย\nมหานิล\nมหาบพิตร\nมหาบัณฑิต\nมหาพน\nมหาพรหม\nมหาภารตะ\nมหาภิเนษกรมณ์\nมหาภูต\nมหาเมฆ\nมหายาน\nมหายุค\nมหาราช\nมหาฤกษ์\nมหาละลวย\nมหาละลาย\nมหาวงศ์\nมหาวรรค\nมหาวิทยาลัย\nมหาศักราช\nมหาศาล\nมหาสงกรานต์\nมหาสดมภ์\nมหาสดำ\nมหาสมุทร\nมหาสาวก\nมหาหงส์\nมหาหิงคุ์\nมหาอำนาจ\nมหาอุจ\nมหาอุด\nมหาอุปรากร\nมหาอุปราช\nมหิ\nมหิดล\nมหิธร\nมหิป\nมหิงส์\nมหิทธิ\nมหินท์\nมหิมา\nมหิศร\nมหิศวร\nมหิษ\nมหิษี\nมหึมา\nมเหยงค์\nมเหศ\nมเหศวร\nมเหศักดิ์\nมเหสักข์\nมเหสิ\nมเหสี\nมเหาฬาร\nมโหรสพ\nมโหระทึก\nมโหรี\nมโหฬาร\nมไหศวรรย์\nมอ\nมอง\nมองโกลอยด์\nมองโกเลีย\nมองคร่อ\nมอญ\nมอด\nม่อต้อ\nมอเตอร์\nมอเตอร์ไซค์\nมอน\nม่อน\nมอบ\nมอม\nมอมแมม\nม่อย\nมอร์ฟีน\nมอระกู่\nมอลโทส\nม่อลอกม่อแลก\nม่อห้อม\nม่อฮ่อม\nมะ\nมะกรูด\nมะกล่ำ\nมะกอก\nมะก่อง\nมะกะโรนี\nมะกา\nมะเกลือ\nมะเกี๋ยง\nมะข่วง\nมะขวิด\nมะขาม\nมะเขือ\nมะแข่น\nมะคังแดง\nมะค่า\nมะคำไก่\nมะคำดีควาย\nมะงั่ว\nมะงุมมะงาหรา\nมะซัก\nมะซาง\nมะดัน\nมะดีหวี\nมะดูก\nมะเดหวี\nมะเดื่อ\nมะต้อง\nมะตะบะ\nมะตาด\nมะตาหะรี\nมะตึ่ง\nมะตื๋น\nมะตูม\nมะแตก\nมะโต\nมะนาว\nมะปราง\nมะปริง\nมะฝ่อ\nมะพร้าว\nมะพลับ\nมะพูด\nมะแพน\nมะแพร้ว\nมะเฟือง\nมะแฟน\nมะไฟ\nมะม่วง\nมะม่าว\nมะมี่\nมะมื่น\nมะมุด\nมะเมอ\nมะเมีย\nมะเมื่อย\nมะแม\nมะยง\nมะยม\nมะระ\nมะริด\nมะรืน\nมะรุม\nมะรุมมะตุ้ม\nมะเร็ง\nมะเรื่อง\nมะโรง\nมะลอกมะแลก\nมะละกอ\nมะลิ\nมะลื่น\nมะลืมดำ\nมะลุลี\nมะแว้ง\nมะสัง\nมะเส็ง\nมะหวด\nมะหะหมัด\nมะหาด\nมะหิ่ง\nมะเหงก\nมะอึก\nมะฮอกกานี\nมัก\nมักกะโรนี\nมักกะลีผล\nมักกะสัน\nมักขะ\nมั่กขั้ก\nมักขิกา\nมัค\nมัคคะ\nมัคคุเทศก์\nมัคนายก\nมัฆวาน\nมั่ง\nมังกง\nมังกร\nมังกุ\nมังคละ\nมังค่า\nมังคุด\nมังตาน\nมังสวิรัติ\nมังสะ\nมังสี\nมัจจะ\nมัจจุ\nมัจฉริยะ\nมัจฉรี\nมัจฉะ\nมัจฉา\nมัชชะ\nมัชวิรัติ\nมัชชาระ\nมัชฌันติกสมัย\nมัชฌิม\nมัชฌิมา\nมัญจา\nมัญชิษฐา\nมัญชุ\nมัญชุสา\nมัญชูสา\nมัญเชฏฐะ\nมัฏฐะ\nมัณฑนศิลป์\nมัณฑนา\nมัด\nมัตตะ\nมัตตัญญู\nมัตตา\nมัตติกา\nมัตถกะ\nมัตถลุงค์\nมัตสยะ\nมัตสยา\nมัตสระ\nมัตสริน\nมัททวะ\nมัทนะ\nมัทยะ\nมัธยฐาน\nมัธยม\nมัธยันห์\nมัธยัสถ์\nมัน\nมั่น\nมันตา\nมันถะ\nมันทิระ\nมันทิราลัย\nมับ\nมั้ม\nมัมมี่\nมัย\nมัลละ\nมัลลิกา\nมัว\nมัวซัว\nมั่ว\nมัศยา\nมัสตุ\nมัสตาร์ด\nมัสมั่น\nมัสยิด\nมัสรู่\nมัสลิน\nมัสสุ\nมา\nม้า\nมาก\nมาคสิระ\nมาฆบูชา\nมาฆะ\nม้าง\nมางสะ\nมาณพ\nมาณวิกา\nมาด\nมาดา\nมาตงค์\nมาตร\nมาตรา\nมาตฤ\nมาตังคะ\nมาตา\nมาตามหัยกะ\nมาตามหัยกา\nมาตามหัยยิกา\nมาติกะ\nมาติกา\nมาตุ\nมาตุจฉา\nมาตุรงค์\nมาตุเรศ\nมาตุละ\nมาตุลา\nมาตุลานี\nมาทะ\nมาธยมิก\nมาธยมิกะ\nมาธุระ\nมาธุสร\nมาธูระ\nมาน\nม่าน\nม้าน\nมานพ\nมานะ\nมานัต\nมานัส\nมานิต\nมานี\nมานุษ\nมานุษยวิทยา\nมาโนชญ์\nมาบ\nมาภา\nม้าม\nม่าย\nมายา\nมาร\nมาราธิราช\nมารค\nมารดร\nมารดา\nมารยา\nมารยาท\nมารศรี\nมารษา\nมาริต\nมารุต\nมาลย์\nมาลัย\nมาลา\nมาลาตี\nมาลาเรีย\nมาลินี\nมาลี\nมาลุต\nมาศ\nมาส\nมาสก\nมาห์\nม่าห์\nมาหิส\nม่าเหมี่ยว\nมาฬก\nมิ\nมิค\nมิคสัญญี\nมิ่ง\nมิจฉา\nมิด\nมิตร\nมิติ\nมิเตอร์\nมิถยา\nมิถุน\nมิถุนายน\nมิทธะ\nมินตรา\nมินตา\nมินหม้อ\nมิ่ม\nมิ้ม\nมิไย\nมิรันตี\nมิลลิกรัม\nมิลลิบาร์\nมิลลิเมตร\nมิลลิลิตร\nมิลักขะ\nมิลักขู\nมิส\nมิสกรี\nมิสกวัน\nมิสซา\nมี\nมี่\nมีด\nมีเทน\nมีน\nมีนาคม\nมี่สั้ว\nมึง\nมึน\nมืด\nมืน\nมื่น\nมือ\nมื้อ\nมุ\nมุก\nมุกดา\nมุกดาหาร\nมุกุระ\nมุข\nมุขเด็จ\nมุขยประโยค\nมุโขโลกนะ\nมุคคะ\nมุง\nมุ่ง\nมุ้ง\nมุจฉา\nมุจนะ\nมุจลินท์\nมุญจนะ\nมุญชะ\nมุฐิ\nมุณฑกะ\nมุณฑะ\nมุด\nมุตกิด\nมุตฆาต\nมุตตะ\nมุตตา\nมุตติ\nมุตะ\nมุติ\nมุททา\nมุทธชะ\nมุทธา\nมุทธาภิเษก\nมุทรา\nมุทริกา\nมุทะลุ\nมุทา\nมุทิกา\nมุทิงค์\nมุทิตา\nมุทุ\nมุทุตา\nมุ่น\nมุนิ\nมุนินทร์\nมุนี\nมุบ\nมุบมิบ\nมุม\nมุ้ม\nมุ่ย\nมุรธา\nมุรธาภิเษก\nมุสละ\nมุสลิม\nมุสา\nมุสิก\nมุหงิด\nมุหน่าย\nมุหุต\nมุฮัมมัด\nมูก\nมูเซอ\nมูตร\nมู่ทู่\nมูน\nมูมมาม\nมูรติ\nมูรธา\nมูรธาภิเษก\nมูล\nมูละ\nมูลา\nมูลิกากร\nมู่ลี่\nมู่เล่\nมูสัง\nมูสิก\nมูสิกะ\nมูสิกทันต์\nเม\nเม็ก\nเมกะเฮิรตซ์\nเมขลา\nเมฆ\nเมฆา\nเมฆินทร์\nเมฆี\nเม็ง\nเม็ด\nเมตตา\nเมตไตรย\nเมตร\nเมตริก\nเมตริกตัน\nเมถุน\nเมท\nเมโท\nเมทนี\nเมทินี\nเมทนีดล\nเมทานอล\nเมทิลแอลกอฮอล์\nเมธ\nเมธา\nเมธาวี\nเมธี\nเมน\nเม่น\nเม้น\nเมนเดลีเวียม\nเมนทอล\nเม้ม\nเมรัย\nเมริเดียน\nเมรุ\nเมล์\nเมล็ด\nเมลือง\nเมษ\nเมษายน\nเมห์\nเมหนะ\nเมหะ\nเมะ\nเมา\nเม่า\nเม้า\nเมารี\nเมาลี\nเมาฬี\nเมาะ\nเมิง\nเมิน\nเมิล\nเมีย\nเมียง\nเมี่ยง\nเมี้ยน\nเมือ\nเมื้อ\nเมื่อ\nเมือก\nเมือง\nเมือบ\nเมื่อย\nแม่\nแม้\nแมก\nแมกนีเซียม\nแมง\nแมงกะพรุน\nแมงกานิน\nแมงกานีส\nแมงคา\nแมงคาเรือง\nแมงช้าง\nแมงดา\nแมงลัก\nแม่ตะงาว\nแมน\nแม่น\nแม้น\nแมลง\nแมลบ\nแมว\nแม้ว\nแมะ\nโม\nโม่\nโม้\nโมก\nโมกข์\nโมกษะ\nโมฆกรรม\nโมฆสัญญา\nโมฆะ\nโมฆียกรรม\nโมฆียะ\nโมง\nโม่ง\nโมงครุ่ม\nโมทนา\nโมโนแซ็กคาไรด์\nโมไนย\nโมเม\nโมเมนต์\nโมเย\nโมรา\nโมรี\nโมเรส\nโมลิบดีนัม\nโมลี\nโมเลกุล\nโมเสก\nโมเสส\nโม่ห์\nโมหะ\nโมหันธ์\nโมหาคติ\nโมโห\nไม่\nไม้\nไมกา\nไมครอน\nไมโครกรัม\nไมโครฟิล์ม\nไมโครโฟน\nไมโครมิเตอร์\nไมโครเมตร\nไมโครลิตร\nไมโครเวฟ\nไมตรี\nไมยราบ\nไมล์\nยก\nยกกระบัตร\nยกนะ\nยง\nยงโย่\nยชุรเวท\nยติ\nยติภังค์\nยถากรรม\nยถาภูตญาณ\nย่น\nยนต์\nยนตร์\nยม\nยมก\nยมโดย\nยมนา\nยมล\nยมะ\nยรรยง\nยล\nยวง\nยวด\nยวน\nยวบ\nย้วย\nยวรยาตร\nยศ\nยโส\nยอ\nย่อ\nยอก\nย็อกแย็ก\nยอง\nย่อง\nย้อง\nยอด\nยอน\nย้อน\nยอบ\nยอม\nย่อม\nย้อม\nย่อย\nย้อย\nย้อแย้\nยะ\nย่ะ\nยะยอบ\nยะยับ\nยัก\nยักข์\nยักขินี\nยักษ์\nยักษา\nยักษิณี\nยักษี\nยัง\nยั้ง\nยั่งยืน\nยัชโญปวีต\nยัญ\nยัญญะ\nยัด\nยัติภังค์\nยัน\nยั่น\nยันต์\nยันตร\nยันตร์\nยันตรกรรม\nยั่นตะนี\nยับ\nยั่ว\nยั้ว\nยั้วเยี้ย\nยัวรยาตร\nยัวะ\nยัษฏิ\nยา\nย่า\nยาก\nยาคุ\nยาคู\nยาง\nย่าง\nยางพารา\nยาจก\nยาจนา\nยาไฉน\nยาด\nยาดา\nยาตร\nยาตรา\nยาน\nย่าน\nย่านพาโหม\nยานมาศ\nยานุมาศ\nยานี\nยาม\nย่าม\nยามะ\nยามักการ\nยามา\nยาย\nย้าย\nยายี\nยาว\nย้าว\nยาวกาลิก\nยาวชีวิก\nยาสูบ\nย่าหยา\nยาหยี\nยำ\nย่ำ\nย้ำ\nยำเยีย\nยิก\nยิง\nยิ่ง\nยิฏฐะ\nยิน\nยิบ\nยิบหยี\nยิปซัม\nยิปซี\nยิ้ม\nยิมนาสติก\nยิหวา\nยี\nยี่\nยี้\nยี่ก่า\nยี่เก\nยี่เข่ง\nยี่โถ\nยีน\nยี่โป้\nยี่ภู่\nยีราฟ\nยี่สก\nยี่สง\nยี่สน\nยี่สาน\nยี่สุ่น\nยี่หระ\nยี่หร่า\nยี่ห้อ\nยี่หุบ\nยึกยัก\nยึกยือ\nยึด\nยืด\nยืน\nยื่น\nยืม\nยื้อ\nยุ\nยุกกระบัตร\nยุกดิ\nยุกติ\nยุกติธรรม\nยุกต์\nยุค\nยุคนธร\nยุคล\nยุคันต์\nยุคันธร\nยุคุนธร\nยุง\nยุ่ง\nยุ้ง\nยุด\nยุต\nยุติ\nยุทธ\nยุทธ์\nยุทธนา\nยุทโธปกรณ์\nยุบ\nยุ่บ\nยุ่บยั่บ\nยุบล\nยุพดี\nยุพเรศ\nยุพา\nยุพาน\nยุพาพาล\nยุพาพิน\nยุ่มย่าม\nยุ่ย\nยุ้ย\nยุรยาตร\nยูรยาตร\nยุวชน\nยุวดี\nยุวราช\nยุวา\nยุวาน\nยู\nยู่\nยูง\nยูโด\nยูถะ\nยูถิกา\nยูริก\nยูเรนัส\nยูเรเนียม\nยูโรเพียม\nเย\nเย้\nเยง\nเยซู\nเย็ด\nเย็น\nเย็นตาโฟ\nเย็นเตาโฟ\nเย็บ\nเย้ย\nเยอ\nเย่อ\nเยอรมัน\nเยอว\nเย่อหยิ่ง\nเยอะ\nเยอะแยะ\nเยา\nเย้า\nเยาว์\nเยาวชน\nเยาวมาลย์\nเยาวยอด\nเยาวราช\nเยาวเรศ\nเยาวลักษณ์\nเยาวพา\nเยาวพาณี\nเยาวพาน\nเยาะ\nเยิง\nเยิน\nเยิ่น\nเยิ่นเย้อ\nเยินยอ\nเยิบ\nเยิบยาบ\nเยิ้ม\nเยีย\nเยี่ยง\nเยี่ยงอย่าง\nเยียงผา\nเยียดยัด\nเยียน\nเยียบ\nเยี่ยม\nเยียรบับ\nเยียรยง\nเยียว\nเยี่ยว\nเยียวยา\nเยือ\nเยื่อ\nเยื้อ\nเยือก\nเยือง\nเยื่อง\nเยื้อง\nเยือน\nเยื้อน\nแย่\nแย้\nแยก\nแยง\nแย่ง\nแย้ง\nแยงแย่\nแยงแย้\nแยบ\nแย็บ\nแยม\nแย้ม\nแยแส\nแยะ\nโย\nโย้\nโยก\nโยกเยก\nโยคาพจร\nโยคาวจร\nโยคเกณฑ์\nโยคยะ\nโยคะ\nโยคิน\nโยคี\nโยง\nโย่ง\nโย่งเย่ง\nโยงโย่\nโยชน์\nโยชนา\nโยถิกะ\nโยทะกา\nโยธวาทิต\nโยธา\nโยธิน\nโยน\nโยนก\nโยนิโส\nโยนี\nโยม\nโยโส\nใย\nไย\nไย่\nไยดี\nไยไพ\nรก\nรง\nรงค์\nรงควัตถุ\nรงรอง\nรจนา\nรจเรข\nรจเลข\nรจิต\nรชตะ\nรชนิ\nรชนี\nรชะ\nรณรงค์\nรด\nรดี\nรตนะ\nรตะ\nรติ\nรถ\nรน\nร่น\nรบ\nรบาญ\nรพี\nรม\nร่ม\nรมณี\nรมณีย์\nรมณียสถาน\nรมย์\nรมเยศ\nรยางค์\nรวก\nรวง\nร่วง\nรวด\nรวน\nรวนเร\nร่วน\nรวบ\nรวม\nร่วม\nรวย\nรวิ\nรวิวาร\nรวี\nรศนา\nรส\nรสนา\nรสสุคนธ์\nรสายนเวท\nรสิก\nรหัท\nรหัส\nรโห\nรโหฐาน\nรอ\nร่อ\nรอก\nรอง\nร่อง\nร้อง\nรองเง็ง\nร่องแร่ง\nรอด\nรอน\nร่อน\nร้อน\nรอบ\nรอบคอบ\nรอม\nรอมชอม\nรอมร่อ\nรอย\nร่อย\nร้อย\nร่อแร่\nระ\nระกะ\nระกา\nระกำ\nระเกะระกะ\nระคน\nระคาง\nระคาย\nระแคะ\nระฆัง\nระงม\nระงับ\nระแง้\nระโงกหิน\nระชวย\nระดม\nระดะ\nระดับ\nระดา\nระด่าว\nระดู\nระเด่น\nระเดียง\nระแด\nระตู\nระทก\nระทด\nระทม\nระทวย\nระทา\nระทึก\nระแทะ\nระนาด\nระนาบ\nระนาม\nระนาว\nระเนน\nระเนระนาด\nระเนียด\nระแนง\nระแนะ\nระบบ\nระบม\nระบอบ\nระบัด\nระบับ\nระบาด\nระบาย\nระบำ\nระบิล\nระบือ\nระบุ\nระเบง\nระเบ็ง\nระเบิด\nระเบียง\nระเบียน\nระเบียบ\nระแบบ\nระมัดระวัง\nระมาด\nระเมียร\nระย่อ\nระย่อม\nระยะ\nระยั้ง\nระยับ\nระย้า\nระยาบ\nระยำ\nระยิบระยับ\nระโยง\nระโยงระยาง\nระรวย\nระรอง\nระร่อน\nระรัว\nระราน\nระร่าย\nระริก\nระรี่\nระรึง\nระรื่น\nระรื้น\nระเร้ง\nระเริง\nระเรียง\nระเรื่อย\nระแรง\nระลวง\nระลอก\nระลึก\nระวัง\nระวาง\nระวาย\nระวิง\nระแวง\nระแวดระวัง\nระไว\nระส่ำระสาย\nระหกระเหิน\nระหง\nระหวย\nระหว่าง\nระหองระแหง\nระหัด\nระหาย\nระเห็จ\nระเหย\nระเหระหน\nระเหหน\nระเหิด\nระเหินระหก\nระแหง\nระโหย\nระอา\nระอิดระอา\nระอุ\nรัก\nรักข์\nรักขิต\nรักตะ\nรักบี้\nรักเร่\nรักแร้\nรักษ์\nรักษา\nรัง\nรั้ง\nรังเกียจ\nรังแก\nรังค์\nรังควาน\nรังแค\nรังรอง\nรังวัด\nรังสิ\nรังสี\nรังสิมันตุ์\nรังสิมา\nรัจฉา\nรัช\nรัชชูปการ\nรัชมังคลาภิเษก\nรัชชุ\nรัชฎาภิเษก\nรัชดาภิเษก\nรัชนะ\nรัชนี\nรัญจวน\nรัฏฐาภิปาลโนบาย\nรัฐ\nรัฐประศาสโนบาย\nรัฐประศาสนศาสตร์\nรัด\nรัต\nรัตกัมพล\nรัตมณี\nรัตคน\nรัตจันทน์\nรัตตัญญู\nรัตติ\nรัตน์\nรัตนะ\nรัตนโกสินทร์\nรัตนโกสินทรศก\nรัตนชาติ\nรัตนตรัย\nรัตนบัลลังก์\nรัตนวราภรณ์\nรัตนสิงหาสน์\nรัตนา\nรัตนากร\nรัตนาภรณ์\nรัตนาวลี\nรัตมา\nรัถ\nรัถยา\nรัทเทอร์ฟอร์เดียม\nรัน\nรั้น\nรันทด\nรันทวย\nรับ\nรัมณียสถาน\nรัมภา\nรัมมี่\nรัมย์\nรัย\nรัว\nรั่ว\nรั้ว\nรัศมิมัต\nรัศมิมาน\nรัศมี\nรัษฎากร\nรัสเซีย\nรัสสะ\nรัสสระ\nรา\nร่า\nร้า\nราก\nรากษส\nรากสาด\nราคะ\nราคจริต\nราคา\nราคิน\nราคี\nราง\nร่าง\nร้าง\nรางจืด\nรางชาง\nรางวัล\nราช\nราชกิจจานุเบกษา\nราชนิกุล\nราชวโรงการ\nราชญี\nราชดัด\nราชพฤกษ์\nราชมาณพ\nราชมาษ\nราชมาส\nราชย์\nราชสีห์\nราชะ\nราชัน\nราชันย์\nราชัย\nราชา\nราชาธิปไตย\nราชาธิราช\nราชาภิเษก\nราชายตนะ\nราชาวดี\nราชี\nราชินิกุล\nราชินีกุล\nราชินี\nราชินูปถัมภ์\nราชูปถัมภ์\nราชูปโภค\nราเชน\nราเชนทร์\nราเชนทรยาน\nราโชวาท\nราไชศวรรย์\nราญ\nราญรอน\nราด\nราต\nราตร\nราตรี\nราน\nร่าน\nร้าน\nราบ\nราพณ์\nราพณาสูร\nราม\nรามเกียรติ์\nรามสูร\nรามัญ\nรามา\nราย\nร่าย\nร้าย\nราว\nร้าว\nราวี\nราศี\nราษฎร\nราษฎร์\nราษตรี\nราษราตรี\nราหุ\nราหู\nรำ\nร่ำ\nรำคาญ\nรำงับ\nรำจวน\nรำบาญ\nรำพัน\nรำพาย\nรำพึง\nรำเพย\nรำไพ\nรำมะนา\nรำมะนาด\nรำมะร่อ\nร่ำรวย\nร่ำร่ำ\nรำไร\nรำลึก\nรำหัด\nรำหัส\nริ\nริก\nริดสีดวง\nริน\nริ้น\nริบ\nริบบิ้น\nริบรี่\nริบหรี่\nริปุ\nริปู\nริม\nริ้ว\nริษยา\nรี\nรี่\nรี้พล\nรีด\nรีดักชัน\nรีต\nรีเนียม\nรีบ\nรีม\nรีรอ\nรี้ริก\nรึง\nรึ้ง\nรื่น\nรื้น\nรื้อ\nรุ\nรุก\nรุกข์\nรุกขชาติ\nรุกขเทวดา\nรุกขมูล\nรุกขา\nรุกรุย\nรุ่ง\nรุ้ง\nรุงรัง\nรุ่งริ่ง\nรุจ\nรุจา\nรุจนะ\nรุจิ\nรุจี\nรุจิระ\nรุจิรา\nรุด\nรุต\nรุทธ์\nรุทระ\nรุธิร\nรุธิระ\nรุเธียร\nรุน\nรุ่น\nรุบรู่\nรุม\nรุ่ม\nรุ่มร่าม\nรุย\nรุ่ย\nรุรุ\nรุหะ\nรู\nรู่\nรู้\nรูจี\nรูด\nรูทีเนียม\nรูบิเดียม\nรูป\nรูปิยะ\nรูปี\nรูเล็ตต์\nเร่\nเรข\nเรขา\nเรขาคณิต\nเร็ง\nเร่ง\nเร้ง\nเรณุ\nเรณู\nเรดอน\nเรดาร์\nเรเดียม\nเร้น\nเรรวน\nเรไร\nเร็ว\nเร่ว\nเรวดี\nเรอ\nเร่อ\nเรา\nเร่า\nเร้า\nเราะ\nเริง\nเริด\nเริม\nเริ่ม\nเริ้ม\nเริศร้าง\nเรี่ย\nเรี้ย\nเรียก\nเรียง\nเรียด\nเรียน\nเรียบ\nเรียม\nเรี่ยม\nเรียว\nเรี่ยว\nเรี้ยวรก\nเรือ\nเรื่อ\nเรื้อ\nเรือก\nเรือง\nเรื่อง\nเรื้อง\nเรืองรอง\nเรือด\nเรือน\nเรื้อน\nเรื่อย\nแร\nแร่\nแรก\nแร็กเกต\nแรง\nแร่ง\nแร้ง\nแรด\nแร้นแค้น\nแรม\nแร้ว\nแระ\nโร\nโร่\nโรค\nโรคา\nโรคาพาธ\nโรง\nโรจ\nโรจน์\nโรเดียม\nโรตี\nโรท\nโรธ\nโรม\nโรมัน\nโรเมอร์\nโรย\nโรเร\nโรหิณี\nโรหิต\nไร\nไร่\nไร้\nไรย์\nฤกษ์\nฤกษณะ\nฤคเวท\nฤชา\nฤชุ\nฤณ\nฤดี\nฤดียา\nฤดู\nฤต\nฤติยา\nฤตุ\nฤทธา\nฤทธิ์\nฤทัย\nฤษภ\nฤษยา\nฤษี\nฤๅ\nฤๅดี\nฤๅทัย\nฤๅษี\nฤๅสาย\nลก\nล่ก\nลฆุ\nลง\nล่ง\nลงกา\nล้งเล้ง\nลด\nลดา\nลดาวัลย์\nลน\nล้น\nลบ\nลบอง\nลพ\nลพุช\nลม\nล่ม\nล้ม\nลมาด\nลรรลุง\nลลนา\nลลิต\nลวก\nลวง\nล่วง\nล้วง\nลวณะ\nลวด\nล้วน\nลวนลาม\nลวนะ\nล่วม\nลวะ\nลวิตร\nลหุ\nลหุกาบัติ\nล่อ\nล้อ\nลอก\nล็อก\nล็อกเกต\nลอกแลก\nลอการิทึม\nลอง\nล่อง\nลองกอง\nลองจิจูด\nลองไน\nลอด\nลอตเตอรี่\nลอน\nล่อน\nลอบ\nลอม\nล้อม\nลอมชอม\nลอมพอก\nลอย\nล่อย\nล่อแล่\nลอว์เรนเซียม\nลออ\nละ\nล่ะ\nละคร\nละติจูด\nละบม\nละบอง\nละบือ\nละเบ็ง\nละโบม\nละม่อม\nละมั่ง\nละมาน\nละม้าย\nละมุ\nละมุด\nละมุน\nละเมอ\nละเมาะ\nละเมิด\nละเมียด\nละแมะ\nละโมก\nละโมบ\nละไม\nละลวย\nละลอก\nละล้า\nละล้าละลัง\nละลาน\nละลาบละล้วง\nละลาย\nละล้าว\nละล่ำละลัก\nละลิบ\nละลุม\nละเลง\nละเล้า\nละเลาะ\nละเลิง\nละเลียด\nละเลียบ\nละไล้\nละว้า\nละวาด\nละเวง\nละแวก\nละโว้\nละหมาด\nละห้อย\nละหาน\nละหาร\nละหุ่ง\nละเหย\nละเหี่ย\nละอง\nละออง\nละอาย\nละเอียด\nละแอน\nลัก\nลักขณะ\nลักขณา\nลักขะ\nลักขี\nลักจั่น\nลักปิดลักเปิด\nลักษณ์\nลักษณนาม\nลักษณะ\nลักษณาการ\nลักษมณ์\nลักษมาณา\nลักษมี\nลักษะ\nลัคคะ\nลัคน์\nลัคนา\nลัง\nลั่ง\nลังกา\nลังคี\nลังถึง\nลังลอง\nลังเล\nลังสาด\nลัชชา\nลัชชี\nลัญจ์\nลัญจกร\nลัญฉกร\nลัญฉน์\nลัฐิ\nลัฐิกา\nลัด\nลัดา\nลัทธ์\nลัทธิ\nลัน\nลั่น\nลันเต\nลันเตา\nลันไต\nลั่นทม\nลันโทม\nลับ\nลัพธ์\nลัพธิ\nลัภ\nลัภนะ\nลัภย์\nลัมพ์\nลัย\nลา\nล่า\nล้า\nลาก\nลาง\nล่าง\nล้าง\nลางลิง\nลางสาด\nลาช\nลาชะ\nลาชา\nลาญ\nลาด\nลาดเลา\nล้าต้า\nล่าเตียง\nลาน\nล่าน\nล้าน\nลาบ\nลาพอน\nลาภ\nลาม\nล่าม\nลามก\nลาย\nล้าย\nลายสือ\nลาลา\nลาว\nลาวัณย์\nลาวา\nลำ\nล่ำ\nล้ำ\nลำเข็ญ\nลำแข\nลำเค็ญ\nลำเจียก\nลำดวน\nลำดับ\nลำเนา\nลำบอง\nลำบาก\nลำปำ\nลำพวน\nลำพอง\nลำพัง\nลำพู\nลำเพ็ญ\nลำเพา\nลำแพน\nลำโพง\nลำไพ่\nลำภุขัน\nลำมะลอก\nลำยอง\nลำไย\nลำลอง\nล่ำลา\nลำลาบ\nลำลึก\nลำเลาะ\nลำเลิก\nลำเลียง\nลำเวียง\nลำเอียก\nลำเอียง\nลิ\nลิกขา\nลิกไนต์\nลิกู\nลิเก\nลิขนะ\nลิขสิทธิ์\nลิขิต\nลิง\nลิงค์\nลิด\nลิต\nลิตมัส\nลิตร\nลิเทียม\nลิ่น\nลิ้น\nลินจง\nลิ้นจี่\nลินลา\nลินสีด\nลิ่นฮื้อ\nลินิน\nลิบ\nลิปดา\nลิปสติก\nลิปิ\nลิฟต์\nลิเภา\nลิ่ม\nลิ้ม\nลิมป์\nลิมปนะ\nลิลิต\nลิว\nลิ่ว\nลิสง\nลี\nลี่\nลี้\nลีซอ\nลีบ\nลีลา\nลีลาศ\nลีฬหา\nลึก\nลึงค์\nลืด\nลื่น\nลื้น\nลืบ\nลืม\nลือ\nลื่อ\nลื้อ\nลุ\nลุก\nลุง\nลุ้ง\nลุ่น\nลุ้น\nลุพธ์\nลุ่ม\nลุมพี\nลุมพู\nลุย\nลุ่ย\nลุ้ย\nลู่\nลูก\nลูกระมาศ\nลูกเอ็น\nลูขะ\nลูทีเชียม\nลูบ\nเลก\nเล็ก\nเลข\nเลขา\nเลขาธิการ\nเลขานุการ\nเล็ง\nเล้ง\nเล่งฮื้อ\nเลเซอร์\nเลฑฑุ\nเลณฑุ\nเลณะ\nเล็ด\nเลน\nเล็น\nเล่น\nเลนส์\nเล็บ\nเลบง\nเลปกร\nเลปน์\nเลเป\nเลเพ\nเล็ม\nเล่ม\nเลย\nเลว\nเลวง\nเลวูโลส\nเลศ\nเลษฏุ\nเล่ห์\nเล่ห์กระเท่ห์\nเลหลัง\nเลหะ\nเลอ\nเล่อ\nเลอะ\nเลอะเทอะ\nเละ\nเละเทะ\nเลา\nเล่า\nเล้า\nเลากัย\nเล้าโลม\nเลาะ\nเลิก\nเลิ่กลั่ก\nเลิง\nเลิ้ง\nเลินเล่อ\nเลิศ\nเลีย\nเลียง\nเลี่ยง\nเลี้ยง\nเลียงผา\nเลียงฝ้าย\nเลียงมัน\nเลียน\nเลี่ยน\nเลียนไฟ\nเลียบ\nเลี่ยม\nเลียว\nเลี้ยว\nเลือก\nเลือง\nเลื่อง\nเลือด\nเลือน\nเลื่อน\nเลื่อม\nเลื่อย\nเลื้อย\nเลื่อยล้า\nแล\nแล่\nแล้\nแลก\nแล็กเกอร์\nแล็กโทส\nแลง\nแล่ง\nแล้ง\nแลน\nแล่น\nแลนทานัม\nแลบ\nแล้ว\nและ\nโล่\nโล้\nโลก\nโลกเชษฐ์\nโลกธรรม\nโลกธาตุ\nโลกนาถ\nโลกบาล\nโลกย์\nโลกัย\nโลกวัชชะ\nโลกวิทู\nโลกัตถจริยา\nโลกันตร์\nโลกา\nโลกาธิบดี\nโลกาธิปไตย\nโลกานุวัตร\nโลกาภิวัตน์\nโลกามิส\nโลกายัต\nโลกาวินาศ\nโลกิยะ\nโลกีย์\nโลกียวัตร\nโลกียวิสัย\nโลกียสุข\nโลกุตระ\nโลกุตรธรรม\nโลกุตรภูมิ\nโลง\nโล่ง\nโล้ง\nโล่งโจ้ง\nโล่งโต้ง\nโล้งโต้ง\nโลจนะ\nโลณะ\nโลด\nโล่ติ๊น\nโลโต\nโลท\nโลน\nโล้น\nโลภ\nโลม\nโลมเล้า\nโลมะ\nโลมา\nโลลุป\nโลเล\nโลโล\nโลโล้\nโลหะ\nโลหกุมภี\nโลหัช\nโลหิต\nไล่\nไล้\nไลย\nไลลา\nไล่เลี่ย\nฦๅ\nฦๅชา\nฦๅสาย\nวก\nวง\nวงก์\nวงกต\nวงศ์\nวงศกร\nวงศา\nวงษ์\nวจนะ\nวจี\nวชิระ\nวชิรปาณี\nวชิรหัตถ์\nวชิราวุธ\nวฏะ\nวฏาการ\nวณิช\nวณิชชา\nวณิชย์\nวณิชยา\nวณิพก\nวดี\nวทนะ\nวทัญญุตา\nวทัญญู\nวธุกา\nวธู\nวน\nวนศาสตร์\nวนสณฑ์\nวนสัณฑ์\nวนอุทยาน\nวนัส\nวนัสบดี\nวนา\nวนาดร\nวนาดอน\nวนานต์\nวนาลัย\nวนาลี\nวนาวาส\nวนาศรม\nวนาสณฑ์\nวนาสัณฑ์\nวนิดา\nวนิพก\nวเนจร\nวโนทยาน\nวยัคฆ์\nวยากรณ์\nวรดนู\nวรทาน\nวรมหาวิหาร\nวรงค์\nวรณะ\nวรรค\nวรรคย์\nวรรช\nวรรชย์\nวรรณะ\nวรรณกรรม\nวรรณคดี\nวรรณยุกต์\nวรรณยุต\nวรรณศิลป์\nวรรณนา\nวรรณพฤติ\nวรรณึก\nวรรธกะ\nวรรธนะ\nวรรษ\nวรรษา\nวรวิหาร\nวรัญญู\nวรางคณา\nวรางคนา\nวราห์\nวราหะ\nวรุณ\nวโรดม\nวฤก\nวลัช\nวลัญช์\nวลัญชน์\nวลัย\nวลาหก\nวลี\nวศค\nวศะ\nวศิน\nวสนะ\nวสภะ\nวสละ\nวสวัดดี\nวสวัตตี\nวสะ\nวสันต์\nวสันตดิลก\nวสันตฤดู\nวสันตวิษุวัต\nวสา\nวสี\nวสุ\nวสุธา\nวสุนธรา\nวสุมดี\nวหะ\nวอ\nวอก\nวอกแวก\nว่องไว\nวอด\nวอน\nว่อน\nว็อบ\nวอมแวม\nวอลเลย์บอล\nวอแว\nวะ\nวัก\nวักกะ\nวัคคีย์\nวัคคุ\nวัคซีน\nวัง\nวังก์\nวังชา\nวังเวง\nวังศะ\nวังสะ\nวัจจะ\nวัจกุฎี\nวัจฉละ\nวัจน์\nวัช\nวัชชะ\nวัชพืช\nวัชฌ์\nวัชระ\nวัชรปาณี\nวัชรยาน\nวัชรอาสน์\nวัชราสน์\nวัชรินทร์\nวัชรี\nวัชเรนทร์\nวัฏ\nวัฏฏะ\nวัฏจักร\nวัฏทุกข์\nวัฏสงสาร\nวัฏกะ\nวัฏฏิ\nวัฒกะ\nวัฒกี\nวัฒนธรรม\nวัฒนะ\nวัฒนา\nวัณ\nวัณโรค\nวัณฏ์\nวัณณะ\nวัณนา\nวัด\nวัต\nวัตต์\nวัตตา\nวัตถ์\nวัตถาภรณ์\nวัตถาลังการ\nวัตถุ\nวัตนะ\nวัตร\nวัตสดร\nวัตสะ\nวัติ\nวัทน์\nวัน\nวันต์\nวันทนา\nวันทนาการ\nวันทนีย์\nวันทยหัตถ์\nวันทยาวุธ\nวันทา\nวันทิ\nวับ\nวับวาบ\nวับวาม\nวับแวบ\nวับแวม\nวัปปะ\nวัมมิกะ\nวัย\nวัลก์\nวัลคุ\nวัลย์\nวัลลภ\nวัลลี\nวัว\nวัสสะ\nวัสโสทก\nวัสดุ\nวัสตร์\nวัสน์\nวัสนะ\nวัสสานะ\nวัสสานฤดู\nวา\nว่า\nว้า\nว้าเหว่\nวาก\nว้าก\nวากยสัมพันธ์\nวากยะ\nวาง\nว่าง\nว้าง\nวาจก\nวาจา\nวาจาไปยะ\nวาจาล\nวาชเปยะ\nวาณิช\nวาณิชกะ\nวาณิชย์\nวาณี\nวาด\nวาต\nวาตะ\nวาตภัย\nวาท\nวาทศาสตร์\nวาทศิลป์\nวาทกะ\nวาทนะ\nวาทย์\nวาทยกร\nวาทิต\nวาทิน\nวาที\nวาน\nวานซืน\nว่าน\nวานร\nวานรินทร์\nวาเนเดียม\nวาบ\nวาปี\nวาม\nวามน\nวามนาวตาร\nวามะ\nวาย\nว่าย\nว้าย\nวายะ\nวาโย\nวายามะ\nวายุ\nวายุกูล\nวาร\nวาระ\nวารสาร\nวารสารศาสตร์\nวาริ\nวารี\nวาริช\nวารีช\nวาริท\nวาริธร\nวารุณ\nวารุณี\nวาล\nวาลวีชนี\nวาล์ว\nวาลิกา\nวาลุกา\nวาว\nว่าว\nว้าว่อน\nว้าวุ่น\nวาสนะ\nวาสนา\nวาสพ\nวาสะ\nวาสิน\nวาสี\nวาสุกรี\nวาสุกี\nวาสุเทพ\nวาหนะ\nวาหะ\nวาหินี\nวาฬ\nวิกขัมภ์\nวิกขัมภนะ\nวิกเขป\nวิกรม\nวิกรัย\nวิกรานต์\nวิกฤต\nวิกฤติ\nวิกล\nวิกสิต\nวิกัต\nวิกัติ\nวิกัติการก\nวิกัป\nวิกัย\nวิการ\nวิกาล\nวิกาลโภชน์\nวิคหะ\nวิเคราะห์\nวิฆเนศ\nวิฆเนศวร\nวิฆาต\nวิง\nวิ่ง\nวิ่งเปี้ยว\nวิงวอน\nวิจฉิกะ\nวิจล\nวิจักขณ์\nวิจักษ์\nวิจักษณ์\nวิจัย\nวิจาร\nวิจารณ์\nวิจารณญาณ\nวิจิ\nวิจิกิจฉา\nวิจิต\nวิจิตร\nวิจิน\nวิจุณ\nวิจุรณ\nวิชชา\nวิชชุ\nวิชชุดา\nวิชชุตา\nวิชชุลดา\nวิชญะ\nวิชน\nวิชนี\nวิชย\nวิชัย\nวิชา\nวิชานนะ\nวิชิต\nวิเชียร\nวิญญัตติ\nวิญญาณ\nวิญญาณกทรัพย์\nวิญญู\nวิฑูรย์\nวิด\nวิตก\nวิตถาร\nวิตามิน\nวิถี\nวิทธะ\nวิทยฐานะ\nวิทยา\nวิทยาคม\nวิทยาคาร\nวิทยาลัย\nวิทยุ\nวิทยุต\nวิทวัส\nวิทัตถิ\nวิทัศน์\nวิทารณ์\nวิทิต\nวิทู\nวิทูร\nวิเทศ\nวิเทโศบาย\nวิธ\nวิธวา\nวิธาน\nวิธี\nวิธุระ\nวิธู\nวิธูปนะ\nวิ่น\nวินตกะ\nวินัย\nวินาที\nวินายก\nวินาศ\nวินิจ\nวินิจฉัย\nวินิต\nวินิบาต\nวินิปาติก\nวิเนต\nวิบัติ\nวิบาก\nวิบุล\nวิบุลย์\nวิบูล\nวิบูลย์\nวิปการ\nวิปฏิสาร\nวิปโยค\nวิประโยค\nวิปริต\nวิปลาส\nวิปวาส\nวิปักษ์\nวิปัสสก\nวิปัสสนา\nวิปัสสนายานิก\nวิพากษ์\nวิพิธทัศนา\nวิพุธ\nวิภว\nวิภวตัณหา\nวิภังค์\nวิภัช\nวิภัตติ\nวิภา\nวิภาค\nวิภาช\nวิภาดา\nวิภาวี\nวิภาษ\nวิภาส\nวิภู\nวิภูษณะ\nวิภูษา\nวิภูษิต\nวิมน\nวิมล\nวิมลัก\nวิมังสา\nวิมัติ\nวิมาน\nวิมุข\nวิมุต\nวิมุตติ\nวิเมลือง\nวิโมกข์\nวิโยค\nวิระ\nวิรงรอง\nวิรังรอง\nวิรัช\nวิรัต\nวิรัติ\nวิราคะ\nวิราม\nวิริยภาพ\nวิริยะ\nวิรุธ\nวิรุฬห์\nวิรุฬหก\nวิรูป\nวิรูปักษ์\nวิเรนทร์\nวิโรจ\nวิโรจน์\nวิโรฒ\nวิโรธ\nวิลันดา\nวิลัย\nวิลาด\nวิลาศ\nวิลาป\nวิลาวัณย์\nวิลาส\nวิลาสินี\nวิลิปดา\nวิลิศมาหรา\nวิเลป\nวิเลปนะ\nวิโลกนะ\nวิโลม\nวิไล\nวิไลวรรณ\nวิวรณ์\nวิวรรธน์\nวิวัฏ\nวิวัฒน์\nวิวัฒนาการ\nวิวัน\nวิวาท\nวิวาห์\nวิวาหมงคล\nวิวาหะ\nวิวิต\nวิวิธ\nวิเวก\nวิศรุต\nวิศว\nวิศวกร\nวิศวกรรม\nวิศวกรรมศาสตร์\nวิศัลย์\nวิศาขบูชา\nวิศาขา\nวิศาล\nวิศิษฏ์\nวิศุทธ์\nวิศุทธิ์\nวิเศษ\nวิเศษณ์\nวิษณุ\nวิษณุกรรม\nวิษธร\nวิษัย\nวิษาณ\nวิษุวัต\nวิสกี้\nวิสรรชนีย์\nวิสฤต\nวิสสุกรรม\nวิสัชนา\nวิสัญญี\nวิสัย\nวิสัยทัศน์\nวิสาขบูชา\nวิสาขะ\nวิสาขา\nวิสามัญ\nวิสามานยนาม\nวิสาร\nวิสารทะ\nวิสาล\nวิสาสะ\nวิสาหกิจ\nวิสิฐ\nวิสุงคามสีมา\nวิสุทธ์\nวิสุทธิ์\nวิสูตร\nวิเสท\nวิหค\nวิหลั่น\nวิหาร\nวิหิงสา\nวิเหสา\nวิฬาร\nวิฬาร์\nวี\nวีจิ\nวีชนี\nวีณา\nวี้ด\nวีรกรรม\nวีรชน\nวีรบุรุษ\nวีรสตรี\nวี่วัน\nวี่แวว\nวีสะ\nวุ้ง\nวุฐิ\nวุฒ\nวุฒิ\nวุด\nวุ่น\nวุ้น\nวุบ\nวุ้ย\nวุลแฟรม\nวู้\nวูดวาด\nวูบ\nวู่วาม\nเว้\nเวค\nเวคิน\nเวคี\nเวจ\nเวช\nเวชยันต์\nเวฐน์\nเวณิ\nเวณิก\nเวณุ\nเวตน์\nเวตร\nเวตาล\nเวท\nเวทคู\nเวทนา\nเวทย์\nเวทัลละ\nเวทางค์\nเวทางคศาสตร์\nเวทานต์\nเวทานตะ\nเวทิ\nเวที\nเวธะ\nเวน\nเว้น\nเวนไตย\nเวไนย\nเวมัต\nเว้ย\nเวยยากรณะ\nเวร\nเวรมณี\nเวรี\nเวโรจน์\nเวลา\nเวเลนซี\nเวศม์\nเวศย์\nเวศยา\nเวสน์\nเวสภู\nเวสม์\nเวสวัณ\nเวสสะ\nเวสสันดร\nเวสสุกรรม\nเวสสุวัณ\nเวสารัช\nเวสิยา\nเวหน\nเวหะ\nเวหา\nเวหาส\nเวฬุ\nเวฬุริยะ\nเว่อ\nเว้า\nเวิก\nเวิ้ง\nเวี่ย\nเวียง\nเวียด\nเวียดนาม\nเวียน\nเวียร\nเวี่ยว\nแว้\nแวง\nแว้ง\nแวด\nแว้ด\nแวน\nแว่น\nแวนดา\nแวบ\nแว็บ\nแวม\nแว็ม\nแวว\nแว่ว\nแวะ\nโว\nโว่\nโวการ\nโว่ง\nโวทาน\nโวย\nโว้ย\nโว้เว้\nโวหาร\nไว\nไว้\nไวกูณฐ์\nไวฑูรย์\nไวทย์\nไวน์\nไวพจน์\nไวยากรณ์\nไวยาวัจกร\nไวยาวัจมัย\nไวรัส\nไววรรณ\nไวษณพ\nไวโอลิน\nศก\nศกุน\nศกุนต์\nศกุนิ\nศกุนี\nศจี\nศตะ\nศตภิษัช\nศตวรรษ\nศตพรรษ\nศตกะ\nศนิ\nศพ\nศมนะ\nศมะ\nศยาม\nศยามล\nศร\nศรายุธ\nศราวรณ์\nศรรกรา\nศรวณะ\nศรวณีย์\nศรวิษฐา\nศรัณย์\nศรัณยู\nศรัท\nศรัทธา\nศรัย\nศราทธ์\nศราทธพรต\nศราพก\nศราวก\nศราวณะ\nศรี\nศรีตรัง\nศรุติ\nศฤคาล\nศฤงค์\nศฤงคาร\nศฤงคาริน\nศฤงคารี\nศลิษฏ์\nศลิษา\nศวะ\nศวัส\nศวา\nศวาน\nศศะ\nศศธร\nศศพินทุ์\nศศลักษณ์\nศศิ\nศศิน\nศศี\nศศิขัณฑ์\nศศิธร\nศศิมณฑล\nศศิวิมล\nศอ\nศอก\nศักดา\nศักดิ\nศักดิ์\nศักดินา\nศักติ\nศักย\nศักยภาพ\nศักย์\nศักยะ\nศักร\nศักรินทร์\nศักเรนทร์\nศักราช\nศังกร\nศัตรู\nศันสนะ\nศันสนีย์\nศัพท์\nศัยยา\nศัล\nศัลย์\nศัลยกรรม\nศัลยแพทย์\nศัลยศาสตร์\nศัสดร\nศัสตร\nศัสตรศาสตร์\nศัสตรา\nศัสตราวุธ\nศากตะ\nศากย\nศากยะ\nศากยพุทธ\nศากยมุนี\nศาฎก\nศาณ\nศานต์\nศานติ\nศาป\nศารท\nศารทูล\nศาริกา\nศาล\nศาลา\nศาศวัต\nศาสดา\nศาสตร์\nศาสตรา\nศาสตราจารย์\nศาสนา\nศาสนกิจ\nศาสนจักร\nศาสนธรรม\nศาสนบุคคล\nศาสนพิธี\nศาสนวัตถุ\nศาสนศาสตร์\nศาสนสถาน\nศาสนสมบัติ\nศาสนิกชน\nศาสนีย์\nศาสนูปถัมภก\nศาสน์\nศิกษก\nศิการ\nศิขร\nศิขริน\nศิขรี\nศิขัณฑ์\nศิคาล\nศิงขร\nศิงขริน\nศิตะ\nศิถี\nศิพิระ\nศิระ\nศิรประภา\nศิราภรณ์\nศิโรรัตน์\nศิโรเวฐน์\nศิรา\nศิรามพุช\nศิโรราบ\nศิลป\nศิลป์\nศิลปะ\nศิลปกร\nศิลปกรรม\nศิลปกิจ\nศิลปวัตถุ\nศิลปวิทยา\nศิลปศาสตร์\nศิลปศึกษา\nศิลปหัตถกรรม\nศิลปิน\nศิลปี\nศิลา\nศิวะ\nศิวโมกข์\nศิวลึงค์\nศิวเวท\nศิวาลัย\nศิศีระ\nศิษฎิ\nศิษฏ์\nศิษย์\nศิษยานุศิษย์\nศีขร\nศีต\nศีตกาล\nศีรษะ\nศีล\nศึก\nศึกษา\nศึกษาธิการ\nศึกษานิเทศก์\nศุกร์\nศุกรวรรณ\nศุกรวาร\nศุกระ\nศุกล\nศุกลปักษ์\nศุจิ\nศุทธะ\nศุทธิ\nศุนะ\nศุนิ\nศุภกร\nศุภเคราะห์\nศุภนิมิต\nศุภมัสดุ\nศุภมาตรา\nศุภมาส\nศุภอักษร\nศุภางค์\nศูกร\nศุลกากร\nศุลการักษ์\nศุลี\nศุษิร\nศูทร\nศูนย์\nศูนยวาท\nศูละ\nศูลิน\nเศรณี\nเศรษฐ\nเศรษฐ์\nเศรษฐกิจ\nเศรษฐศาสตร์\nเศรษฐี\nเศร้า\nเศลษ\nเศวต\nเศวตร\nเศวตัมพร\nเศษ\nเศาจ\nเศาร์\nเศารยะ\nเศิก\nเศียร\nโศก\nโศกา\nโศกาดูร\nโศกาลัย\nโศกี\nโศจิ\nโศธนะ\nโศภน\nโศภะ\nโศภา\nโศภิต\nโศภิน\nโศภิษฐ์\nโศภี\nโศรดา\nโศรตร\nโศลก\nไศล\nไศวะ\nษมา\nษัฏ\nษัฑ\nษัณ\nษัษ\nษัษฐะ\nษัษฐี\nโษฑศัน\nสก\nสกวาที\nสกฏะ\nสกทาคามิผล\nสกิทาคามิผล\nสกทาคามิมรรค\nสกิทาคามิมรรค\nสกทาคามี\nสกิทาคามี\nสกนธ์\nสกปรก\nสกรณีย์\nสกรรจ์\nสกรรมกริยา\nสกล\nสกลมหาสังฆปริณายก\nสกัด\nสกา\nสกาว\nสกี\nสกุณ\nสกุณา\nสกุณี\nสกุน\nสกุนต์\nสกุล\nสเกต\nสแกนเดียม\nสขะ\nสง\nส่ง\nสงกร\nสงกรานต์\nสงกา\nสงค์\nสงคร\nสงคราม\nสงเคราะห์\nสงฆ์\nสงบ\nสงวน\nส่งสการ\nสงสัย\nสงสาร\nสงสารวัฏ\nสงัด\nสง่า\nสฐะ\nสณฑ์\nสด\nสดมภ์\nสดับ\nสดับปกรณ์\nสดำ\nสดุดี\nสตะ\nสตน\nสตภิสชะ\nสตรอนเชียม\nสตริกนิน\nสตรี\nสตัฟฟ์\nสตัมภ์\nสตางค์\nสติ\nสติปัฏฐาน\nสตี\nสตู\nสตูป\nสเต๊ก\nสถบดี\nสถล\nสถวีระ\nสถาน\nสถานะ\nสถานี\nสถาบัน\nสถาปนา\nสถาปนิก\nสถาปัตยกรรม\nสถาปัตยกรรมศาสตร์\nสถาปัตยเรขา\nสถาปัตยเวท\nสถาพร\nสถาวร\nสถิต\nสถิตยศาสตร์\nสถิติ\nสถิร\nสถีรวาท\nสถุล\nสถูป\nสทิง\nสทึง\nสทุม\nสธนะ\nสาธุสะ\nสน\nส้น\nสนทนา\nสนทรรศ\nสนทรรศน์\nสนเทศ\nสนเท่ห์\nสนธยา\nสนธิ\nสนน\nสนม\nสนวน\nสนอง\nสนอบ\nสนอม\nสนะ\nสนัด\nสนั่น\nสนับ\nสนับทึบ\nสนับสนุน\nสนาน\nสนาม\nสนายุ\nสนิกะ\nสนิท\nสนิธ\nสนิม\nสนุก\nสนุกเกอร์\nสนุข\nสนุต\nสนุ่น\nสบ\nสบง\nสบถ\nสบัน\nสบาย\nสบู่\nสไบ\nสปริง\nสปอร์\nสปาเกตตี\nสเปกตรัม\nสเปกโทรสโกป\nสไปริลลัม\nสพาบ\nสภา\nสภาพ\nสภาวการณ์\nสภาวะ\nสม\nสมการ\nสมจารี\nสมดุล\nสมมูล\nส้ม\nสมญา\nสมณะ\nสมณบริขาร\nสมณศักดิ์\nสมณสารูป\nสมเด็จ\nสมถะ\nสมถยานิก\nสมถวิปัสสนา\nสมนาคุณ\nสมบัติ\nสมบุกสมบัน\nสมบูรณ์\nสมบูรณาญาสิทธิราชย์\nสมประดี\nสมปฤดี\nสมปฤๅดี\nส้มป่อย\nสมปัก\nสมผุส\nสมพง\nสมพงศ์\nสมพล\nสมพัตสร\nสมพาส\nสมเพช\nสมโพธน์\nสมโพธิ\nสมภพ\nสมภาร\nสมโภค\nสมโภช\nสมมต\nสมมติ\nสมมุติ\nสมมาตร\nส้มมือ\nสมโมท\nสมโยค\nสมร\nสมรด\nสมรรถ\nสมรรถนะ\nสมรรถภาพ\nสมรส\nสมฤดี\nสมฤติ\nสมวายะ\nสมเสร็จ\nสมอ\nสมอง\nสมะ\nสมัคร\nสมังคี\nสมัช\nสมัชชา\nสมัญญา\nสมัต\nสมัน\nสมันต์\nสมัย\nสมา\nสมาคม\nสมาจาร\nสมาชิก\nสมาทาน\nสมาธิ\nสมาน\nสมานฉันท์\nสมาบัติ\nสมาพันธรัฐ\nสมาส\nสม่ำเสมอ\nสมิง\nสมิต\nสมิติ\nสมิทธ์\nสมิทธิ\nสมี\nสมุก\nสมุจจัย\nสมุจเฉท\nสมุฏฐาน\nสมุด\nสมุทร\nสมุทรโคดม\nสมุทัย\nสมุน\nสมุนไพร\nสมุลแว้ง\nสมุห\nสมุห์\nสมุหกลาโหม\nสมุหเทศาภิบาล\nสมุหนาม\nสมุหนายก\nสโมธาน\nสโมสร\nสยด\nสยนะ\nสยบ\nสยมพร\nสยมภู\nสยอง\nสยอน\nสยัมวรา\nสยาม\nสยามานุสติ\nสยามินทร์\nสยาย\nสยิว\nสยิ้ว\nสยุมพร\nสยุมภู\nสร\nสรง\nสร่ง\nสรณะ\nสรณคมน์\nสรณาคมน์\nสรณตรัย\nสรตะ\nสรทะ\nสรนุก\nสรเนาะ\nสรไน\nสรเพชญ\nสรภะ\nสรภัญญะ\nสรภู\nสรม\nสรร\nสรรค์\nสรรพ\nสรรพคุณ\nสรรพนาม\nสรรพสามิต\nสรรพัชญ\nสรรพากร\nสรรพางค์\nสรรเพชญ\nสรรเพชุดา\nสรรเสริญ\nสรลอน\nสรเลข\nสรวง\nสรวม\nสรวล\nสรเสริญ\nสร้อย\nสระ\nสระกอ\nสระท้อน\nสระพรั่ง\nสระอาด\nสรั่ง\nสรัสวดี\nสร่าง\nสร้าง\nสราญ\nสรี้\nสรีระ\nสรีรกิจ\nสรีรธาตุ\nสรีรวิทยา\nสรีรศาสตร์\nสรีรังคาร\nสรีรางคาร\nสรุป\nสโรช\nสโรชะ\nสฤก\nสฤต\nสฤษฎิ\nสฤษฎี\nสฤษฏ์\nสฤษดิ์\nสลด\nสลบ\nสลวน\nสลวย\nสลอด\nสลอน\nสลอย\nสละ\nสลัก\nสลัด\nสลัดได\nสลับ\nสลัว\nสลา\nสลาก\nสลาง\nสล้าง\nสลาด\nสลาตัน\nสลาบ\nสลาย\nสลิด\nสลิล\nสลึก\nสลึง\nสลุต\nสลุบ\nสลุมพร\nสแลง\nสวการย์\nสวภาพ\nสวราชย์\nสวก\nส้วง\nสวด\nสวน\nสวนะ\nสวนาการ\nส่วน\nสวนิต\nสวบ\nสวม\nส้วม\nสวย\nส่วย\nส้วย\nสวยม\nสวรรค\nสวรรค์\nสวรรคต\nสวรรคาลัย\nสวรรยา\nสวระ\nสวะ\nสวัสดิ\nสวัสดิ์\nสวัสดิการ\nสวัสดิภาพ\nสวัสดิมงคล\nสวัสดี\nสวัสติ\nสวาตี\nสวัสติกะ\nสวา\nสวาปาม\nสวาคตะ\nสวาง\nสว่าง\nสวาด\nสวาดิ\nสวาท\nสว่าน\nสว้าน\nสวาบ\nสวามิ\nสวามี\nสวามินี\nสวาย\nสวาสดิ์\nสวาหะ\nสวิง\nสวิญญาณกทรัพย์\nสวิตช์\nสสาร\nสสุระ\nสสุรี\nสหกรณ์\nสหการ\nสหจร\nสหชาต\nสหชาติ\nสหธรรม\nสหธรรมิก\nสหประชาชาติ\nสหพันธ์\nสหพันธรัฐ\nสหภาพ\nสหศึกษา\nสหัช\nสหัมบดี\nสหัส\nสหัสสะ\nสหัสธารา\nสหัสนัยน์\nสหัสเนตร\nสหัสรังสี\nสหัสา\nสหาย\nสอ\nส่อ\nสอง\nส่อง\nส้อง\nสอด\nสอน\nส่อน\nสอบ\nสอพลอ\nส้อม\nสอย\nสะ\nสะกด\nสะกอ\nสะกาง\nสะการะ\nสะกิด\nสะกิดสะเกา\nสะเก็ด\nสะแก\nสะคร้อ\nสะคราญ\nสะค้าน\nสะเงาะสะแงะ\nสะดม\nสะดวก\nสะดิ้ง\nสะดึง\nสะดือ\nสะดุ้ง\nสะดุด\nสะเด็ด\nสะเดา\nสะเดาะ\nสะตอ\nสะตาหมัน\nสะตึ\nสะตือ\nสะตุ\nสะเต๊ะ\nสะโตก\nสะทก\nสะท้อน\nสะท้าน\nสะทึก\nสะเทิน\nสะเทิ้น\nสะเทือน\nสะเทื้อน\nสะบะ\nสะบัก\nสะบักสะบอม\nสะบัด\nสะบัดสะบิ้ง\nสะบั้น\nสะบันงา\nสะบ้า\nสะบู\nสะแบง\nสะเปะสะปะ\nสะพรั่ง\nสะพรึงกลัว\nสะพรึบ\nสะพรึ่บ\nสะพัก\nสะพัง\nสะพัด\nสะพั้น\nสะพาน\nสะพาย\nสะเพร่า\nสะโพก\nสะเภา\nสะใภ้\nสะโมง\nสะระตะ\nสะระแหน่\nสะลาง\nสะลาบ\nสะลึมสะลือ\nสะวี้ดสะว้าด\nสะสม\nสะสวย\nสะสาง\nสะเหล่อ\nสะอาง\nสะอาด\nสะอ้าน\nสะอิ้ง\nสะอิดสะเอียน\nสะอึก\nสะอื้น\nสะเอ้ง\nสะเอว\nสะเออะ\nสะโอดสะอง\nสะไอ\nสัก\nสักกะ\nสักยะ\nสักกัจจะ\nสักกายทิฐิ\nสักการ\nสักการะ\nสักขี\nสักวา\nสักหลาด\nสัค\nสัคคะ\nสั่ง\nสังกร\nสังกรณี\nสังกรประโยค\nสังกะตัง\nสังกะวัง\nสังกะวาด\nสังกะสี\nสังกัด\nสังกัปปะ\nสังกา\nสังการ\nสังกาศ\nสังกิเลส\nสังเกต\nสังข์\nสังขกร\nสังขตธรรม\nสังขตะ\nสังขยา\nสังขลิก\nสังขลิกา\nสังขาร\nสังขารา\nสังเขป\nสังค์\nสังคญาติ\nสังคม\nสังคหะ\nสังคัง\nสังคายนา\nสังคายนาย\nสังคีต\nสังคีติ\nสังเค็ด\nสังเคราะห์\nสังฆกรรม\nสังฆการี\nสังฆเถระ\nสังฆทาน\nสังฆนายก\nสังฆปาโมกข์\nสังฆภัต\nสังฆเภท\nสังฆมณฑล\nสังฆมนตรี\nสังฆราช\nสังฆสภา\nสังฆาณัติ\nสังฆาฏิ\nสังฆาทิเสส\nสังฆาธิการ\nสังฆานุสติ\nสังฆาวาส\nสังยุตนิกาย\nสังโยค\nสังโยชน์\nสังวร\nสังวัจฉระ\nสังวัธยาย\nสังวาล\nสังวาส\nสังเวคะ\nสังเวช\nสังเวชนียสถาน\nสังเวย\nสังเวียน\nสังสกฤต\nสังสการ\nสังสนทนา\nสั่งสนทนา\nสังสรรค์\nสังสารวัฏ\nสังสิทธิ\nสังสุทธ์\nสังสุทธิ\nสังหร\nสังหรณ์\nสังหาร\nสังหาริมทรัพย์\nสังหาริมะ\nสังหิต\nสัจ\nสัจกิริยา\nสัจจะ\nสัจญาณ\nสัจธรรม\nสัจนิยม\nสัจพจน์\nสัชฌะ\nสัชฌุ\nสัญจร\nสัญเจตนา\nสัญชาตญาณ\nสัญชาติ\nสัญฌา\nสัญญา\nสัญญาณ\nสัญญี\nสัญโญชน์\nสัญนิยม\nสัญประกาศ\nสัญลักษณ์\nสัฐิ\nสัณฐาน\nสัณฐิติ\nสัณฑ์\nสัณห์\nสัด\nสัดจอง\nสัต\nสัตตะ\nสัตตาหกรณียะ\nสัตตาหกาลิก\nสัตมวาร\nสัตสดก\nสัตตบงกช\nสัตตบรรณ\nสัตตบุษย์\nสัตตู\nสัตถันดร\nสัตถา\nสัตถิ\nสัตถุ\nสัตถุศาสนา\nสัตบรรณ\nสัตย์\nสัตยพรต\nสัตยวาที\nสัตยาเคราะห์\nสัตยาธิษฐาน\nสัตยาบัน\nสัตว์\nสัตวชาติ\nสัตวบาล\nสัตวแพทย์\nสัตววิทยา\nสัตวา\nสัทธรรม\nสัทธา\nสัทธาจริต\nสัทธาธิกะ\nสัทธินทรีย์\nสัทธิงวิหาริก\nสัทธิวิหาริก\nสัทวิทยา\nสัทศาสตร์\nสัทอักษร\nสัน\nสั่น\nสั้น\nสันดาน\nสันดาป\nสันโดษ\nสันต์\nสันตติ\nสันตะปาปา\nสันตะวา\nสันติ\nสันตุฏฐี\nสันถวไมตรี\nสันถวะ\nสันถัต\nสันถาร\nสันทนะ\nสันทะ\nสันทัด\nสันทัสนะ\nสันทาน\nสันทิฐิก\nสันทิส\nสันเทหะ\nสันธาน\nสันนิธิ\nสันนิบาต\nสันนิวาส\nสันนิษฐาน\nสันสกฤต\nสับ\nสับปลับ\nสับปลี้\nสับปะรด\nสัปคับ\nสัปดาห์\nสัปดาหะ\nสัปดน\nสัปตศก\nสัปทน\nสัปปะ\nสัปปิ\nสัปปุริส\nสัปปุรุษ\nสัประยุทธ์\nสัปหงก\nสัปเหร่อ\nสัพ\nสัพพะ\nสัพพัญญู\nสัพเพเหระ\nสัพยอก\nสัมบูรณ์\nสัมปชัญญะ\nสัมปทา\nสัมปทาน\nสัมปยุต\nสัมปโยค\nสัมประสิทธิ์\nสัมประหาร\nสัมปรายภพ\nสัมปรายิกภพ\nสัมปัตติ\nสัมผัปลาป\nสัมผัปลาปะ\nสัมผัส\nสัมพล\nสัมพหุลา\nสัมพัจฉรฉินท์\nสัมพัตสร\nสัมพัทธ์\nสัมพันธ์\nสัมพันธน์\nสัมพันธภาพ\nสัมพันธมิตร\nสัมพันธไมตรี\nสัมพาหะ\nสัมพุทธ\nสัมพุทธะ\nสัมโพธิ\nสัมภวะ\nสัมภเวสี\nสัมภัต\nสัมภัตตะ\nสัมภาระ\nสัมภาษณ์\nสัมโภคกาย\nสัมมนา\nสัมมัปธาน\nสัมมา\nสัมโมทนียกถา\nสัมฤทธิ\nสัมฤทธิ์\nสัมฤทธิศก\nสัยน์\nสัลเลข\nสัสดี\nสัสตทิฐิ\nสัสสะ\nสัสสุ\nสัสสู\nสา\nส่า\nสาก\nสากรรจ์\nสากล\nสากัจฉา\nสากัลย์\nสากิยะ\nสาเก\nสาขา\nสาคร\nสาคเรศ\nสาคู\nสาง\nส้าง\nสาชล\nสาฎก\nสาฏิก\nสาณี\nสาด\nสาไถย\nสาทร\nสาทิส\nสาทุ\nสาโท\nสาธก\nสาธยะ\nสาธยาย\nสาธารณะ\nสาธารณชน\nสาธารณประโยชน์\nสาธารณภัย\nสาธารณรัฐ\nสาธารณสถาน\nสาธารณสมบัติ\nสาธารณสุข\nสาธารณูปการ\nสาธารณูปโภค\nสาธารณ์\nสาธิต\nสาธุ\nสาน\nส่าน\nสานุ\nสานู\nสานุศิษย์\nสาบ\nสาบสูญ\nสาบาน\nสาป\nสาปไตย\nสาม\nสามชุก\nสามเณร\nสามเณรี\nสามนต์\nสามนตราช\nสามยทรัพย์\nสามล\nสามหาว\nสามะ\nสามัคคี\nสามัญ\nสามัตถิยะ\nสามานย์\nสามานยนาม\nสามารถ\nสามิต\nสามินี\nสามิภักดิ์\nสามี\nสามีจิกรรม\nสาย\nส่าย\nส้าย\nสายชู\nสายัณห์\nสายาห์\nสาร\nสารคดี\nสารธรรม\nสารนิเทศ\nสารบบ\nสารบรรณ\nสารบัญ\nสารบาญ\nสารบาญชี\nสารประโยชน์\nสารสนเทศ\nสารทุกข์\nสารถี\nสารท\nสารพัด\nสารพัน\nสารพางค์\nสารภาพ\nสารภี\nสารวัตร\nสาระ\nสาระแน\nสาระพา\nสาระยำ\nสาระวารี\nสาระสะมา\nสารัตถประโยชน์\nสารัตถศึกษา\nสารัตถะ\nสารัทธ์\nสารัมภ์\nสาราณียกร\nสาราณียธรรม\nสาราณียะ\nสารานุกรม\nสารีริกธาตุ\nสารูป\nสาโรช\nสาละ\nสาละวน\nสาลิ\nสาลิกา\nสาลินี\nสาลี\nสาลี่\nสาลู\nสาโลหิต\nสาว\nสาวก\nสาวิกา\nสาวิตร\nสาวิตรี\nสาสน\nสาสน์\nสาส์น\nสาสนา\nสาสม\nสาหร่าย\nสาหรี\nส่าหรี\nสาหัส\nสาเหตุ\nสาแหรก\nสำ\nสำส่อน\nส่ำ\nสำคัญ\nสำซ่าง\nสำแดง\nสำทับ\nสำนวน\nสำนอง\nสำนัก\nสำนาน\nสำนึก\nสำนึง\nสำเนา\nสำเนียง\nสำบัด\nสำปะลอ\nสำปะหลัง\nสำปั้น\nสำปันนี\nสำเภา\nสำมะงา\nสำมะโน\nสำมะลอ\nสำมะเลเทเมา\nสำมะหา\nสำรด\nสำรวจ\nสำรวม\nสำรวย\nสำรวล\nสำรอก\nสำรอง\nสำรับ\nสำราก\nสำราญ\nสำริด\nสำเร็จ\nสำเรา\nสำเริง\nสำโรง\nสำลัก\nสำลาน\nสำลี\nสำแลง\nสำหรวด\nสำหรับ\nสำหา\nสำเหนียก\nสำเหร่\nสำออย\nสำอาง\nสิ\nสิกข์\nสิข\nสิกขมานา\nสิกขา\nสิขร\nสิขรี\nสิขเรศ\nสิขา\nสิขานล\nสิขี\nสิคาล\nสิง\nสิ่ง\nสิงขร\nสิงค์\nสิงคลิ้ง\nสิงคลี\nสิงคาร\nสิงคาล\nสิงคี\nสิงโต\nสิงห์\nสิงหนาท\nสิงหบัญชร\nสิงหรา\nสิงหราช\nสิงหาคม\nสิงหาสน์\nสิงหล\nสิญจน์\nสิตะ\nสิตางศุ์\nสิถิล\nสิทธ์\nสิทธัตถะ\nสิทธา\nสิทธาจารย์\nสิทธารถ\nสิทธิ\nสิทธิ์\nสิทธิการิยะ\nสิธยะ\nสิน\nสิ้น\nสินเทา\nสินธพ\nสินธุ\nสินธุ์\nสินธุระ\nสินธู\nสินเธาว์\nสินาด\nสินิทธ์\nสินี\nสิเนรุ\nสิเนหก\nสิเนหะ\nสิเนหา\nสิเน่หา\nสิบ\nสิปปะ\nสิมพลี\nสิระ\nสิโรดม\nสิโรตม์\nสิริ\nสิรี\nสิลา\nสิว\nสิ่ว\nสิวะ\nสิวาลัย\nสิวิกา\nสี\nสี่\nสี้\nสีกา\nสีกุน\nสีข้าง\nสีด\nสีดอ\nสีดา\nสีตลรัศมี\nสีตโลทก\nสีโตทก\nสีทันดร\nสีมันต์\nสีมา\nสีละมัน\nสีวิกา\nสีสอ\nสีสะ\nสีสา\nสีสุก\nสีเสียด\nสีห์\nสีหนาท\nสีหบัญชร\nสีหราช\nสีหไสยา\nสีหไสยาสน์\nสีหะ\nสึก\nสึง\nสืบ\nสื่อ\nสุ\nสุก\nสุกข์\nสุกร\nสุกรม\nสุกำศพ\nสุกียากี้\nสุข\nสุขา\nสุขาภิบาล\nสุขารมณ์\nสุขาวดี\nสุขิน\nสุขี\nสุขุม\nสุขุมาล\nสุโข\nสุคต\nสุคติ\nสุคนธ\nสุคนธ์\nสุคนธชาติ\nสุคนธรส\nสุคันธ์\nสุคันธรส\nสุงกะ\nสุงกากร\nสุงสิง\nสุงสุมาร\nสุจริต\nสุจหนี่\nสุจิ\nสุจิต\nสุจิตร\nสุชน\nสุชัมบดี\nสุชา\nสุชาดา\nสุญ\nสุญญากาศ\nสุญตา\nสุญนิยม\nสุณ\nสุณิสา\nสุด\nสุดา\nสุต\nสุตตนิบาต\nสุตตะ\nสุตตันตปิฎก\nสุตตันตะ\nสุติ\nสุทธ\nสุทธ์\nสุทธาวาส\nสุทธิ\nสุทรรศน์\nสุทัศน์\nสุธา\nสุธาโภชน์\nสุธารส\nสุธาสินี\nสุธาสี\nสุธี\nสุนทร\nสุนทรี\nสุนทรียภาพ\nสุนทรียศาสตร์\nสุนทรียะ\nสุนัข\nสุนันท์\nสุโนก\nสุบดี\nสุบรรณ\nสุบิน\nสุปรีดิ์\nสุปรีย์\nสุปาณี\nสุพพัต\nสุพรรณ\nสุพรรณบัฏ\nสุพรรณภาชน์\nสุพรรณราช\nสุพรรณศรี\nสุพรรณถัน\nสุพรรณิการ์\nสุภร\nสุภัค\nสุภา\nสุภาพ\nสุภาษิต\nสุม\nสุ่ม\nสุมทุม\nสุมน\nสุมนะ\nสุมนัส\nสุมนา\nสุ้มเสียง\nสุมะ\nสุมาลี\nสุเมธ\nสุเมรุ\nสุรคต\nสุรเชษฐ์\nสุรบดี\nสุรภาพ\nสุรโลก\nสุรสีหนาท\nสุรเสียง\nสุรงค์\nสุรังค์\nสุรภี\nสุรัติ\nสุรัสวดี\nสุรา\nสุรางค์จำเรียง\nสุรางคนา\nสุรางคนางค์\nสุรารักษ์\nสุราลัย\nสุรินทร์\nสุรินทราหู\nสุริยะ\nสุริยกันต์\nสุริยกานต์\nสุริยการ\nสุริยกาล\nสุริยคติ\nสุริยคราส\nสุริยมณฑล\nสุริยวงศ์\nสุริยง\nสุริยา\nสุริเยนทร์\nสุริเยศ\nสุริโย\nสุริยน\nสุริยัน\nสุริยุปราคา\nสุรีย์\nสุรุ่ยสุร่าย\nสุลต่าน\nสุวคนธ์\nสุวภาพ\nสุวรรณ\nสุวรรณภูมิ\nสุวะ\nสุวาน\nสุวินัย\nสุวิมล\nสุษิระ\nสุสาน\nสุหนัต\nสุหร่ง\nสุหร่าย\nสุหฤท\nสุหัท\nสุเหร่า\nสู\nสู่\nสู้\nสูง\nสูจิ\nสูจิบัตร\nสูญ\nสูด\nสูต\nสูตร\nสูติ\nสูติกรรม\nสูตินรีเวช\nสูติบัตร\nสูติแพทย์\nสูติศาสตร์\nสูท\nสูทกรรม\nสูทศาสตร์\nสูบ\nสูปะ\nสูร\nสูรย์\nสูรยกานต์\nสูริ\nสูสี\nเส\nเสก\nเสกขบุคคล\nเสกขะ\nเสขบุคคล\nเสขะ\nเส็ง\nเส้ง\nเส็งเคร็ง\nเสงี่ยม\nเสฏฐี\nเสณี\nเสด\nเสด็จ\nเสตุ\nเสถียร\nเสทะ\nเสโท\nเสน\nเส้น\nเสนง\nเสน่ง\nเสน่ห์\nเสนหา\nเสน่หา\nเสนอ\nเสนะ\nเสนา\nเสนาธิการ\nเสนาบดี\nเสน่า\nเสนากุฎ\nเสนางค์\nเสนางคนิกร\nเสนานี\nเสนาสนะ\nเสนาะ\nเสนี\nเสนีย์\nเสนียะ\nเสนียด\nเสบย\nเสบียง\nเสพ\nเสพย์\nเสเพล\nเสภา\nเสม็ด\nเสมหะ\nเสมอ\nเสมา\nเสมียน\nเสมือน\nเสย\nเสร็จ\nเสริด\nเสริม\nเสรี\nเสลด\nเสลบรรพต\nเสลา\nเสลี่ยง\nเสลือกสลน\nเสโล\nเสวก\nเสวกามาตย์\nเสวนะ\nเสวนา\nเสวย\nเสวียน\nเสสรวง\nเสสรวล\nเสา\nเส้า\nเสาร์\nเสารภย์\nเสารี\nเสาวคนธ์\nเสาวธาร\nเสาวภา\nเสาวภาคย์\nเสาวภาพ\nเสาวรภย์\nเสาวรส\nเสาวลักษณ์\nเสาวณิต\nเสาวนะ\nเสาวนา\nเสาวนีย์\nเสาหฤท\nเสาะ\nเสาะแสะ\nเสิร์จ\nเสิร์ฟ\nเสีย\nเสียง\nเสี่ยง\nเสียด\nเสี้ยน\nเสียบ\nเสียม\nเสี่ยม\nเสี้ยม\nเสียว\nเสี่ยว\nเสี้ยว\nเสือ\nเสื่อ\nเสื้อ\nเสือก\nเสื่อม\nแส\nแส่\nแส้\nแสก\nแสง\nแสด\nแสดง\nแสตมป์\nแสน\nแสนย์\nแสนยากร\nแสนยานุภาพ\nแสบ\nแสม\nแสยก\nแสยง\nแสยะ\nแสรก\nแสร้ง\nแสลง\nแสล้ม\nแสวง\nแสะ\nโสก\nโสกโดก\nโสกันต์\nโสโครก\nโสณฑ์\nโสณิ\nโสณี\nโสด\nโสดก\nโสดม\nโสดา\nโสดาบัน\nโสดาปัตติผล\nโสดาปัตติมรรค\nโสต\nโสตทัศนวัสดุ\nโสตทัศนอุปกรณ์\nโสตทัศนูปกรณ์\nโสตินทรีย์\nโสตถิ\nโสทก\nโสทร\nโสธก\nโสธนะ\nโสน\nโสภณ\nโสภา\nโสภี\nโสภิณี\nโสเภณี\nโสม\nโสมนัส\nโสมม\nโสมย์\nโสร่ง\nโสรจ\nโสรวาร\nโสโร\nโสวรรณ\nโสหุ้ย\nโสฬส\nใส\nใส่\nไส\nไส้\nไสย\nไสยา\nไสยาสน์\nไสร้\nไสว\nหก\nหกคะเมน\nหง\nหงก\nหงส์\nหงสบาท\nหงสรถ\nหงอ\nหงอก\nหง่อง\nหงองแหงง\nหงอด\nหงอน\nหง่อม\nหงอย\nหง่อย\nหงัก\nหงับ\nหง่าง\nหงาย\nหง่าว\nหงำ\nหงิก\nหงิง\nหงิม\nหงึก\nหงุงหงิง\nหงุดหงิด\nหงุบ\nหงุ่ย\nหญ้า\nหญ้าฝรั่น\nหญ้ายายเภา\nหญิง\nหญิบ\nหด\nหตะ\nหทัย\nหน\nหนวก\nหน่วง\nหนวด\nหน่วย\nหน่วยกิต\nหนอ\nหน่อ\nหนอก\nหนอง\nหนอน\nหนอนตายหยาก\nหน่อย\nหน็อยแน่\nหนัก\nหนัง\nหนังสติ๊ก\nหนังสือ\nหนั่น\nหนับ\nหนา\nหน้า\nหน่าง\nหนาด\nหนาน\nหนาม\nหน่าย\nหนาว\nหนำ\nหนำเลี้ยบ\nหนี\nหนี้\nหนีบ\nหนึก\nหนึ่ง\nหนึบ\nหนืด\nหนุ\nหนุน\nหนุบ\nหนุ่ม\nหนุ่ย\nหนู\nห่ม\nหมก\nหมด\nหม่น\nหมวก\nหมวด\nหมวน\nหมอ\nหม่อ\nหม้อ\nหมอก\nหมอง\nหม่อง\nหมอน\nหม่อน\nหมอบ\nหม่อม\nหมอย\nหม้อห้อม\nหมัก\nหมักหมม\nหมัด\nหมัน\nหมั่น\nหมั้น\nหมับ\nหมา\nหม่า\nหมาก\nหมากฮอส\nหมาง\nหมาด\nหมามุ่ย\nหมามุ้ย\nหมาย\nหม้าย\nหมาร่า\nหม่ำ\nหม้ำ\nหมิ่น\nหมี\nหมี่\nหมึก\nหมืน\nหมื่น\nหมุด\nหมุน\nหมุบ\nหมุบหมับ\nหมุบหมิบ\nหมุ่ย\nหมุยขาว\nหมู\nหมู่\nหมูหริ่ง\nหยก\nหย่ง\nหยด\nหยวก\nหยวบ\nหยอก\nหยอกเอิน\nหย็อกหย็อย\nหยอง\nหย็อง\nหย่อง\nหย็องกรอด\nหย็องแหย็ง\nหยอด\nหยอน\nหย่อน\nหย่อม\nหย็อมแหย็ม\nหย็อย\nหย่อย\nหยัก\nหยักไย่\nหยักเหยา\nหยัง\nหยั่ง\nหยังหยัง\nหยัด\nหยัน\nหยับ\nหยั่วเมือง\nหย่า\nหยากเยื่อ\nหยากไย่\nหยาด\nหยาบ\nหยาม\nหยาว\nหย้าว\nหยำเป\nหยำเหยอะ\nหยำแหยะ\nหยิก\nหยิ่ง\nหยิบ\nหยิม\nหยี\nหยี่\nหยุกหยิก\nหยุด\nหยุ่น\nหยุบ\nหยุมหยิม\nหยูกยา\nหโยดม\nหรคุณ\nหรณะ\nหรดาล\nหรดี\nหรรษ์\nหรรษา\nหรอ\nหรอก\nหร็อมแหร็ม\nหรอย\nหระ\nหรับ\nหรา\nหริ\nหริ่ง\nหริณะ\nหริต\nหริตกี\nหรีตกี\nหรี่\nหรีด\nหรือ\nหรุบ\nหรุบรู่\nหรุบหรู่\nหรุ่ม\nหรู\nหรูหรา\nหฤทัย\nหฤทย์\nหฤษฎ์\nหฤษฎี\nหฤหรรษ์\nหฤโหด\nหลง\nหลงใหล\nหลงจู๊\nหลด\nหลน\nหล่น\nหลบ\nหล่ม\nหลวง\nหลวม\nหลอ\nหล่อ\nหลอก\nหลอด\nหลอน\nหล็อน\nหล่อน\nหลอม\nหละ\nหละหลวม\nหลัก\nหลัง\nหลั่ง\nหลัด\nหลั่น\nหลับ\nหลัว\nหลา\nหล้า\nหลาก\nหลาน\nหลาบ\nหลาม\nหลาย\nหลาว\nหลิ่ง\nหลิท\nหลิน\nหลิม\nหลิว\nหลิ่ว\nหลี\nหลีก\nหลีโก\nหลีบ\nหลีฮื้อ\nหลืบ\nหลุกหลิก\nหลุด\nหลุน\nหลุบ\nหลุม\nหลุมพอ\nหลุมพี\nหลู่\nหวง\nห่วง\nห้วง\nหวด\nหวน\nห้วน\nหวย\nห้วย\nหวอ\nหวอด\nหวะ\nหวัง\nหวัด\nหวั่น\nหวันยิหวา\nหวัว\nหวัวร่อ\nหวัวเราะ\nหวา\nหว่า\nหว้า\nหวาก\nหว่าง\nหวาด\nหวาน\nหว่าน\nหวาม\nหวาย\nหวำ\nหวิด\nหวิว\nหวี\nหวี่\nหวีด\nหวือ\nหวุดหวิด\nหวูด\nหอ\nห่อ\nห้อ\nหอก\nหอง\nห้อง\nหอน\nห่อน\nหอบ\nหอม\nห้อม\nหอย\nห้อย\nหะ\nหะยี\nหะหาย\nหัก\nหัจญ์\nหัจญี\nหัช\nหัฏฐะ\nหัด\nหัต\nหัตถ์\nหัตถกรรม\nหัตถการ\nหัตถกิจ\nหัตถบาส\nหัตถพันธ์\nหัตถาภรณ์\nหัตถศาสตร์\nหัตถศิลป์\nหัตถศึกษา\nหัตถาจารย์\nหัตถินี\nหัตถี\nหัน\nหั่น\nหั้น\nหันตรา\nหับ\nหัย\nหัว\nหัวร่อ\nหัวเราะ\nหัส\nหัสดิน\nหัสดี\nหัสต์\nหัสตะ\nหา\nห่า\nห้า\nหาก\nหาง\nห่าง\nห้าง\nหาญ\nหาด\nห่าน\nหาบ\nหาม\nห่าม\nห้าม\nหาย\nหายใจ\nหายนะ\nหาร\nหารือ\nหาว\nห้าว\nหาสะ\nหำ\nห้ำ\nหิ้ง\nหิงคุ\nหิงสา\nหิงห้อย\nหิ่งห้อย\nหิ่งหาย\nหิด\nหิต\nหิตานุหิตประโยชน์\nหิน\nหิมพาน\nหิมพานต์\nหิมวัต\nหิมวันต์\nหิมวา\nหิมะ\nหิมาลัย\nหิรัญ\nหิรัญญิการ์\nหิรัญบัฏ\nหิรัณย์\nหิรัณยรัศมี\nหิริ\nหิว\nหิ้ว\nหี\nหีด\nหีนยาน\nหีบ\nหึ\nหึง\nหึ่ง\nหึงสา\nหืด\nหืน\nหื่น\nหือ\nหื้อ\nหุง\nหุน\nหุ่น\nหุ้น\nหุนหัน\nหุบ\nหุ้ม\nหุยฮา\nหู\nหู่\nหูก\nหูด\nเห\nเห่\nเหง\nเหง่ง\nเหงา\nเหง้า\nเหงื่อ\nเหงือก\nเห็จ\nเห็ด\nเหติ\nเหตุ\nเห็น\nเหน่ง\nเหนงนายพราน\nเหน็ดเหนื่อย\nเหน็บ\nเหน่อ\nเห็นอ้ม\nเหนอะ\nเหนอะหนะ\nเหน้า\nเหนาะ\nเหนียง\nเหนี่ยง\nเหนี่ยน\nเหนียม\nเหนียว\nเหนี่ยว\nเหนือ\nเหนื่อย\nเห็บ\nเหม\nเหม่\nเหม็ง\nเหม่ง\nเหม็น\nเหมวดี\nเหม่อ\nเหมันต์\nเหมันตฤดู\nเหมา\nเหมายัน\nเหมาะ\nเหมียว\nเหมี่ยว\nเหมือง\nเหมือด\nเหมือน\nเหมื่อย\nเหย\nเหยง\nเหย่อย\nเหยา\nเหย่า\nเหย้า\nเหยาะ\nเหยาะแหยะ\nเหยิง\nเหยิบ\nเหยียด\nเหยียบ\nเหยี่ยว\nเหยื่อ\nเหยือก\nเหรอ\nเหรอะ\nเหรัญญิก\nเหรา\nเหราะ\nเหรียญ\nเหล่\nเหล็ก\nเหลน\nเหลว\nเหลอ\nเหลา\nเหล่า\nเหล้า\nเหลาะแหละ\nเหลิง\nเหลิงเจิ้ง\nเหลียน\nเหลี่ยม\nเหลียว\nเหลือ\nเหลือก\nเหลือง\nเหลือบ\nเหลือม\nเหลื่อม\nเหว\nเหว่\nเหวง\nเหวย\nเหวอะ\nเหวอะหวะ\nเหวี่ยง\nเห่อ\nเหอะ\nเหะ\nเหะหะ\nเหา\nเห่า\nเหาะ\nเหิน\nเหิม\nเหี้ย\nเหียง\nเหียน\nเหี้ยน\nเหี้ยม\nเหี่ยว\nเหื่อ\nเหือด\nแห\nแห่\nแห้\nแหก\nแหง\nแหง่\nแห่ง\nแห้ง\nแหงแก๋\nแหง่ง\nแหงน\nแหน\nแห้น\nแหนง\nแหนบ\nแหนม\nแหบ\nแหม\nแหม่\nแหม่ม\nแหมะ\nแหย\nแหย่\nแหยง\nแหย่ง\nแหยม\nแหย็ม\nแหยะ\nแหล่\nแหลก\nแหล่ง\nแหลน\nแหลม\nแหละ\nแหว\nแห้ว\nแหวก\nแหว่ง\nแหวด\nแหวน\nแหวะ\nแหะ\nโห่\nโหง\nโหด\nโหน\nโหนก\nโหน่ง\nโหม\nโหม่ง\nโหมด\nโหย\nโหยกเหยก\nโหยง\nโหย่ง\nโหร\nโหรง\nโหรงเหรง\nโหรดาจารย์\nโหระพา\nโหรา\nโหราจารย์\nโหราศาสตร์\nโหล\nโหล่\nโหลงโจ้ง\nโหว\nโหว่\nโหว้\nโหวกเหวก\nโหวง\nโหวด\nโหวต\nให้\nใหญ่\nใหม่\nไห\nไห่\nไห้\nไหน\nไหม\nไหม้\nไหรณย์\nไหล\nไหล่\nไหว\nไหว้\nไหหลำ\nอก\nอกตเวทิตา\nอกตเวที\nอกตัญญุตา\nอกตัญญู\nอกนิษฐ์\nอกรณีย์\nอกรรมกริยา\nอกัปปิยวัตถุ\nอกัปปิยะ\nอกุศล\nอคติ\nอคาธ\nอโฆษะ\nองก์\nองค์\nองคชาต\nองคมนตรี\nองครักษ์\nองคาพยพ\nองคุลี\nองศ์\nองศา\nองอาจ\nองุ่น\nอจลา\nอจินตา\nอจินไตย\nอจิระ\nอเจลก\nอเจละ\nอชะ\nอชิน\nอชินี\nอชิระ\nอฏวี\nอณิ\nอณู\nอโณทัย\nอด\nอดิถี\nอดิเทพ\nอดิเรก\nอดิศร\nอดิศวร\nอดิศัย\nอดีต\nอดุล\nอดุลย์\nอติ\nอติชาต\nอติมานะ\nอติราช\nอติเรก\nอติสาร\nอถรรพเวท\nอาถรรพเวท\nอทระ\nอทินนาทาน\nอธรรม\nอธิ\nอธิกมาส\nอธิกรณ์\nอธิกวาร\nอธิกสุรทิน\nอธิการ\nอธิคม\nอธิฏฐาน\nอธิบดี\nอธิบาย\nอธิป\nอธิปไตย\nอธิมาตร\nอธิมุตติ\nอธิโมกข์\nอธิราช\nอธิวาส\nอธิวาสนะ\nอธิศีล\nอธิษฐาน\nอธึก\nอ้น\nอนงค์\nอนงคณะ\nอนงคเลขา\nอนธการ\nอนนต์\nอนยะ\nอนรรฆ\nอนรรถ\nอนล\nอนวัช\nอนัญ\nอนัตตา\nอนันต์\nอนันตริยกรรม\nอนัม\nอนาคต\nอนาคามิผล\nอนาคามิมรรค\nอนาคามี\nอนาจาร\nอนาถ\nอนาถา\nอนาทร\nอนาธิปไตย\nอนามัย\nอนามิกา\nอนารยชน\nอนารยธรรม\nอนารยะ\nอนาลัย\nอนำ\nอนิจ\nอนิจจัง\nอนิจจา\nอนิฏฐารมณ์\nอนิยต\nอนิยม\nอนิล\nอนิวรรต\nอนิวรรตน์\nอนีกะ\nอนีจะ\nอนึก\nอนึ่ง\nอนุ\nอนุกร\nอนุกรม\nอนุกรรมการ\nอนุกระเบียด\nอนุกาชาด\nอนุการ\nอนุกูล\nอนุคามิก\nอนุเคราะห์\nอนุจร\nอนุช\nอนุชน\nอนุชา\nอนุชาต\nอนุชิต\nอนุญาต\nอนุญาโตตุลาการ\nอนุตร\nอนุเถระ\nอนุทิน\nอนุบท\nอนุบาล\nอนุประโยค\nอนุปริญญา\nอนุปสัมบัน\nอนุปัสนา\nอนุพงศ์\nอนุพัทธ์\nอนุพันธ์\nอนุโพธ\nอนุภรรยา\nอนุภริยา\nอนุภาค\nอนุภาษ\nอนุมัติ\nอนุมาตรา\nอนุมาน\nอนุมูล\nอนุโมทนา\nอนุโยค\nอนุรักษ์\nอนุรักษนิยม\nอนุราช\nอนุราธ\nอนุราธะ\nอนุราธา\nอนุรูป\nอนุโลม\nอนุวงศ์\nอนุวรรตน์\nอนุวัต\nอนุวัตน์\nอนุวัตร\nอนุวัติ\nอนุวาต\nอนุศาสก\nอนุศาสน์\nอนุศาสนาจารย์\nอนุศิษฏ์\nอนุสติ\nอนุสนธิ\nอนุสร\nอนุสรณ์\nอนุสัญญา\nอนุสัย\nอนุสาวรีย์\nอนุสาสนี\nอเนก\nอเนกคุณ\nอเนกรรถประโยค\nอเนจอนาถ\nอโนชา\nอโนดาต\nอบ\nอบเชย\nอบาย\nอปจายนธรรม\nอปจายนมัย\nอปมงคล\nอปยศ\nอประไมย\nอปรัณณชาติ\nอปรา\nอปราชัย\nอปราชิต\nอปริมาณ\nอปลักษณ์\nอปโลกน์\nอปวาท\nอเปหิ\nอพพะ\nอพยพ\nอภัพ\nอภัย\nอภิ\nอภิฆาต\nอภิชฌา\nอภิชน\nอภิชนาธิปไตย\nอภิชัย\nอภิชาต\nอภิชิต\nอภิญญา\nอภิญญาณ\nอภิธรรม\nอภิธาน\nอภิไธย\nอภินันท์\nอภินันทนาการ\nอภินัย\nอภินิหาร\nอภิเนษกรมณ์\nอภิบาล\nอภิปรัชญา\nอภิปราย\nอภิมหาอำนาจ\nอภิมานะ\nอภิมุข\nอภิรดี\nอภิรติ\nอภิรมย์\nอภิรักษ์\nอภิราม\nอภิรุต\nอภิรุม\nอภิรูป\nอภิลักขิต\nอภิลักขิตสมัย\nอภิเลปน์\nอภิวันท์\nอภิวาท\nอภิวาทน์\nอภิเษก\nอภิสมโพธิ\nอภิสมัย\nอภิสมาจาร\nอภิสัมโพธิ\nอภิสัมโพธิญาณ\nอภิสิต\nอภิสิทธิ์\nอภูตะ\nอม\nอมพะนำ\nอ้ม\nอมตธรรม\nอมตบท\nอมตะ\nอมนุษย์\nอมร\nอมรา\nอมราวดี\nอมรินทร์\nอมเรนทร์\nอมเรศ\nอมฤต\nอมัตร\nอมาตย์\nอมาวสี\nอมาวสุ\nอมาวาสี\nอมิตร\nอเมริกัน\nอย่า\nอยาก\nอย่าง\nอยุทธ์\nอยู่\nอร\nอรชร\nอรชุน\nอรดี\nอรติ\nอรทัย\nอรไท\nอรนุช\nอรพินท์\nอรพิม\nอรรค\nอรรฆ\nอรรฆย์\nอรรจน์\nอรรณพ\nอรรถ\nอรรถกถา\nอรรถกถาจารย์\nอรรถาธิบาย\nอรรธ\nอรสุม\nอรหะ\nอรหัง\nอรหัต\nอรหัตผล\nอรหัตมรรค\nอรหัน\nอรหันต์\nอรหันตฆาต\nอร่อย\nอรัญ\nอรัญญิก\nอรัญวาส\nอรัญวาสี\nอรัณย์\nอราดี\nอร่าม\nอริ\nอรินทร์\nอริน\nอริยกะ\nอริยทรัพย์\nอริยบุคคล\nอริยผล\nอริยมรรค\nอริยสัจ\nอริยะ\nอรุณ\nอรุโณทัย\nอรุ่ม\nอรูป\nอลงกต\nอลงกรณ์\nอลงการ\nอลวน\nอลเวง\nอลหม่าน\nอล่องฉ่อง\nอลักเอลื่อ\nอลังการ\nอลัชชี\nอล่างฉ่าง\nอลิงค์\nอลึงค์\nอลึ่งฉึ่ง\nอโลหะ\nอ้วก\nอวกาศ\nอวจร\nอวชัย\nอวชาต\nอวด\nอวตาร\nอวน\nอ้วน\nอวบ\nอวมงคล\nอวย\nอวยวะ\nอวรรค\nอวรุทธ์\nอวรุทธก\nอวล\nอวสาน\nอวหาร\nอวัยวะ\nอวัสดา\nอวาจี\nอวิจี\nอวิชชา\nอวิญญาณกทรัพย์\nอวิญญู\nอวิรุทธ์\nอวิโรธน์\nอวิโรธนะ\nอวิหิงสา\nอวีจิ\nอเวจี\nอโศก\nอสงไขย\nอสนี\nอัสนี\nอสนีบาต\nอสภะ\nอสมการ\nอสมมาตร\nอสรพิษ\nอสังหาริมทรัพย์\nอสังหาริมะ\nอสัญกรรม\nอสัญญี\nอสัญแดหวา\nอสัตถพฤกษ์\nอัสสัตถพฤกษ์\nอสัตย์\nอสัมภิน\nอสัมภินพงศ์\nอสัมภินวงศ์\nอสิ\nอสิธารา\nอสิต\nอสิเลสะ\nอสีตยานุพยัญชนะ\nอสีติ\nอสุ\nอสุจิ\nอสุนีบาต\nอสุภ\nอสุรกาย\nอสุรา\nอสุรี\nอสุเรศ\nอสูร\nอเสกขบุคคล\nอเสกขะ\nอเสขบุคคล\nอเสขะ\nอหังการ\nอหิ\nอหิงสา\nอหิวาต์\nอหิวาตกโรค\nอหึงสา\nอเหตุกทิฐิ\nอโหสิ\nออ\nอ้อ\nอ๋อ\nออก\nออกซิเจน\nออกซิเดชัน\nออกไซด์\nออกญา\nอ่อง\nอ๋อง\nอ้องแอ้ง\nออเซาะ\nออด\nอ๊อด\nอ๊อดแอ๊ด\nอ่อน\nอ้อน\nออนซ์\nออนซอน\nอ้อนแอ้น\nออฟฟิศ\nออม\nอ่อม\nอ้อม\nออมชอม\nออมซอม\nอ้อมแอ้ม\nอ่อย\nอ้อย\nอ๋อย\nอ้อยส้อย\nอ้อยอิ่ง\nออสเมียม\nอ้อแอ้\nอ๊ะ\nอะคร้าว\nอะเคื้อ\nอะแจ\nอะเซทิลีน\nอะดรีนาลิน\nอะดุง\nอะตอม\nอะมีบา\nอะเมริเซียม\nอะร้าอร่าม\nอะไร\nอะลุ่มอล่วย\nอะลุ้มอล่วย\nอะลูมิเนียม\nอะหม\nอะไหล่\nอัก\nอั้ก\nอั๊ก\nอักกะ\nอักโกธะ\nอักขรวิธี\nอักขรวิบัติ\nอักขรสมัย\nอักขระ\nอักขรานุกรม\nอักขะ\nอักโข\nอักโขภิณี\nอักโขเภณี\nอักษร\nอักษะ\nอักเษาหิณี\nอักเสบ\nอักอ่วน\nอัคคะ\nอัคคิ\nอัคคี\nอัคนิ\nอัคนี\nอัคร\nอัครชายา\nอัครมเหสี\nอัครราชทูต\nอัครสมณทูต\nอัง\nอังก์\nอังกนะ\nอังกฤษ\nอังกะลุง\nอังกา\nอังกาบ\nอังกุระ\nอังกุศ\nอังกูร\nอังคณะ\nอังคณา\nอังคาร\nอังคาส\nอังคีรส\nอังคุฐ\nอังคุตรนิกาย\nอังฆาต\nอังแพลม\nอั้งยี่\nอั้งโล่\nอังศุ\nอังศุก\nอังศุธร\nอังศุมาลี\nอังสกุฏ\nอังสตรอม\nอังสนา\nอังสภาระ\nอังสะ\nอังสา\nอัจกลับ\nอัจจิ\nอัจจิมา\nอัจจุตะ\nอัจฉรา\nอัจฉริยบุคคล\nอัจฉริยภาพ\nอัจฉริยลักษณ์\nอัจฉริยลักษณะ\nอัจฉริยะ\nอัจนา\nอัชฌัตติก\nอัชฌา\nอัชฌาจาร\nอัชฌาศัย\nอัชฌาสัย\nอัญเดียรถีย์\nอัญมณี\nอัญขยม\nอัญชนะ\nอัญชลี\nอัญชัน\nอัญชุลี\nอัญเชิญ\nอัญญะ\nอัญดิตถีย์\nอัญเดียรถีย์\nอัญประกาศ\nอัญรูป\nอัฏ\nอัฏฐบาน\nอัฏฐะ\nอัฏฐังคิกมรรค\nอัฏนา\nอัฐ\nอัฐฬส\nอัฐเคราะห์\nอัฐทิศ\nอัฐบริขาร\nอัฐบาน\nอัฐม\nอัฐมี\nอัฐศก\nอัฐิ\nอัฒจันทร์\nอัฒภาค\nอัฒมาส\nอัฒรัตติ\nอัณฑโกส\nอัณฑชะ\nอัณฑะ\nอัณณพ\nอัด\nอัดแจ\nอัต\nอัตชีวประวัติ\nอัตนัย\nอัตภาพ\nอัตวินิบาตกรรม\nอัตคัด\nอัตตโนบท\nอัตตา\nอัตตาธิปไตย\nอัตถ์\nอัตถะ\nอัตโนมัติ\nอัตรชะ\nอัตรา\nอัตลัด\nอัททา\nอัทธ์\nอัทธา\nอัทธาน\nอัทธายุ\nอัธยาตมวิทยา\nอัธยาย\nอัธยาศัย\nอัน\nอั้น\nอั๋น\nอันดร\nอันดับ\nอันตกะ\nอันตกาล\nอันตะ\nอันตคุณ\nอันตรภาค\nอันตรวาสก\nอันตรธาน\nอันตรา\nอันตราย\nอันตรายิกธรรม\nอันติกะ\nอันติมสัจ\nอันติมะ\nอันเต\nอันโต\nอันเตปุริก\nอันเตวาสิก\nอันแถ้ง\nอันโทล\nอันธการ\nอันธพาล\nอันธิกา\nอันเวส\nอับ\nอับปาง\nอัปปะ\nอัปเปหิ\nอัปภาคย์\nอัปมงคล\nอัปยศ\nอัประมาณ\nอัประไมย\nอัปราชัย\nอัปรีย์\nอัปลักษณ์\nอัปสร\nอัพพุท\nอัพโพหาริก\nอัพภันดร\nอัพภาน\nอัพภาส\nอัพภูตธรรม\nอัพยากฤต\nอัมพฤกษ์\nอัมพาต\nอัมพวัน\nอัมพวา\nอัมพร\nอัมพา\nอัมพิละ\nอัมพุ\nอัมพุช\nอัมพุชินี\nอัมพุท\nอัยกา\nอัยการ\nอัยกี\nอัยยะ\nอัยยิกา\nอัลกุรอาน\nอัลตราไวโอเลต\nอั่ว\nอัศจรรย์\nอัศเจรีย์\nอัศว\nอัศวเมธ\nอัศวยุช\nอัศวานึก\nอัศวิน\nอัศวินี\nอัษฎมงคล\nอัษฏมงคล\nอัษฎางคิกมรรค\nอัษฎายุธ\nอัษฎาวุธ\nอัสสะ\nอัสดร\nอัสกัณ\nอัสดง\nอัสดงคต\nอัสมิมานะ\nอัสสนี\nอัสสานึก\nอัสสาสะ\nอัสสุ\nอา\nอ่า\nอ้า\nอ๋า\nอากร\nอากังขา\nอากัป\nอาการ\nอากาศ\nอากูล\nอาเกียรณ์\nอาขยาต\nอาขยาน\nอาคเนย์\nอาคม\nอาครหายณี\nอาคันตุกะ\nอาคันตุกภัต\nอาคันตุกวัตร\nอาคาร\nอาฆาต\nอ่าง\nอ้าง\nอางขนาง\nอ้างว้าง\nอาจ\nอาจม\nอาจริยวัตร\nอาจริยวาท\nอาจาด\nอาจาร\nอาจารย์\nอาจารี\nอาจิณ\nอาเจียน\nอาชญา\nอาชวะ\nอาชา\nอาชาไนย\nอาชีพ\nอาชีวศึกษา\nอาชีวะ\nอาชีวก\nอาญา\nอาฏานา\nอาณัติ\nอาณา\nอาด\nอาดูร\nอาดุลย์\nอาดูลย์\nอาเด๊ะ\nอาตมภาพ\nอาตมัน\nอาตมา\nอาถรรพ์\nอาถรรพณ์\nอาทร\nอาทิ\nอาทิจจวาร\nอาทิตย์\nอาทิตยมณฑล\nอาทิตยวาร\nอาทีนพ\nอาทีนวะ\nอาทึก\nอาเทศ\nอาเทสนา\nอาธรรม\nอาธรรม์\nอาธาน\nอาธาร\nอาน\nอ่าน\nอานน\nอานนท์\nอานันท์\nอานันทนะ\nอานัม\nอานาปานะ\nอานาปานัสสติ\nอานิสงส์\nอานุภาพ\nอานุภาวะ\nอาบ\nอาบัติ\nอาบัน\nอาปณกะ\nอาปณะ\nอาปะ\nอาโป\nอาปานะ\nอาพัทธ์\nอาพันธ์\nอาพันธนะ\nอาพาธ\nอาเพศ\nอาภรณ์\nอาภัพ\nอาภัสระ\nอาภา\nอาภาส\nอามลกะ\nอามัย\nอามิษ\nอามิส\nอาย\nอ้าย\nอายตนะ\nอายตะ\nอายน\nอายัด\nอายัต\nอายัน\nอายาจนะ\nอายานะ\nอายุ\nอายุตกะ\nอายุธ\nอายุรกรรม\nอายุรแพทย์\nอายุรเวช\nอายุรเวท\nอายุศาสตร์\nอายุษ\nอาร์กอน\nอารดี\nอารติ\nอาร์ต\nอารทรา\nอาร์ม\nอารมณ์\nอารยชน\nอารยชาติ\nอารยธรรม\nอารยประเทศ\nอารยะ\nอารยัน\nอาระ\nอารักขา\nอารักษ์\nอารัญ\nอารัณย์\nอารัญญิก\nอารัณยกะ\nอารัติ\nอารัมภ์\nอารัมภกถา\nอารัมภบท\nอารัมภะ\nอาราธน์\nอาราธนา\nอาราม\nอารามิก\nอารี\nอารุม\nอาลปนะ\nอาละวาด\nอาลักษณ์\nอาลัย\nอาลัว\nอาลี\nอาโลก\nอาว\nอ่าว\nอ้าว\nอาวรณ์\nอาวัชนาการ\nอาวัล\nอาวาส\nอาวาสิก\nอาวาหมงคล\nอาวาหะ\nอาวุต\nอาวุธ\nอาวุโส\nอาเวค\nอาศรม\nอาศรมบท\nอาศเลษา\nอาศัย\nอาศิรพจน์\nอาศิรพาท\nอาศิรวาท\nอาศุ\nอาเศียรพจน์\nอาเศียรพาท\nอาเศียรวาท\nอาษาฒ\nอาสน\nอาสน์\nอาสนะ\nอาสนศาลา\nอาสัญ\nอาสัตย์\nอาสา\nอาสาฬห์\nอาสาฬหบูชา\nอาสาฬหะ\nอาสิญจ์\nอาสิน\nอาหม\nอาหรับ\nอาหาร\nอาฬหก\nอำ\nอ่ำ\nอ้ำ\nอำแดง\nอำนนต์\nอำนรรฆ\nอำนวย\nอำนาจ\nอำนาถ\nอำนิฐ\nอำนิษฐ์\nอำปลัง\nอำพน\nอำพล\nอำพะนำ\nอำพัน\nอำไพ\nอำเภอ\nอำมร\nอำมฤคโชค\nอำมฤต\nอำมหิต\nอำมาตย์\nอำมาตยาธิปไตย\nอำยวน\nอำรุง\nอำลา\nอำอวม\nอ้ำอึ้ง\nอิก\nอิง\nอิงค์\nอิงอร\nอิจฉา\nอิฉัน\nอิชยา\nอิฏฐารมณ์\nอิฐ\nอิฐผล\nอิด\nอิตถี\nอิตเทรียม\nอิตเทอร์เบียม\nอิติวุตตกะ\nอิทธิ\nอิน\nอินซูลิน\nอินเดีย\nอินเดียนแดง\nอินเดียม\nอินท์\nอินทขีล\nอินทนิล\nอินทผลัม\nอินทร์\nอินทรธนู\nอินทรวงศ์\nอินทรวิเชียร\nอินทรศักดิ์\nอินทราณี\nอินทราภิเษก\nอินทรายุธ\nอินทรี\nอินทรีย์\nอินทรียสังวร\nอินทีวร\nอินทุ\nอินฟราเรด\nอินัง\nอิ่ม\nอิมัลชัน\nอิริเดียม\nอิริยา\nอิริยาบถ\nอิรุพเพท\nอิเล็กตรอน\nอิเล็กทรอนิกส์\nอิเล็กโทน\nอิศร\nอิศวร\nอิษฏ์\nอิษฏี\nอิส\nอิสตรี\nอิสัตรี\nอิสรภาพ\nอิสระ\nอิสริยยศ\nอิสริยะ\nอิสริยาภรณ์\nอิสลาม\nอิสสา\nอิสิ\nอิสี\nอิหม่าม\nอิหลักอิเหลื่อ\nอี\nอี่\nอี้\nอี๊\nอี๋\nอี๋อ๋อ\nอีก\nอีก้อ\nอีก๋อย\nอีโก้ง\nอีจู้\nอี๊ด\nอีเต้อ\nอีโต้\nอีทุบ\nอีเทอร์\nอีนุงตุงนัง\nอีนูน\nอีโน\nอีแปะ\nอีโปง\nอีเพา\nอีมู\nอีรม\nอีลุ้ม\nอีลุ่ยฉุยแฉก\nอีเลิ้ง\nอีศ\nอีศวร\nอีส\nอีสาน\nอีสุกอีใส\nอีหรอบ\nอีหลักอีเหลื่อ\nอีหลี\nอีหลุกขลุกขลัก\nอีหลุกขลุกขลุ่ย\nอีเห็น\nอีเหน็บ\nอีเหนียว\nอีเหละเขละขละ\nอีเหละเขะขะ\nอีโหน่อีเหน่\nอีโหลกโขลกเขลก\nอีแอ่น\nอึ\nอึก\nอึ้ก\nอึ๊ก\nอึกทึก\nอึกอัก\nอึง\nอึ่ง\nอึ้ง\nอึด\nอึดตะปือ\nอึ้ดทึ่ด\nอึน\nอืด\nอื่น\nอื้น\nอือ\nอื้อ\nอื้อฮือ\nอุ\nอุก\nอุกกา\nอุกกาบาต\nอุกฤษฏ์\nอุกลาบาต\nอุค\nอุคระ\nอุคหนิมิต\nอุโฆษ\nอุ้ง\nอุจ\nอุจจาระ\nอุจฉุ\nอุจเฉท\nอุจเฉททิฐิ\nอุจาด\nอุชุ\nอุฏฐาการ\nอุณหภูมิ\nอุณหะ\nอุณหาหาร\nอุณหิส\nอุณา\nอุณาโลม\nอุด\nอุดเตา\nอุดม\nอุดมการณ์\nอุดมคติ\nอุดมศึกษา\nอุดร\nอุดหนุน\nอุตดม\nอุตตมะ\nอุตมภาพ\nอุตมางค์\nอุตดร\nอุตรกุรุทวีป\nอุตตรายัน\nอุตรนิกาย\nอุตรผลคุนี\nอุตตรผลคุนี\nอุตรภัทรบท\nอุตตรภัทรบท\nอุตตรภัททะ\nอุตราภิมุข\nอุตราวรรต\nอุตราวัฏ\nอุตราษาฒ\nอุตตราสาฬหะ\nอุตราสงค์\nอุตตานภาพ\nอุตพิด\nอุตรา\nอุตริ\nอุตริมนุสธรรม\nอุตลุด\nอุตส่าห์\nอุตสาหกรรม\nอุตสาหะ\nอุตุ\nอุตุนิยม\nอุตุนิยมวิทยา\nอุทก\nอุทกธาร\nอุทกธารา\nอุทกภัย\nอุทกวิทยา\nอุทกศาสตร์\nอุทธรณ์\nอุทธัจ\nอุทยาน\nอุทร\nอุทริยะ\nอุทลุม\nอุทัช\nอุทัย\nอุทาน\nอุทาร\nอุทาหรณ์\nอุทิศ\nอุทุมพร\nอุเทศ\nอุเทสิกเจดีย์\nอุธัจ\nอุ่น\nอุบ\nอุบล\nอุบะ\nอุบ๊ะ\nอุบัติ\nอุบาท\nอุบาทว์\nอุบาย\nอุบาสก\nอุบาสิกา\nอุเบกขา\nอุโบสถ\nอุปกรณ์\nอุปกรม\nอุปการ\nอุปการะ\nอุปการี\nอุปกิเลส\nอุปจาร\nอุปถัมภ์\nอุปถัมภก\nอุปทม\nอุปทูต\nอุปเทศ\nอุปเท่ห์\nอุปธิ\nอุปนัย\nอุปนิกขิต\nอุปนิษัท\nอุปนิสัย\nอุปบัติ\nอุปปาติกะ\nอุปพัทธ์\nอุปพันธ์\nอุปโภค\nอุปมา\nอุปมาน\nอุปไมย\nอุปยุวราช\nอุปรากร\nอุปราคา\nอุปราช\nอุปริ\nอุปริมปริยาย\nอุปโลกน์\nอุปเวท\nอุปสมบท\nอุปสมบัน\nอุปสัมบัน\nอุปสรรค\nอุปสัมปทา\nอุปฮาด\nอุปัชฌาย์\nอุปัชฌายวัตร\nอุปัชฌายะ\nอุปัฏฐาก\nอุปัฏฐานะ\nอุปัทวะ\nอุปัทวันตราย\nอุปาทาน\nอุปาหนา\nอุภัย\nอุ้ม\nอุมงค์\nอุโมงค์\nอุย\nอุ่ย\nอุ้ย\nอุ๊ย\nอุยยาน\nอุยยาม\nอุรณะ\nอุรพี\nอุระ\nอุรังอุตัง\nอุรัจฉัท\nอุรัจฉทะ\nอุรา\nอุรุ\nอุไร\nอุลกมณี\nอุลโลจ\nอุลามก\nอุลิด\nอุโลก\nอุแว้\nอุษณกร\nอุษณกาล\nอุษณรัศมี\nอุษณรุจี\nอุษณาการ\nอุษณีษ์\nอุษมะ\nอุษมัน\nอุษา\nอุษาโยค\nอุสภ\nอุสส่าห์\nอุสสาหะ\nอุสา\nอุสุ\nอุสุภ\nอุสุภราช\nอุสุม\nอุหรับ\nอุหลบ\nอุเหม่\nอุฬาร\nอู\nอู่\nอู้\nอูฐ\nอูด\nอูม\nอูย\nอูรุ\nอู๋อี๋\nเอ\nเอ้\nเอ๊\nเอก\nเอกเขนก\nเอกซเรย์\nเอกรรถประโยค\nเอกัคตา\nเอกังสพยากรณ์\nเอกังสวาที\nเอกา\nเอ้กา\nเอกาธิปไตย\nเอเคอร์\nเอง\nเอ็ง\nเอ๋ง\nเอ็ด\nเอ็ดตะโร\nเอดส์\nเอตทัคคะ\nเอ้เต\nเอทิล\nเอน\nเอ็น\nเอนไซม์\nเอ็นดู\nเอ็นอ่อน\nเอม\nเอ็มบริโอ\nเอย\nเอ่ย\nเอ๊ย\nเอ๋ย\nเอร็ดอร่อย\nเอราวัณ\nเอว\nเอ๊ว\nเอวัง\nเอฬกะ\nเอฬา\nเออ\nเอ่อ\nเออร์เบียม\nเอ้อระเหย\nเอ้อเร้อ\nเอ้อเฮอ\nเอ๊ะ\nเอะใจ\nเอะอะ\nเอะอะมะเทิ่ง\nเอา\nเอาทาร\nเอาทารย์\nเอารส\nเอาฬาร\nเอาะลาย\nเอิก\nเอิกเกริก\nเอิ้น\nเอิบ\nเอียง\nเอี้ยง\nเอียด\nเอี๊ยด\nเอียน\nเอี่ยน\nเอี่ยม\nเอี๊ยม\nเอี้ยมจุ๊น\nเอี้ยมเฟี้ยม\nเอี่ยว\nเอี้ยว\nเอื้อ\nเอื๊อก\nเอื้อง\nเอือด\nเอือน\nเอื้อน\nเอือม\nเอื้อม\nเอื่อย\nเอื้อย\nแอ\nแอ้\nแอ๋\nแอก\nแอกทิเนียม\nแอ่ง\nแอ้งแม้ง\nแอด\nแอ้ด\nแอ๊ด\nแอ่น\nแอนติเจน\nแอนติบอดี\nแอนติอิเล็กตรอน\nแอโนด\nแอบ\nแอม\nแอ้ม\nแอมแปร์\nแอมมิเตอร์\nแอมโมเนีย\nแอร่ม\nแอลกอฮอล์\nแอลฟา\nแอว\nแอ่ว\nแอ้วแซ่ว\nแอสทาทีน\nแอสไพริน\nแอสฟัลต์\nแอหนัง\nแออัด\nโอ\nโอ่\nโอ้\nโอ๋\nโอก\nโอ้ก\nโอ้กอ้าก\nโอ๊ก\nโอกาส\nโอฆชล\nโอฆสงสาร\nโอฆะ\nโอ่ง\nโองการ\nโองโขดง\nโอชะ\nโอชา\nโอโซน\nโอฐ\nโอด\nโอ๊ต\nโอตตัปปะ\nโอทนะ\nโอน\nโอบ\nโอปปาติกะ\nโอภา\nโอภาส\nโอม\nโอย\nโอ๊ย\nโอรส\nโอละพ่อ\nโอลิมปิก\nโอวาท\nโอษฐ์\nโอษฐชะ\nโอษฐภัย\nโอสถ\nโอห์ม\nโอหัง\nโอฬาร\nโอฬาริก\nโอฬารึก\nโอ้เอ้\nโอเอซิส\nโอ้โฮ\nไอ\nไอ้\nไอโซโทป\nไอน์สไตเนียม\nไอยรา\nไอยเรศ\nไอราพต\nไอราวัณ\nไอราวัต\nไอศกรีม\nไอศวรรย์\nไอศุริยสมบัติ\nไอศูรย์\nไอออน\nไอโอดีน\nฮกเกี้ยน\nฮด\nฮวงซุ้ย\nฮวน\nฮ้วนหมู\nฮวบ\nฮ่อ\nฮ้อ\nฮอกกี้\nฮอด\nฮ่อม\nฮ่อยจ๊อ\nฮอร์โมน\nฮอลแลนด์\nฮอลันดา\nฮะ\nฮะเบส\nฮะเรีย\nฮัก\nฮังเล\nฮัจญ์\nฮัจญะฮ์\nฮัจญี\nฮั่น\nฮั้ว\nฮา\nฮ้า\nฮ่างหลวง\nฮาจญ์\nฮาม\nฮาเร็ม\nฮาห์เนียม\nฮิจเราะห์\nฮินดู\nฮิปโปโปเตมัส\nฮิสทีเรีย\nฮีเลียม\nฮึ\nฮึก\nฮึด\nฮึดฮัด\nฮึ่ม\nฮึย\nฮึ่ย\nฮืดฮาด\nฮือ\nฮื่อ\nฮื้อ\nฮื้อฉี่\nฮุด\nฮุบ\nฮุยเลฮุย\nฮู้\nฮูก\nฮูม\nเฮ\nเฮฮา\nเฮกตาร์\nเฮกโตกรัม\nเฮกโตเมตร\nเฮกโตลิตร\nเฮง\nเฮ็ด\nเฮโมโกลบิน\nเฮย\nเฮ่ย\nเฮ้ย\nเฮโรอีน\nเฮลิคอปเตอร์\nเฮโล\nเฮละโล\nเฮ้ว\nเฮอ\nเฮ่อ\nเฮ้อ\nเฮอริเคน\nเฮิรตซ์\nเฮี้ยน\nเฮี้ยบ\nเฮี้ยว\nเฮือก\nเฮือน\nแฮ\nแฮ่\nแฮก\nแฮ่กึ๊น\nแฮนด์บอล\nแฮฟเนียม\nแฮม\nแฮะ\nโฮ\nโฮก\nโฮ่ง\nโฮ้ง\nโฮเต็ล\nโฮลเมียม\nโฮะ\nไฮ้\nไฮโกรมิเตอร์\nไฮดรา\nไฮโดร\nไฮโดรคาร์บอน\nไฮโดรเจน\nไฮโดรมิเตอร์\nไฮไฟ\nไฮโล\nไฮฮี\n" + .split(/[\r\n]+/) + .filter(function (w) { + return w.length > 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {<filename>: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:<pattern>)<type> + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/assets/javascripts/workers/search.e5c33ebb.min.js b/assets/javascripts/workers/search.e5c33ebb.min.js new file mode 100644 index 00000000..90537713 --- /dev/null +++ b/assets/javascripts/workers/search.e5c33ebb.min.js @@ -0,0 +1,42 @@ +"use strict";(()=>{var me=Object.create;var U=Object.defineProperty,xe=Object.defineProperties,ve=Object.getOwnPropertyDescriptor,Se=Object.getOwnPropertyDescriptors,Te=Object.getOwnPropertyNames,Y=Object.getOwnPropertySymbols,Qe=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty,Ee=Object.prototype.propertyIsEnumerable;var Z=Math.pow,J=(t,e,r)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,A=(t,e)=>{for(var r in e||(e={}))X.call(e,r)&&J(t,r,e[r]);if(Y)for(var r of Y(e))Ee.call(e,r)&&J(t,r,e[r]);return t},q=(t,e)=>xe(t,Se(e));var be=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Le=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!X.call(t,i)&&i!==r&&U(t,i,{get:()=>e[i],enumerable:!(n=ve(e,i))||n.enumerable});return t};var we=(t,e,r)=>(r=t!=null?me(Qe(t)):{},Le(e||!t||!t.__esModule?U(r,"default",{value:t,enumerable:!0}):r,t));var B=(t,e,r)=>new Promise((n,i)=>{var s=c=>{try{a(r.next(c))}catch(u){i(u)}},o=c=>{try{a(r.throw(c))}catch(u){i(u)}},a=c=>c.done?n(c.value):Promise.resolve(c.value).then(s,o);a((r=r.apply(t,e)).next())});var te=be((K,ee)=>{/** + * 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 + */(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(g){return new t.Token(t.utils.asString(g).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var c=n.charAt(o),u=o-a;if(c.match(t.tokenizer.separator)||o==i){if(u>0){var l=t.utils.clone(r)||{};l.position=[a,u],l.index=s.length,s.push(new t.Token(n.slice(a,o),l))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var c=0;c<a.length;c++)s.push(a[c]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,c=0,u=0,l=0;u<s&&l<o;)a=n[u],c=i[l],a<c?u+=2:a>c?l+=2:a==c&&(r+=n[u+1]*i[l+1],u+=2,l+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */t.stemmer=function(){var e={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"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,c="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,l="^("+s+")?"+i,g=new RegExp(a),f=new RegExp(u),v=new RegExp(c),m=new RegExp(l),x=/^(.+?)(ss|i)es$/,d=/^(.+?)([^s])s$/,y=/^(.+?)eed$/,b=/^(.+?)(ed|ing)$/,E=/.$/,w=/(at|bl|iz)$/,R=new RegExp("([^aeiouylsz])\\1$"),j=new RegExp("^"+s+i+"[^aeiouwxy]$"),_=/^(.+?[^aeiou])y$/,D=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,N=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,C=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,V=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,z=/ll$/,$=new RegExp("^"+s+i+"[^aeiouwxy]$"),M=function(h){var S,k,L,p,T,O,F;if(h.length<3)return h;if(L=h.substr(0,1),L=="y"&&(h=L.toUpperCase()+h.substr(1)),p=x,T=d,p.test(h)?h=h.replace(p,"$1$2"):T.test(h)&&(h=h.replace(T,"$1$2")),p=y,T=b,p.test(h)){var Q=p.exec(h);p=g,p.test(Q[1])&&(p=E,h=h.replace(p,""))}else if(T.test(h)){var Q=T.exec(h);S=Q[1],T=m,T.test(S)&&(h=S,T=w,O=R,F=j,T.test(h)?h=h+"e":O.test(h)?(p=E,h=h.replace(p,"")):F.test(h)&&(h=h+"e"))}if(p=_,p.test(h)){var Q=p.exec(h);S=Q[1],h=S+"i"}if(p=D,p.test(h)){var Q=p.exec(h);S=Q[1],k=Q[2],p=g,p.test(S)&&(h=S+e[k])}if(p=N,p.test(h)){var Q=p.exec(h);S=Q[1],k=Q[2],p=g,p.test(S)&&(h=S+r[k])}if(p=C,T=V,p.test(h)){var Q=p.exec(h);S=Q[1],p=f,p.test(S)&&(h=S)}else if(T.test(h)){var Q=T.exec(h);S=Q[1]+Q[2],T=f,T.test(S)&&(h=S)}if(p=P,p.test(h)){var Q=p.exec(h);S=Q[1],p=f,T=v,O=$,(p.test(S)||T.test(S)&&!O.test(S))&&(h=S)}return p=z,T=f,p.test(h)&&T.test(h)&&(p=E,h=h.replace(p,"")),L=="y"&&(h=L.toLowerCase()+h.substr(1)),h};return function(I){return I.update(M)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.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"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}if(s.str.length==0&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var l=s.str.charAt(0),g=s.str.charAt(1),f;g in s.node.edges?f=s.node.edges[g]:(f=new t.TokenSet,s.node.edges[g]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:l+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var c=new t.TokenSet;c.final=a,r.edges[o]=c,r=c}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),c=a.length,u=0;u<o;u++)for(var l=s[u],g=0;g<c;g++){var f=a[g];if(f==l||l=="*"){var v=n.node.edges[f],m=n.qNode.edges[l],x=v.final&&m.final,d=void 0;f in n.output.edges?(d=n.output.edges[f],d.final=d.final||x):(d=new t.TokenSet,d.final=x,n.output.edges[f]=d),i.push({qNode:m,output:d,node:v})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),c=0;c<this.fields.length;c++)i[this.fields[c]]=new t.Vector;e.call(r,r);for(var c=0;c<r.clauses.length;c++){var u=r.clauses[c],l=null,g=t.Set.empty;u.usePipeline?l=this.pipeline.runString(u.term,{fields:u.fields}):l=[u.term];for(var f=0;f<l.length;f++){var v=l[f];u.term=v;var m=t.TokenSet.fromClause(u),x=this.tokenSet.intersect(m).toArray();if(x.length===0&&u.presence===t.Query.presence.REQUIRED){for(var d=0;d<u.fields.length;d++){var y=u.fields[d];o[y]=t.Set.empty}break}for(var b=0;b<x.length;b++)for(var E=x[b],w=this.invertedIndex[E],R=w._index,d=0;d<u.fields.length;d++){var y=u.fields[d],j=w[y],_=Object.keys(j),D=E+"/"+y,N=new t.Set(_);if(u.presence==t.Query.presence.REQUIRED&&(g=g.union(N),o[y]===void 0&&(o[y]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[y]===void 0&&(a[y]=t.Set.empty),a[y]=a[y].union(N);continue}if(i[y].upsert(R,u.boost,function(ge,ye){return ge+ye}),!s[D]){for(var C=0;C<_.length;C++){var V=_[C],P=new t.FieldRef(V,y),z=j[V],$;($=n[P])===void 0?n[P]=new t.MatchData(E,y,z):$.add(E,y,z)}s[D]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var d=0;d<u.fields.length;d++){var y=u.fields[d];o[y]=o[y].intersect(g)}}for(var M=t.Set.complete,I=t.Set.empty,c=0;c<this.fields.length;c++){var y=this.fields[c];o[y]&&(M=M.intersect(o[y])),a[y]&&(I=I.union(a[y]))}var h=Object.keys(n),S=[],k=Object.create(null);if(r.isNegated()){h=Object.keys(this.fieldVectors);for(var c=0;c<h.length;c++){var P=h[c],L=t.FieldRef.fromString(P);n[P]=new t.MatchData}}for(var c=0;c<h.length;c++){var L=t.FieldRef.fromString(h[c]),p=L.docRef;if(M.contains(p)&&!I.contains(p)){var T=this.fieldVectors[L],O=i[L.fieldName].similarity(T),F;if((F=k[p])!==void 0)F.score+=O,F.matchData.combine(n[L]);else{var Q={ref:p,score:O,matchData:n[L]};k[p]=Q,S.push(Q)}}}return S.sort(function(de,pe){return pe.score-de.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,c=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=i[u],g=l[0],f=l[1];n[g]=new t.Vector(f)}for(var u=0;u<o.length;u++){var l=o[u],v=l[0],m=l[1];a.insert(v),s[v]=m}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=c,new t.Index(r)};/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */t.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=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,c=a?a(e):e[o],u=this.tokenizer(c,{fields:[o]}),l=this.pipeline.run(u),g=new t.FieldRef(n,o),f=Object.create(null);this.fieldTermFrequencies[g]=f,this.fieldLengths[g]=0,this.fieldLengths[g]+=l.length;for(var v=0;v<l.length;v++){var m=l[v];if(f[m]==null&&(f[m]=0),f[m]+=1,this.invertedIndex[m]==null){var x=Object.create(null);x._index=this.termIndex,this.termIndex+=1;for(var d=0;d<i.length;d++)x[i[d]]=Object.create(null);this.invertedIndex[m]=x}this.invertedIndex[m][o][n]==null&&(this.invertedIndex[m][o][n]=Object.create(null));for(var y=0;y<this.metadataWhitelist.length;y++){var b=this.metadataWhitelist[y],E=m.metadata[b];this.invertedIndex[m][o][n][b]==null&&(this.invertedIndex[m][o][n][b]=[]),this.invertedIndex[m][o][n][b].push(E)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var c=Object.keys(this._fields),s=0;s<c.length;s++){var u=c[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,c=this.fieldLengths[o],u=new t.Vector,l=this.fieldTermFrequencies[o],g=Object.keys(l),f=g.length,v=this._fields[a].boost||1,m=this._documents[o.docRef].boost||1,x=0;x<f;x++){var d=g[x],y=l[d],b=this.invertedIndex[d]._index,E,w,R;i[d]===void 0?(E=t.idf(this.invertedIndex[d],this.documentCount),i[d]=E):E=i[d],w=E*((this._k1+1)*y)/(this._k1*(1-this._b+this._b*(c/this.averageFieldLength[a]))+y),w*=v,w*=m,R=Math.round(w*1e3)/1e3,u.insert(b,R)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],c=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<c.length;u++){var l=c[u];this.metadata[i][a][l]==null?this.metadata[i][a][l]=e.metadata[i][a][l]:this.metadata[i][a][l]=this.metadata[i][a][l].concat(e.metadata[i][a][l])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.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=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof K=="object"?ee.exports=r():e.lunr=r()}(this,function(){return t})})()});var fe=we(te());function re(t,e=document){let r=Pe(t,e);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${t}" to be present`);return r}function Pe(t,e=document){return e.querySelector(t)||void 0}Object.entries||(Object.entries=function(t){let e=[];for(let r of Object.keys(t))e.push([r,t[r]]);return e});Object.values||(Object.values=function(t){let e=[];for(let r of Object.keys(t))e.push(t[r]);return e});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(t,e){typeof t=="object"?(this.scrollLeft=t.left,this.scrollTop=t.top):(this.scrollLeft=t,this.scrollTop=e)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...t){let e=this.parentNode;if(e){t.length===0&&e.removeChild(this);for(let r=t.length-1;r>=0;r--){let n=t[r];typeof n=="string"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));function ne(t){let e=new Map;for(let r of t){let[n]=r.location.split("#"),i=e.get(n);typeof i=="undefined"?e.set(n,r):(e.set(r.location,r),r.parent=i)}return e}function W(t,e,r){var s;e=new RegExp(e,"g");let n,i=0;do{n=e.exec(t);let o=(s=n==null?void 0:n.index)!=null?s:t.length;if(i<o&&r(i,o),n){let[a]=n;i=n.index+a.length,a.length===0&&(e.lastIndex=n.index+1)}}while(n)}function ie(t,e){let r=0,n=0,i=0;for(let s=0;i<t.length;i++)t.charAt(i)==="<"&&i>n?e(r,1,n,n=i):t.charAt(i)===">"&&(t.charAt(n+1)==="/"?--s===0&&e(r++,2,n,i+1):t.charAt(i-1)!=="/"&&s++===0&&e(r,0,n,i+1),n=i+1);i>n&&e(r,1,n,i)}function se(t,e,r){return G([t],e,r).pop()}function G(t,e,r){let n=[0];for(let i=1;i<e.length;i++){let s=e[i-1],o=e[i],a=s[s.length-1]>>>2&1023,c=o[0]>>>12;n.push(+(a>c)+n[n.length-1])}return t.map((i,s)=>{let o=new Map;for(let c of r.sort((u,l)=>u-l)){let u=c&1048575,l=c>>>20;if(n[l]!==s)continue;let g=o.get(l);typeof g=="undefined"&&o.set(l,g=[]),g.push(u)}if(o.size===0)return i;let a=[];for(let[c,u]of o){let l=e[c],g=l[0]>>>12,f=l[l.length-1]>>>12,v=l[l.length-1]>>>2&1023,m=i.slice(g,f+v);for(let x of u.sort((d,y)=>y-d)){let d=(l[x]>>>12)-g,y=(l[x]>>>2&1023)+d;m=[m.slice(0,d),"<mark>",m.slice(d,y),"</mark>",m.slice(y)].join("")}if(a.push(m)===2)break}return a.join("")})}function oe(t){let e=[];if(typeof t=="undefined")return e;let r=Array.isArray(t)?t:[t];for(let n=0;n<r.length;n++){let i=lunr.tokenizer.table,s=i.length;ie(r[n],(o,a,c,u)=>{var l;switch(i[l=o+=s]||(i[l]=[]),a){case 0:case 2:i[o].push(c<<12|u-c<<2|a);break;case 1:let g=r[n].slice(c,u);W(g,lunr.tokenizer.separator,(f,v)=>{if(typeof lunr.segmenter!="undefined"){let m=g.slice(f,v);if(/^[MHIK]$/.test(lunr.segmenter.ctype_(m))){let x=lunr.segmenter.segment(m);for(let d=0,y=0;d<x.length;d++)i[o]||(i[o]=[]),i[o].push(c+f+y<<12|x[d].length<<2|a),e.push(new lunr.Token(x[d].toLowerCase(),{position:o<<20|i[o].length-1})),y+=x[d].length;return}}i[o].push(c+f<<12|v-f<<2|a),e.push(new lunr.Token(g.slice(f,v).toLowerCase(),{position:o<<20|i[o].length-1}))})}})}return e}function ae(t,e=r=>r){return t.trim().split(/"([^"]+)"/g).map((r,n)=>n&1?r.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):r).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").split(/\s+/g).flatMap(e).map(r=>/([~^]$)/.test(r)?`${r}1`:r).map(r=>/(^[+-]|[~^]\d+$)/.test(r)?r:`${r}*`).join(" ")}function ue(t){return ae(t,e=>{let r=[],n=new lunr.QueryLexer(e);n.run();for(let{type:i,str:s,start:o,end:a}of n.lexemes)i==="TERM"&&W(s,lunr.tokenizer.separator,(...c)=>{r.push([e.slice(0,o),s.slice(...c),e.slice(a)].join(""))});return r})}function ce(t){let e=new lunr.Query(["title","text","tags"]);new lunr.QueryParser(t,e).parse();for(let n of e.clauses)n.usePipeline=!0,n.term.startsWith("*")&&(n.wildcard=lunr.Query.wildcard.LEADING,n.term=n.term.slice(1)),n.term.endsWith("*")&&(n.wildcard=lunr.Query.wildcard.TRAILING,n.term=n.term.slice(0,-1));return e.clauses}function le(t,e){var i;let r=new Set(t),n={};for(let s=0;s<e.length;s++)for(let o of r)e[s].startsWith(o.term)&&(n[o.term]=!0,r.delete(o));for(let s of r)(i=lunr.stopWordFilter)!=null&&i.call(lunr,s.term)&&(n[s.term]=!1);return n}function ke(t){return e=>r=>{if(typeof r[e]=="undefined")return;let n=[r.location,e].join(":");return t.set(n,lunr.tokenizer.table=[]),r[e]}}function Oe(t,e){let[r,n]=[new Set(t),new Set(e)];return[...new Set([...r].filter(i=>!n.has(i)))]}var H=class{constructor({config:e,docs:r,options:n}){let i=ke(this.table=new Map);this.map=ne(r),this.options=n,this.index=lunr(function(){this.metadataWhitelist=["position"],this.b(0),e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang)),this.tokenizer=oe,lunr.tokenizer.separator=new RegExp(e.separator),lunr.segmenter="TinySegmenter"in lunr?new lunr.TinySegmenter:void 0;let s=Oe(["trimmer","stopWordFilter","stemmer"],e.pipeline);for(let o of e.lang.map(a=>a==="en"?lunr:lunr[a]))for(let a of s)this.pipeline.remove(o[a]),this.searchPipeline.remove(o[a]);this.ref("location"),this.field("title",{boost:1e3,extractor:i("title")}),this.field("text",{boost:1,extractor:i("text")}),this.field("tags",{boost:1e6,extractor:i("tags")});for(let o of r)this.add(o,{boost:o.boost})})}search(e){if(e=ue(e),!e)return{items:[]};let r=ce(e).filter(s=>s.presence!==lunr.Query.presence.PROHIBITED),n=this.index.search(e).reduce((s,{ref:o,score:a,matchData:c})=>{let u=this.map.get(o);if(typeof u!="undefined"){u=A({},u),u.tags&&(u.tags=[...u.tags]);let l=le(r,Object.keys(c.metadata));for(let f of this.index.fields){if(typeof u[f]=="undefined")continue;let v=[];for(let d of Object.values(c.metadata))typeof d[f]!="undefined"&&v.push(...d[f].position);if(!v.length)continue;let m=this.table.get([u.location,f].join(":")),x=Array.isArray(u[f])?G:se;u[f]=x(u[f],m,v)}let g=+!u.parent+Object.values(l).filter(f=>f).length/Object.keys(l).length;s.push(q(A({},u),{score:a*(1+Z(g,2)),terms:l}))}return s},[]).sort((s,o)=>o.score-s.score).reduce((s,o)=>{let a=this.map.get(o.location);if(typeof a!="undefined"){let c=a.parent?a.parent.location:a.location;s.set(c,[...s.get(c)||[],o])}return s},new Map);for(let[s,o]of n)if(!o.find(a=>a.location===s)){let a=this.map.get(s);o.push(q(A({},a),{score:0,terms:{}}))}let i;if(this.options.suggest){let s=this.index.query(o=>{for(let a of r)o.term(a.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});i=s.length?Object.keys(s[0].matchData.metadata):[]}return A({items:[...n.values()]},typeof i!="undefined"&&{suggest:i})}};var he;function Re(t){return B(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=re("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Ie(t){return B(this,null,function*(){switch(t.type){case 0:return yield Re(t.data.config),he=new H(t.data),{type:1};case 2:let e=t.data;try{return{type:3,data:he.search(e)}}catch(r){return console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`),console.warn(r),{type:3,data:{items:[]}}}default:throw new TypeError("Invalid message type")}})}self.lunr=fe.default;addEventListener("message",t=>B(void 0,null,function*(){postMessage(yield Ie(t.data))}));})(); +//# sourceMappingURL=search.e5c33ebb.min.js.map + diff --git a/assets/javascripts/workers/search.e5c33ebb.min.js.map b/assets/javascripts/workers/search.e5c33ebb.min.js.map new file mode 100644 index 00000000..48628b4f --- /dev/null +++ b/assets/javascripts/workers/search.e5c33ebb.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/lunr/lunr.js", "src/assets/javascripts/integrations/search/worker/main/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/polyfills/index.ts", "src/assets/javascripts/integrations/search/config/index.ts", "src/assets/javascripts/integrations/search/internal/_/index.ts", "src/assets/javascripts/integrations/search/internal/extract/index.ts", "src/assets/javascripts/integrations/search/internal/highlight/index.ts", "src/assets/javascripts/integrations/search/internal/tokenize/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/query/_/index.ts", "src/assets/javascripts/integrations/search/_/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport lunr from \"lunr\"\n\nimport { getElement } from \"~/browser/element/_\"\nimport \"~/polyfills\"\n\nimport { Search } from \"../../_\"\nimport { SearchConfig } from \"../../config\"\nimport {\n SearchMessage,\n SearchMessageType\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Add support for `iframe-worker` shim\n *\n * While `importScripts` is synchronous when executed inside of a web worker,\n * it's not possible to provide a synchronous shim implementation. The cool\n * thing is that awaiting a non-Promise will convert it into a Promise, so\n * extending the type definition to return a `Promise` shouldn't break anything.\n *\n * @see https://bit.ly/2PjDnXi - GitHub comment\n *\n * @param urls - Scripts to load\n *\n * @returns Promise resolving with no result\n */\ndeclare global {\n function importScripts(...urls: string[]): Promise<void> | void\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: Search\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch (= import) multi-language support through `lunr-languages`\n *\n * This function automatically imports the stemmers necessary to process the\n * languages which are defined as part of the search configuration.\n *\n * If the worker runs inside of an `iframe` (when using `iframe-worker` as\n * a shim), the base URL for the stemmers to be loaded must be determined by\n * searching for the first `script` element with a `src` attribute, which will\n * contain the contents of this script.\n *\n * @param config - Search configuration\n *\n * @returns Promise resolving with no result\n */\nasync function setupSearchLanguages(\n config: SearchConfig\n): Promise<void> {\n let base = \"../lunr\"\n\n /* Detect `iframe-worker` and fix base URL */\n if (typeof parent !== \"undefined\" && \"IFrameWorker\" in parent) {\n const worker = getElement<HTMLScriptElement>(\"script[src]\")!\n const [path] = worker.src.split(\"/worker\")\n\n /* Prefix base with path */\n base = base.replace(\"..\", path)\n }\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n switch (lang) {\n\n /* Add segmenter for Japanese */\n case \"ja\":\n scripts.push(`${base}/tinyseg.js`)\n break\n\n /* Add segmenter for Hindi and Thai */\n case \"hi\":\n case \"th\":\n scripts.push(`${base}/wordcut.js`)\n break\n }\n\n /* Add language support */\n if (lang !== \"en\")\n scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n await importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @returns Target message\n */\nexport async function handler(\n message: SearchMessage\n): Promise<SearchMessage> {\n switch (message.type) {\n\n /* Search setup message */\n case SearchMessageType.SETUP:\n await setupSearchLanguages(message.data.config)\n index = new Search(message.data)\n return {\n type: SearchMessageType.READY\n }\n\n /* Search query message */\n case SearchMessageType.QUERY:\n const query = message.data\n try {\n return {\n type: SearchMessageType.RESULT,\n data: index.search(query)\n }\n\n /* Return empty result in case of error */\n } catch (err) {\n console.warn(`Invalid query: ${query} \u2013 see https://bit.ly/2s3ChXG`)\n console.warn(err)\n return {\n type: SearchMessageType.RESULT,\n data: { items: [] }\n }\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\n/* Expose Lunr.js in global scope, or stemmers won't work */\nself.lunr = lunr\n\n/* Handle messages */\naddEventListener(\"message\", async ev => {\n postMessage(await handler(ev.data))\n})\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll<T>(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement<T>(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement<T extends keyof HTMLElementTagNameMap>(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement<T extends HTMLElement>(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement<T extends HTMLElement>(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector<T>(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array<string | Node>\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node === \"string\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search configuration\n */\nexport interface SearchConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n pipeline: SearchPipelineFn[] /* Search pipeline */\n}\n\n/**\n * Search document\n */\nexport interface SearchDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n tags?: string[] /* Document tags */\n boost?: number /* Document boost */\n parent?: SearchDocument /* Document parent */\n}\n\n/**\n * Search options\n */\nexport interface SearchOptions {\n suggest: boolean /* Search suggestions */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nexport interface SearchIndex {\n config: SearchConfig /* Search configuration */\n docs: SearchDocument[] /* Search documents */\n options: SearchOptions /* Search options */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search pipeline function\n */\ntype SearchPipelineFn =\n | \"trimmer\" /* Trimmer */\n | \"stopWordFilter\" /* Stop word filter */\n | \"stemmer\" /* Stemmer */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document map\n *\n * This function creates a mapping of URLs (including anchors) to the actual\n * articles and sections. It relies on the invariant that the search index is\n * ordered with the main article appearing before all sections with anchors.\n * If this is not the case, the logic music be changed.\n *\n * @param docs - Search documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchDocument[]\n): Map<string, SearchDocument> {\n const map = new Map<string, SearchDocument>()\n for (const doc of docs) {\n const [path] = doc.location.split(\"#\")\n\n /* Add document article */\n const article = map.get(path)\n if (typeof article === \"undefined\") {\n map.set(path, doc)\n\n /* Add document section */\n } else {\n map.set(doc.location, doc)\n doc.parent = article\n }\n }\n\n /* Return search document map */\n return map\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Visitor function\n *\n * @param start - Start offset\n * @param end - End offset\n */\ntype VisitorFn = (\n start: number, end: number\n) => void\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Split a string using the given separator\n *\n * @param input - Input value\n * @param separator - Separator\n * @param fn - Visitor function\n */\nexport function split(\n input: string, separator: RegExp, fn: VisitorFn\n): void {\n separator = new RegExp(separator, \"g\")\n\n /* Split string using separator */\n let match: RegExpExecArray | null\n let index = 0\n do {\n match = separator.exec(input)\n\n /* Emit non-empty range */\n const until = match?.index ?? input.length\n if (index < until)\n fn(index, until)\n\n /* Update last index */\n if (match) {\n const [term] = match\n index = match.index + term.length\n\n /* Support zero-length lookaheads */\n if (term.length === 0)\n separator.lastIndex = match.index + 1\n }\n } while (match)\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Extraction type\n *\n * This type defines the possible values that are encoded into the first two\n * bits of a section that is part of the blocks of a tokenization table. There\n * are three types of interest: HTML opening and closing tags, as well as the\n * actual text content we need to extract for indexing.\n */\nexport const enum Extract {\n TAG_OPEN = 0, /* HTML opening tag */\n TEXT = 1, /* Text content */\n TAG_CLOSE = 2 /* HTML closing tag */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Visitor function\n *\n * @param block - Block index\n * @param type - Extraction type\n * @param start - Start offset\n * @param end - End offset\n */\ntype VisitorFn = (\n block: number, type: Extract, start: number, end: number\n) => void\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Split a string into markup and text sections\n *\n * This function scans a string and divides it up into sections of markup and\n * text. For each section, it invokes the given visitor function with the block\n * index, extraction type, as well as start and end offsets. Using a visitor\n * function (= streaming data) is ideal for minimizing pressure on the GC.\n *\n * @param input - Input value\n * @param fn - Visitor function\n */\nexport function extract(\n input: string, fn: VisitorFn\n): void {\n\n let block = 0 /* Current block */\n let start = 0 /* Current start offset */\n let end = 0 /* Current end offset */\n\n /* Split string into sections */\n for (let stack = 0; end < input.length; end++) {\n\n /* Opening tag after non-empty section */\n if (input.charAt(end) === \"<\" && end > start) {\n fn(block, Extract.TEXT, start, start = end)\n\n /* Closing tag */\n } else if (input.charAt(end) === \">\") {\n if (input.charAt(start + 1) === \"/\") {\n if (--stack === 0)\n fn(block++, Extract.TAG_CLOSE, start, end + 1)\n\n /* Tag is not self-closing */\n } else if (input.charAt(end - 1) !== \"/\") {\n if (stack++ === 0)\n fn(block, Extract.TAG_OPEN, start, end + 1)\n }\n\n /* New section */\n start = end + 1\n }\n }\n\n /* Add trailing section */\n if (end > start)\n fn(block, Extract.TEXT, start, end)\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Position table\n */\nexport type PositionTable = number[][]\n\n/**\n * Position\n */\nexport type Position = number\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Highlight all occurrences in a string\n *\n * This function receives a field's value (e.g. like `title` or `text`), it's\n * position table that was generated during indexing, and the positions found\n * when executing the query. It then highlights all occurrences, and returns\n * their concatenation. In case of multiple blocks, two are returned.\n *\n * @param input - Input value\n * @param table - Table for indexing\n * @param positions - Occurrences\n *\n * @returns Highlighted string value\n */\nexport function highlight(\n input: string, table: PositionTable, positions: Position[]\n): string {\n return highlightAll([input], table, positions).pop()!\n}\n\n/**\n * Highlight all occurrences in a set of strings\n *\n * @param inputs - Input values\n * @param table - Table for indexing\n * @param positions - Occurrences\n *\n * @returns Highlighted string values\n */\nexport function highlightAll(\n inputs: string[], table: PositionTable, positions: Position[]\n): string[] {\n\n /* Map blocks to input values */\n const mapping = [0]\n for (let t = 1; t < table.length; t++) {\n const prev = table[t - 1]\n const next = table[t]\n\n /* Check if table points to new block */\n const p = prev[prev.length - 1] >>> 2 & 0x3FF\n const q = next[0] >>> 12\n\n /* Add block to mapping */\n mapping.push(+(p > q) + mapping[mapping.length - 1])\n }\n\n /* Highlight strings one after another */\n return inputs.map((input, i) => {\n\n /* Map occurrences to blocks */\n const blocks = new Map<number, number[]>()\n for (const p of positions.sort((a, b) => a - b)) {\n const index = p & 0xFFFFF\n const block = p >>> 20\n if (mapping[block] !== i)\n continue\n\n /* Ensure presence of block group */\n let group = blocks.get(block)\n if (typeof group === \"undefined\")\n blocks.set(block, group = [])\n\n /* Add index to group */\n group.push(index)\n }\n\n /* Just return string, if no occurrences */\n if (blocks.size === 0)\n return input\n\n /* Compute slices */\n const slices: string[] = []\n for (const [block, indexes] of blocks) {\n const t = table[block]\n\n /* Extract positions and length */\n const start = t[0] >>> 12\n const end = t[t.length - 1] >>> 12\n const length = t[t.length - 1] >>> 2 & 0x3FF\n\n /* Extract and highlight slice */\n let slice = input.slice(start, end + length)\n for (const j of indexes.sort((a, b) => b - a)) {\n\n /* Retrieve offset and length of match */\n const p = (t[j] >>> 12) - start\n const q = (t[j] >>> 2 & 0x3FF) + p\n\n /* Wrap occurrence */\n slice = [\n slice.slice(0, p),\n \"<mark>\",\n slice.slice(p, q),\n \"</mark>\",\n slice.slice(q)\n ].join(\"\")\n }\n\n /* Append slice and abort if we have two */\n if (slices.push(slice) === 2)\n break\n }\n\n /* Return highlighted slices */\n return slices.join(\"\")\n })\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { split } from \"../_\"\nimport {\n Extract,\n extract\n} from \"../extract\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Split a string or set of strings into tokens\n *\n * This tokenizer supersedes the default tokenizer that is provided by Lunr.js,\n * as it is aware of HTML tags and allows for multi-character splitting.\n *\n * It takes the given inputs, splits each of them into markup and text sections,\n * tokenizes and segments (if necessary) each of them, and then indexes them in\n * a table by using a compact bit representation. Bitwise techniques are used\n * to write and read from the table during indexing and querying.\n *\n * @see https://bit.ly/3W3Xw4J - Search: better, faster, smaller\n *\n * @param input - Input value(s)\n *\n * @returns Tokens\n */\nexport function tokenize(\n input?: string | string[]\n): lunr.Token[] {\n const tokens: lunr.Token[] = []\n if (typeof input === \"undefined\")\n return tokens\n\n /* Tokenize strings one after another */\n const inputs = Array.isArray(input) ? input : [input]\n for (let i = 0; i < inputs.length; i++) {\n const table = lunr.tokenizer.table\n const total = table.length\n\n /* Split string into sections and tokenize content blocks */\n extract(inputs[i], (block, type, start, end) => {\n table[block += total] ||= []\n switch (type) {\n\n /* Handle markup */\n case Extract.TAG_OPEN:\n case Extract.TAG_CLOSE:\n table[block].push(\n start << 12 |\n end - start << 2 |\n type\n )\n break\n\n /* Handle text content */\n case Extract.TEXT:\n const section = inputs[i].slice(start, end)\n split(section, lunr.tokenizer.separator, (index, until) => {\n\n /**\n * Apply segmenter after tokenization. Note that the segmenter will\n * also split words at word boundaries, which is not what we want,\n * so we need to check if we can somehow mitigate this behavior.\n */\n if (typeof lunr.segmenter !== \"undefined\") {\n const subsection = section.slice(index, until)\n if (/^[MHIK]$/.test(lunr.segmenter.ctype_(subsection))) {\n const segments = lunr.segmenter.segment(subsection)\n for (let s = 0, l = 0; s < segments.length; s++) {\n\n /* Add block to section */\n table[block] ||= []\n table[block].push(\n start + index + l << 12 |\n segments[s].length << 2 |\n type\n )\n\n /* Add token with position */\n tokens.push(new lunr.Token(\n segments[s].toLowerCase(), {\n position: block << 20 | table[block].length - 1\n }\n ))\n\n /* Keep track of length */\n l += segments[s].length\n }\n return\n }\n }\n\n /* Add block to section */\n table[block].push(\n start + index << 12 |\n until - index << 2 |\n type\n )\n\n /* Add token with position */\n tokens.push(new lunr.Token(\n section.slice(index, until).toLowerCase(), {\n position: block << 20 | table[block].length - 1\n }\n ))\n })\n }\n })\n }\n\n /* Return tokens */\n return tokens\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Visitor function\n *\n * @param value - String value\n *\n * @returns String term(s)\n */\ntype VisitorFn = (\n value: string\n) => string | string[]\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Trim excess whitespace from left and right.\n *\n * 2. Search for parts in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all parts, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect parts enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the parts to an `AND` query.\n *\n * 3. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 4. Split the query string at whitespace, then pass each part to the visitor\n * function for tokenization, and append a wildcard to every resulting term\n * that is not explicitly marked with a `+`, `-`, `~` or `^` modifier, since\n * it ensures consistent and stable ranking when multiple terms are entered.\n * Also, if a fuzzy or boost modifier are given, but no numeric value has\n * been entered, default to 1 to not induce a query error.\n *\n * @param query - Query value\n * @param fn - Visitor function\n *\n * @returns Transformed query value\n */\nexport function transform(\n query: string, fn: VisitorFn = term => term\n): string {\n return query\n\n /* => 1 */\n .trim()\n\n /* => 2 */\n .split(/\"([^\"]+)\"/g)\n .map((parts, index) => index & 1\n ? parts.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : parts\n )\n .join(\"\")\n\n /* => 3 */\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\")\n\n /* => 4 */\n .split(/\\s+/g)\n .flatMap(fn)\n .map(term => /([~^]$)/.test(term) ? `${term}1` : term)\n .map(term => /(^[+-]|[~^]\\d+$)/.test(term) ? term : `${term}*`)\n .join(\" \")\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { split } from \"../../internal\"\nimport { transform } from \"../transform\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query clause\n */\nexport interface SearchQueryClause {\n presence: lunr.Query.presence /* Clause presence */\n term: string /* Clause term */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search query terms\n */\nexport type SearchQueryTerms = Record<string, boolean>\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Transform search query\n *\n * This function lexes the given search query and applies the transformation\n * function to each term, preserving markup like `+` and `-` modifiers.\n *\n * @param query - Search query\n *\n * @returns Search query\n */\nexport function transformSearchQuery(\n query: string\n): string {\n\n /* Split query terms with tokenizer */\n return transform(query, part => {\n const terms: string[] = []\n\n /* Initialize lexer and analyze part */\n const lexer = new lunr.QueryLexer(part)\n lexer.run()\n\n /* Extract and tokenize term from lexeme */\n for (const { type, str: term, start, end } of lexer.lexemes)\n if (type === \"TERM\")\n split(term, lunr.tokenizer.separator, (...range) => {\n terms.push([\n part.slice(0, start),\n term.slice(...range),\n part.slice(end)\n ].join(\"\"))\n })\n\n /* Return terms */\n return terms\n })\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Parse a search query for analysis\n *\n * Lunr.js itself has a bug where it doesn't detect or remove wildcards for\n * query clauses, so we must do this here.\n *\n * @see https://bit.ly/3DpTGtz - GitHub issue\n *\n * @param value - Query value\n *\n * @returns Search query clauses\n */\nexport function parseSearchQuery(\n value: string\n): SearchQueryClause[] {\n const query = new lunr.Query([\"title\", \"text\", \"tags\"])\n const parser = new lunr.QueryParser(value, query)\n\n /* Parse Search query */\n parser.parse()\n for (const clause of query.clauses) {\n clause.usePipeline = true\n\n /* Handle leading wildcard */\n if (clause.term.startsWith(\"*\")) {\n clause.wildcard = lunr.Query.wildcard.LEADING\n clause.term = clause.term.slice(1)\n }\n\n /* Handle trailing wildcard */\n if (clause.term.endsWith(\"*\")) {\n clause.wildcard = lunr.Query.wildcard.TRAILING\n clause.term = clause.term.slice(0, -1)\n }\n }\n\n /* Return query clauses */\n return query.clauses\n}\n\n/**\n * Analyze the search query clauses in regard to the search terms found\n *\n * @param query - Search query clauses\n * @param terms - Search terms\n *\n * @returns Search query terms\n */\nexport function getSearchQueryTerms(\n query: SearchQueryClause[], terms: string[]\n): SearchQueryTerms {\n const clauses = new Set<SearchQueryClause>(query)\n\n /* Match query clauses against terms */\n const result: SearchQueryTerms = {}\n for (let t = 0; t < terms.length; t++)\n for (const clause of clauses)\n if (terms[t].startsWith(clause.term)) {\n result[clause.term] = true\n clauses.delete(clause)\n }\n\n /* Annotate unmatched non-stopword query clauses */\n for (const clause of clauses)\n if (lunr.stopWordFilter?.(clause.term))\n result[clause.term] = false\n\n /* Return query terms */\n return result\n}\n", "/*\n * Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n SearchDocument,\n SearchIndex,\n SearchOptions,\n setupSearchDocumentMap\n} from \"../config\"\nimport {\n Position,\n PositionTable,\n highlight,\n highlightAll,\n tokenize\n} from \"../internal\"\nimport {\n SearchQueryTerms,\n getSearchQueryTerms,\n parseSearchQuery,\n transformSearchQuery\n} from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search item\n */\nexport interface SearchItem\n extends SearchDocument\n{\n score: number /* Score (relevance) */\n terms: SearchQueryTerms /* Search query terms */\n}\n\n/**\n * Search result\n */\nexport interface SearchResult {\n items: SearchItem[][] /* Search items */\n suggest?: string[] /* Search suggestions */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create field extractor factory\n *\n * @param table - Position table map\n *\n * @returns Extractor factory\n */\nfunction extractor(table: Map<string, PositionTable>) {\n return (name: keyof SearchDocument) => {\n return (doc: SearchDocument) => {\n if (typeof doc[name] === \"undefined\")\n return undefined\n\n /* Compute identifier and initialize table */\n const id = [doc.location, name].join(\":\")\n table.set(id, lunr.tokenizer.table = [])\n\n /* Return field value */\n return doc[name]\n }\n }\n}\n\n/**\n * Compute the difference of two lists of strings\n *\n * @param a - 1st list of strings\n * @param b - 2nd list of strings\n *\n * @returns Difference\n */\nfunction difference(a: string[], b: string[]): string[] {\n const [x, y] = [new Set(a), new Set(b)]\n return [\n ...new Set([...x].filter(value => !y.has(value)))\n ]\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nexport class Search {\n\n /**\n * Search document map\n */\n protected map: Map<string, SearchDocument>\n\n /**\n * Search options\n */\n protected options: SearchOptions\n\n /**\n * The underlying Lunr.js search index\n */\n protected index: lunr.Index\n\n /**\n * Internal position table map\n */\n protected table: Map<string, PositionTable>\n\n /**\n * Create the search integration\n *\n * @param data - Search index\n */\n public constructor({ config, docs, options }: SearchIndex) {\n const field = extractor(this.table = new Map())\n\n /* Set up document map and options */\n this.map = setupSearchDocumentMap(docs)\n this.options = options\n\n /* Set up document index */\n this.index = lunr(function () {\n this.metadataWhitelist = [\"position\"]\n this.b(0)\n\n /* Set up (multi-)language support */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n // @ts-expect-error - namespace indexing not supported\n this.use(lunr[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use(lunr.multiLanguage(...config.lang))\n }\n\n /* Set up custom tokenizer (must be after language setup) */\n this.tokenizer = tokenize as typeof lunr.tokenizer\n lunr.tokenizer.separator = new RegExp(config.separator)\n\n /* Set up custom segmenter, if loaded */\n lunr.segmenter = \"TinySegmenter\" in lunr\n ? new lunr.TinySegmenter()\n : undefined\n\n /* Compute functions to be removed from the pipeline */\n const fns = difference([\n \"trimmer\", \"stopWordFilter\", \"stemmer\"\n ], config.pipeline)\n\n /* Remove functions from the pipeline for registered languages */\n for (const lang of config.lang.map(language => (\n // @ts-expect-error - namespace indexing not supported\n language === \"en\" ? lunr : lunr[language]\n )))\n for (const fn of fns) {\n this.pipeline.remove(lang[fn])\n this.searchPipeline.remove(lang[fn])\n }\n\n /* Set up index reference */\n this.ref(\"location\")\n\n /* Set up index fields */\n this.field(\"title\", { boost: 1e3, extractor: field(\"title\") })\n this.field(\"text\", { boost: 1e0, extractor: field(\"text\") })\n this.field(\"tags\", { boost: 1e6, extractor: field(\"tags\") })\n\n /* Add documents to index */\n for (const doc of docs)\n this.add(doc, { boost: doc.boost })\n })\n }\n\n /**\n * Search for matching documents\n *\n * @param query - Search query\n *\n * @returns Search result\n */\n public search(query: string): SearchResult {\n query = transformSearchQuery(query)\n if (!query)\n return { items: [] }\n\n /* Parse query to extract clauses for analysis */\n const clauses = parseSearchQuery(query)\n .filter(clause => (\n clause.presence !== lunr.Query.presence.PROHIBITED\n ))\n\n /* Perform search and post-process results */\n const groups = this.index.search(query)\n\n /* Apply post-query boosts based on title and search query terms */\n .reduce<SearchItem[]>((item, { ref, score, matchData }) => {\n let doc = this.map.get(ref)\n if (typeof doc !== \"undefined\") {\n\n /* Shallow copy document */\n doc = { ...doc }\n if (doc.tags)\n doc.tags = [...doc.tags]\n\n /* Compute and analyze search query terms */\n const terms = getSearchQueryTerms(\n clauses,\n Object.keys(matchData.metadata)\n )\n\n /* Highlight matches in fields */\n for (const field of this.index.fields) {\n if (typeof doc[field] === \"undefined\")\n continue\n\n /* Collect positions from matches */\n const positions: Position[] = []\n for (const match of Object.values(matchData.metadata))\n if (typeof match[field] !== \"undefined\")\n positions.push(...match[field].position)\n\n /* Skip highlighting, if no positions were collected */\n if (!positions.length)\n continue\n\n /* Load table and determine highlighting method */\n const table = this.table.get([doc.location, field].join(\":\"))!\n const fn = Array.isArray(doc[field])\n ? highlightAll\n : highlight\n\n // @ts-expect-error - stop moaning, TypeScript!\n doc[field] = fn(doc[field], table, positions)\n }\n\n /* Highlight title and text and apply post-query boosts */\n const boost = +!doc.parent +\n Object.values(terms)\n .filter(t => t).length /\n Object.keys(terms).length\n\n /* Append item */\n item.push({\n ...doc,\n score: score * (1 + boost ** 2),\n terms\n })\n }\n return item\n }, [])\n\n /* Sort search results again after applying boosts */\n .sort((a, b) => b.score - a.score)\n\n /* Group search results by article */\n .reduce((items, result) => {\n const doc = this.map.get(result.location)\n if (typeof doc !== \"undefined\") {\n const ref = doc.parent\n ? doc.parent.location\n : doc.location\n items.set(ref, [...items.get(ref) || [], result])\n }\n return items\n }, new Map<string, SearchItem[]>())\n\n /* Ensure that every item set has an article */\n for (const [ref, items] of groups)\n if (!items.find(item => item.location === ref)) {\n const doc = this.map.get(ref)!\n items.push({ ...doc, score: 0, terms: {} })\n }\n\n /* Generate search suggestions, if desired */\n let suggest: string[] | undefined\n if (this.options.suggest) {\n const titles = this.index.query(builder => {\n for (const clause of clauses)\n builder.term(clause.term, {\n fields: [\"title\"],\n presence: lunr.Query.presence.REQUIRED,\n wildcard: lunr.Query.wildcard.TRAILING\n })\n })\n\n /* Retrieve suggestions for best match */\n suggest = titles.length\n ? Object.keys(titles[0].matchData.metadata)\n : []\n }\n\n /* Return search result */\n return {\n items: [...groups.values()],\n ...typeof suggest !== \"undefined\" && { suggest }\n }\n }\n}\n"], + "mappings": "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", + "names": ["require_lunr", "__commonJSMin", "exports", "module", "lunr", "config", "builder", "global", "message", "obj", "clone", "keys", "key", "val", "docRef", "fieldName", "stringValue", "s", "n", "fieldRef", "elements", "i", "other", "object", "a", "b", "intersection", "element", "posting", "documentCount", "documentsWithTerm", "x", "str", "metadata", "fn", "t", "len", "tokens", "sliceEnd", "sliceStart", "char", "sliceLength", "tokenMetadata", "label", "isRegistered", "serialised", "pipeline", "fnName", "fns", "existingFn", "newFn", "pos", "stackLength", "memo", "j", "result", "k", "token", "index", "start", "end", "pivotPoint", "pivotIndex", "insertIdx", "position", "sumOfSquares", "elementsLength", "otherVector", "dotProduct", "aLen", "bLen", "aVal", "bVal", "output", "step2list", "step3list", "c", "v", "C", "V", "mgr0", "meq1", "mgr1", "s_v", "re_mgr0", "re_mgr1", "re_meq1", "re_s_v", "re_1a", "re2_1a", "re_1b", "re2_1b", "re_1b_2", "re2_1b_2", "re3_1b_2", "re4_1b_2", "re_1c", "re_2", "re_3", "re_4", "re2_4", "re_5", "re_5_1", "re3_5", "porterStemmer", "w", "stem", "suffix", "firstch", "re", "re2", "re3", "re4", "fp", "stopWords", "words", "stopWord", "arr", "clause", "editDistance", "root", "stack", "frame", "noEditNode", "insertionNode", "substitutionNode", "charA", "charB", "transposeNode", "node", "final", "next", "edges", "edge", "labels", "qEdges", "qLen", "nEdges", "nLen", "q", "qEdge", "nEdge", "qNode", "word", "commonPrefix", "nextNode", "downTo", "childKey", "attrs", "queryString", "query", "parser", "matchingFields", "queryVectors", "termFieldCache", "requiredMatches", "prohibitedMatches", "terms", "clauseMatches", "m", "term", "termTokenSet", "expandedTerms", "field", "expandedTerm", "termIndex", "fieldPosting", "matchingDocumentRefs", "termField", "matchingDocumentsSet", "l", "matchingDocumentRef", "matchingFieldRef", "fieldMatch", "allRequiredMatches", "allProhibitedMatches", "matchingFieldRefs", "results", "matches", "fieldVector", "score", "docMatch", "match", "invertedIndex", "fieldVectors", "ref", "serializedIndex", "serializedVectors", "serializedInvertedIndex", "tokenSetBuilder", "tuple", "attributes", "number", "doc", "fields", "extractor", "fieldTerms", "metadataKey", "fieldRefs", "numberOfFields", "accumulator", "documentsWithField", "fieldRefsLength", "termIdfCache", "fieldLength", "termFrequencies", "termsLength", "fieldBoost", "docBoost", "tf", "idf", "scoreWithPrecision", "args", "clonedMetadata", "metadataKeys", "otherMatchData", "allFields", "options", "state", "subSlices", "type", "charCode", "lexer", "lexeme", "completedClause", "errorMessage", "nextLexeme", "possibleFields", "f", "boost", "factory", "import_lunr", "getElement", "selector", "node", "el", "getOptionalElement", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "setupSearchDocumentMap", "docs", "map", "doc", "path", "article", "split", "input", "separator", "fn", "_a", "match", "index", "until", "term", "extract", "input", "fn", "block", "start", "end", "stack", "highlight", "input", "table", "positions", "highlightAll", "inputs", "mapping", "t", "prev", "next", "p", "q", "i", "blocks", "a", "b", "index", "block", "group", "slices", "indexes", "start", "end", "length", "slice", "j", "tokenize", "input", "tokens", "inputs", "i", "table", "total", "extract", "block", "type", "start", "end", "_a", "section", "split", "index", "until", "subsection", "segments", "s", "l", "transform", "query", "fn", "term", "parts", "index", "transformSearchQuery", "query", "transform", "part", "terms", "lexer", "type", "term", "start", "end", "split", "range", "parseSearchQuery", "value", "clause", "getSearchQueryTerms", "_a", "clauses", "result", "t", "extractor", "table", "name", "doc", "id", "difference", "a", "b", "x", "y", "value", "Search", "config", "docs", "options", "field", "setupSearchDocumentMap", "tokenize", "fns", "lang", "language", "fn", "query", "transformSearchQuery", "clauses", "parseSearchQuery", "clause", "groups", "item", "ref", "score", "matchData", "__spreadValues", "terms", "getSearchQueryTerms", "positions", "match", "highlightAll", "highlight", "boost", "t", "__spreadProps", "__pow", "items", "result", "suggest", "titles", "builder", "index", "setupSearchLanguages", "config", "__async", "base", "worker", "getElement", "path", "scripts", "lang", "handler", "message", "Search", "query", "err", "lunr", "ev"] +} diff --git a/assets/stylesheets/main.558e4712.min.css b/assets/stylesheets/main.558e4712.min.css new file mode 100644 index 00000000..87094c4e --- /dev/null +++ b/assets/stylesheets/main.558e4712.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}:root,[data-md-color-scheme=default]{--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:#ffff0080;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:#ffff0080;--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:#0000001f;--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m18 21-4-4h3V7h-3l4-4 4 4h-3v10h3M2 19v-2h10v2M2 13v-2h7v2M2 7V5h4v2H2Z"/></svg>');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 17h3l-4 4-4-4h3V3h2M2 17h10v2H2M6 5v2H2V5m0 6h7v2H2v-2Z"/></svg>');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 7h3l-4-4-4 4h3v14h2M2 17h10v2H2M6 5v2H2V5m0 6h7v2H2v-2Z"/></svg>')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr[title]:focus:after,.md-typeset abbr[title]:hover:after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);font-size:.7rem;left:.8rem;margin-top:2em;padding:.2rem .3rem;position:absolute;right:.8rem}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"/></svg>')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 9h14V7H3v2m0 4h14v-2H3v2m0 4h14v-2H3v2m16 0h2v-2h-2v2m0-10v2h2V7h-2m0 6h2v-2h-2v2Z"/></svg>')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:focus,.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:checked~.md-nav,.md-nav__toggle:indeterminate~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h7c-.41-.25-.8-.56-1.14-.9-.33-.33-.61-.7-.86-1.1H6V4h7v5h5v1.18c.71.16 1.39.43 2 .82V8l-6-6m6.31 16.9c1.33-2.11.69-4.9-1.4-6.22-2.11-1.33-4.91-.68-6.22 1.4-1.34 2.11-.69 4.89 1.4 6.22 1.46.93 3.32.93 4.79.02L22 23.39 23.39 22l-3.08-3.1m-3.81.1a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5Z"/></svg>')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:-webkit-sticky;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"/></svg>');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"/></svg>');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"/></svg>')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m5.41 21 .71-4h-4l.35-2h4l1.06-6h-4l.35-2h4l.71-4h2l-.71 4h6l.71-4h2l-.71 4h4l-.35 2h-4l-1.06 6h4l-.35 2h-4l-.71 4h-2l.71-4h-6l-.71 4h-2M9.53 9l-1.06 6h6l1.06-6h-6Z"/></svg>')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em #0000;transform:scale(1)}to{box-shadow:0 0 0 0 #0000;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:focus,.md-annotation .md-annotation__index:hover{color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index{color:var(--md-accent-bg-color)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9S301 191.9 288 191.9L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m3.1 5.07c.14 0 .28.05.4.16l1.27 1.27c.23.22.23.57 0 .78l-1 1-2.05-2.05 1-1c.1-.11.24-.16.38-.16m-1.97 1.74 2.06 2.06-6.06 6.06H7.07v-2.06l6.06-6.06Z"/></svg>');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 9H7V7h10m0 6H7v-2h10m-3 6H7v-2h7M12 3a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m7 0h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z"/></svg>');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2Z"/></svg>');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.66 11.2c-.23-.3-.51-.56-.77-.82-.67-.6-1.43-1.03-2.07-1.66C13.33 7.26 13 4.85 13.95 3c-.95.23-1.78.75-2.49 1.32-2.59 2.08-3.61 5.75-2.39 8.9.04.1.08.2.08.33 0 .22-.15.42-.35.5-.23.1-.47.04-.66-.12a.58.58 0 0 1-.14-.17c-1.13-1.43-1.31-3.48-.55-5.12C5.78 10 4.87 12.3 5 14.47c.06.5.12 1 .29 1.5.14.6.41 1.2.71 1.73 1.08 1.73 2.95 2.97 4.96 3.22 2.14.27 4.43-.12 6.07-1.6 1.83-1.66 2.47-4.32 1.53-6.6l-.13-.26c-.21-.46-.77-1.26-.77-1.26m-3.16 6.3c-.28.24-.74.5-1.1.6-1.12.4-2.24-.16-2.9-.82 1.19-.28 1.9-1.16 2.11-2.05.17-.8-.15-1.46-.28-2.23-.12-.74-.1-1.37.17-2.06.19.38.39.76.63 1.06.77 1 1.98 1.44 2.24 2.8.04.14.06.28.06.43.03.82-.33 1.72-.93 2.27Z"/></svg>');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 7 9 19l-5.5-5.5 1.41-1.41L9 16.17 19.59 5.59 21 7Z"/></svg>');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10Z"/></svg>');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 14h-2V9h2m0 9h-2v-2h2M1 21h22L12 2 1 21Z"/></svg>');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m11.5 20 4.86-9.73H13V4l-5 9.73h3.5V20M12 2c2.75 0 5.1 1 7.05 2.95C21 6.9 22 9.25 22 12s-1 5.1-2.95 7.05C17.1 21 14.75 22 12 22s-5.1-1-7.05-2.95C3 17.1 2 14.75 2 12s1-5.1 2.95-7.05C6.9 3 9.25 2 12 2Z"/></svg>');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11 13h2v1h-2v-1m10-8v6c0 5.5-3.8 10.7-9 12-5.2-1.3-9-6.5-9-12V5l9-4 9 4m-4 5h-2.2c-.2-.6-.6-1.1-1.1-1.5l1.2-1.2-.7-.7L12.8 8H12c-.2 0-.5 0-.7.1L9.9 6.6l-.8.8 1.2 1.2c-.5.3-.9.8-1.1 1.4H7v1h2v1H7v1h2v1H7v1h2.2c.4 1.2 1.5 2 2.8 2s2.4-.8 2.8-2H17v-1h-2v-1h2v-1h-2v-1h2v-1m-6 2h2v-1h-2v1Z"/></svg>');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 2v2h1v14a4 4 0 0 0 4 4 4 4 0 0 0 4-4V4h1V2H7m4 14c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m2-4c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1m1-5h-4V4h4v3Z"/></svg>');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 17h3l2-4V7h-6v6h3M6 17h3l2-4V7H5v6h3l-2 4Z"/></svg>')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.42L5.83 13H21V7h-2Z"/></svg>')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 16.58 10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.42Z"/></svg>');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z"/></svg>')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm16.28-2.72a.751.751 0 0 0-.018-1.042.751.751 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg>');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12Zm16.28-2.72a.751.751 0 0 0-.018-1.042.751.751 0 0 0-1.042-.018l-5.97 5.97-2.47-2.47a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042l3 3a.75.75 0 0 0 1.06 0Z"/></svg>')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/main.558e4712.min.css.map b/assets/stylesheets/main.558e4712.min.css.map new file mode 100644 index 00000000..932583dc --- /dev/null +++ b/assets/stylesheets/main.558e4712.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/components/_banner.scss","src/assets/stylesheets/main/components/_base.scss","src/assets/stylesheets/main/components/_clipboard.scss","src/assets/stylesheets/main/components/_consent.scss","src/assets/stylesheets/main/components/_content.scss","src/assets/stylesheets/main/components/_dialog.scss","src/assets/stylesheets/main/components/_feedback.scss","src/assets/stylesheets/main/components/_footer.scss","src/assets/stylesheets/main/components/_form.scss","src/assets/stylesheets/main/components/_header.scss","src/assets/stylesheets/main/components/_nav.scss","src/assets/stylesheets/main/components/_search.scss","src/assets/stylesheets/main/components/_select.scss","src/assets/stylesheets/main/components/_sidebar.scss","src/assets/stylesheets/main/components/_source.scss","src/assets/stylesheets/main/components/_tabs.scss","src/assets/stylesheets/main/components/_tag.scss","src/assets/stylesheets/main/components/_tooltip.scss","src/assets/stylesheets/main/components/_top.scss","src/assets/stylesheets/main/components/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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A,+BAAA,CAHA,2CACE,CALF,kBAAA,CALA,UnCwqHN,CmCzpHM,aAII,6CACE,OnCwpHV,CmCzpHQ,8CACE,OnC2pHV,CmC5pHQ,8CACE,OnC8pHV,CmC/pHQ,8CACE,OnCiqHV,CmClqHQ,8CACE,OnCoqHV,CmCrqHQ,8CACE,OnCuqHV,CmCxqHQ,8CACE,OnC0qHV,CmC3qHQ,8CACE,OnC6qHV,CmC9qHQ,8CACE,OnCgrHV,CmCjrHQ,+CACE,QnCmrHV,CmCprHQ,+CACE,QnCsrHV,CmCvrHQ,+CACE,QnCyrHV,CmC1rHQ,+CACE,QnC4rHV,CmC7rHQ,+CACE,QnC+rHV,CmChsHQ,+CACE,QnCksHV,CmCnsHQ,+CACE,QnCqsHV,CmCtsHQ,+CACE,QnCwsHV,CmCzsHQ,+CACE,QnC2sHV,CmC5sHQ,+CACE,QnC8sHV,CmC/sHQ,+CACE,QnCitHV,CACF,CmC5sHM,uCACE,+BnC8sHR,CmCxsHE,4BACE,UnC0sHJ,CmCvsHI,aAJF,4BAKI,gBnC0sHJ,CACF,CmCtsHE,0BACE,YnCwsHJ,CmCrsHI,aAJF,0BAKI,anCwsHJ,CmCpsHM,sCACE,OnCssHR,CmCvsHM,uCACE,OnCysHR,CmC1sHM,uCACE,OnC4sHR,CmC7sHM,uCACE,OnC+sHR,CmChtHM,uCACE,OnCktHR,CmCntHM,uCACE,OnCqtHR,CmCttHM,uCACE,OnCwtHR,CmCztHM,uCACE,OnC2tHR,CmC5tHM,uCACE,OnC8tHR,CmC/tHM,wCACE,QnCiuHR,CmCluHM,wCACE,QnCouHR,CmCruHM,wCACE,QnCuuHR,CmCxuHM,wCACE,QnC0uHR,CmC3uHM,wCACE,QnC6uHR,CmC9uHM,wCACE,QnCgvHR,CmCjvHM,wCACE,QnCmvHR,CmCpvHM,wCACE,QnCsvHR,CmCvvHM,wCACE,QnCyvHR,CmC1vHM,wCACE,QnC4vHR,CmC7vHM,wCACE,QnC+vHR,CACF,CmCzvHI,+FAEE,QnC2vHN,CmCxvHM,yGACE,wBAAA,CACA,yBnC2vHR,CmClvHM,2DAEE,wBAAA,CACA,yBAAA,CAFA,QnCsvHR,CmC/uHM,iEACE,QnCivHR,CmC9uHQ,qLAGE,wBAAA,CACA,yBAAA,CAFA,QnCkvHV,CmC5uHQ,6FACE,wBAAA,CACA,yBnC8uHV,CmCzuHM,yDACE,kBnC2uHR,CmCtuHI,sCACE,QnCwuHN,CmCnuHE,2BAEE,iBAAA,CAKA,kBAAA,CADA,uCAAA,CAEA,cAAA,CAPA,aAAA,CAGA,YAAA,CACA,gBAAA,CAKA,mBAAA,CADA,gCAAA,CANA,WnC4uHJ,CmCluHI,iCAEE,uDAAA,CADA,+BnCquHN,CmChuHI,iCAIE,6BAAA,CAQA,UAAA,CAXA,aAAA,CAEA,WAAA,CAKA,8CAAA,CAAA,sCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CANA,+CACE,CAJF,UnC0uHN,CmC3tHE,4BAME,yEACE,CALF,YAAA,CAGA,aAAA,CAFA,qBAAA,CAUA,mBAAA,CAZA,iBAAA,CAWA,wBAAA,CARA,YnCiuHJ,CmCrtHI,sCACE,wBnCutHN,CmCntHI,oCACE,SnCqtHN,CmCjtHI,kCAGE,wEACE,CAFF,mBAAA,CADA,OnCqtHN,CmC3sHM,uDACE,8CAAA,CAAA,sCnC6sHR,CK7zHI,wC8B8HF,wDAGE,kBnCosHF,CmCvsHA,wDAGE,mBnCosHF,CmCvsHA,8CAEE,eAAA,CADA,eAAA,CAGA,iCnCmsHF,CmC/rHE,8DACE,mBnCksHJ,CmCnsHE,8DACE,kBnCksHJ,CmCnsHE,oDAEE,UnCisHJ,CmC7rHE,8EAEE,kBnCgsHJ,CmClsHE,8EAEE,mBnCgsHJ,CmClsHE,8EAGE,kBnC+rHJ,CmClsHE,8EAGE,mBnC+rHJ,CmClsHE,oEACE,UnCisHJ,CmC3rHE,8EAEE,mBnC8rHJ,CmChsHE,8EAEE,kBnC8rHJ,CmChsHE,8EAGE,mBnC6rHJ,CmChsHE,8EAGE,kBnC6rHJ,CmChsHE,oEACE,UnC+rHJ,CACF,CmCjrHE,cAHF,olDAII,+BnCorHF,CmCjrHE,g8GACE,sCnCmrHJ,CACF,CmC9qHA,4sDACE,uDnCirHF,CmC7qHA,wmDACE,anCgrHF,CoC7hIA,MACE,8WAAA,CAEA,uXpCiiIF,CoCvhIE,4BAEE,oBAAA,CADA,iBpC2hIJ,CoCthII,sDAGE,SpCwhIN,CoC3hII,sDAGE,UpCwhIN,CoC3hII,4CACE,iBAAA,CACA,SpCyhIN,CoCnhIE,+CAEE,SAAA,CADA,UpCshIJ,CoCjhIE,kDAGE,WpC2hIJ,CoC9hIE,kDAGE,YpC2hIJ,CoC9hIE,wCAME,qDAAA,CAKA,UAAA,CANA,aAAA,CAEA,0CAAA,CAAA,kCAAA,CACA,4BAAA,CAAA,oBAAA,CACA,6BAAA,CAAA,qBAAA,CACA,yBAAA,CAAA,iBAAA,CATA,iBAAA,CACA,SAAA,CAEA,YpC0hIJ,CoC/gIE,gEACE,wBTyWa,CSxWb,mDAAA,CAAA,2CpCihIJ,CqCnkIA,QACE,8DAAA,CAGA,+CAAA,CACA,iEAAA,CACA,oDAAA,CACA,sDAAA,CACA,mDrCokIF,CqChkIA,SAEE,kBAAA,CADA,YrCokIF,CK36HI,mCiChKA,8BACE,UtCmlIJ,CsCplIE,8BACE,WtCmlIJ,CsCplIE,8BAIE,kBtCglIJ,CsCplIE,8BAIE,iBtCglIJ,CsCplIE,oBAKE,mBAAA,CAFA,YAAA,CADA,atCklIJ,CsC5kII,kCACE,WtC+kIN,CsChlII,kCACE,UtC+kIN,CsChlII,kCAEE,iBAAA,CAAA,ctC8kIN,CsChlII,kCAEE,aAAA,CAAA,kBtC8kIN,CACF","file":"main.css"} \ No newline at end of file diff --git a/assets/stylesheets/palette.2505c338.min.css b/assets/stylesheets/palette.2505c338.min.css new file mode 100644 index 00000000..3c005dd6 --- /dev/null +++ b/assets/stylesheets/palette.2505c338.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:#4287ff26;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:#4287ff4d;--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem #0003,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000004d,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:#ffffffb3;--md-primary-fg-color--dark:#00000012;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a;--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:#fff}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:#00000012}[data-md-color-primary=white] .md-search__form:hover{background-color:#00000052}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:#000000de}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:#0000008a;--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:#fff}[data-md-color-primary=black] .md-header{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:#000000de}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:#ffffff1f}[data-md-color-primary=black] .md-search__form:hover{background-color:#ffffff4d}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}} \ No newline at end of file diff --git a/assets/stylesheets/palette.2505c338.min.css.map b/assets/stylesheets/palette.2505c338.min.css.map new file mode 100644 index 00000000..3aec1903 --- /dev/null +++ b/assets/stylesheets/palette.2505c338.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"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","file":"palette.css"} \ No newline at end of file diff --git a/community_packages/index.html b/community_packages/index.html new file mode 100644 index 00000000..e7984208 --- /dev/null +++ b/community_packages/index.html @@ -0,0 +1,1935 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/community_packages/"> + + + <link rel="prev" href="../styling/"> + + + <link rel="next" href="../troubleshooting/"> + + <link rel="icon" href="../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Community Packages - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../css/extra_footer.css"> + + <link rel="stylesheet" href="../css/extra_typo.css"> + + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#community-packages" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href=".." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Community Packages + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href=".." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href=".." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Community Packages + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Community Packages + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#blade-package-installation" class="md-nav__link"> + Blade package installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-package-installation" class="md-nav__link"> + Docker package installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#package-list" class="md-nav__link"> + Package list + </a> + + <nav class="md-nav" aria-label="Package list"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#seat-specific-packages" class="md-nav__link"> + SeAT specific packages + </a> + + <nav class="md-nav" aria-label="SeAT specific packages"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#maintained-packages" class="md-nav__link"> + Maintained packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#price-provider-packages" class="md-nav__link"> + Price Provider Packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#library-packages" class="md-nav__link"> + Library Packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#deprecated-packages" class="md-nav__link"> + Deprecated packages + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#other-seat-related-packages" class="md-nav__link"> + Other SeAT related packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-different-versions" class="md-nav__link"> + Installing different versions + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#blade-package-installation" class="md-nav__link"> + Blade package installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-package-installation" class="md-nav__link"> + Docker package installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#package-list" class="md-nav__link"> + Package list + </a> + + <nav class="md-nav" aria-label="Package list"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#seat-specific-packages" class="md-nav__link"> + SeAT specific packages + </a> + + <nav class="md-nav" aria-label="SeAT specific packages"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#maintained-packages" class="md-nav__link"> + Maintained packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#price-provider-packages" class="md-nav__link"> + Price Provider Packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#library-packages" class="md-nav__link"> + Library Packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#deprecated-packages" class="md-nav__link"> + Deprecated packages + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#other-seat-related-packages" class="md-nav__link"> + Other SeAT related packages + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-different-versions" class="md-nav__link"> + Installing different versions + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="community-packages">Community Packages<a class="headerlink" href="#community-packages" title="Permanent link">¶</a></h1> +<p>Below is a list of packages contributed by the community. These packages normally follow the same installation procedure, however, its best you consult the documentation of the package itself in case there is anything special you need to get it working.</p> +<h2 id="blade-package-installation">Blade package installation<a class="headerlink" href="#blade-package-installation" title="Permanent link">¶</a></h2> +<p>Packages will normally come in the form of a composer package that you need to include in your SeAT install, as well as a Service Provider that you need to bootstrap. So, generically speaking, installing a package will mean that you:</p> +<ul> +<li> +<p>Ensure that you are in the <em>path</em> where you installed. By default, this should be <code>/var/www/seat</code>.</p> +</li> +<li> +<p>Put your application into <em>maintenance mode</em>. This will ensure that no request from the outside will hit your applications logic, and also help you perform an upgrade uninterrupted. Do this with the following commands issued as the webserver user:</p> +</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan down'</span> +</span></code></pre></div> +<ul> +<li><em>Require</em> the package via composer:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'composer require <package vendor>/<package-name>'</span> +</span></code></pre></div> +<ul> +<li><em>Publish</em> the assets with artisan:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan vendor:publish --force --all'</span> +</span></code></pre></div> +<ul> +<li><em>Run migration</em> in order to update database:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan migrate'</span> +</span></code></pre></div> +<ul> +<li><em>Renew config and route cache</em> to benefit of newly added functionalities:</li> +</ul> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan route:cache'</span> +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan config:cache'</span> +</span></code></pre></div></td></tr></table></div> +<ul> +<li><em>Clear SeAT cache</em> after installation:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan seat:cache:clear'</span> +</span></code></pre></div> +<ul> +<li><em>Seed schedule</em> so that new and missing commands get added to your schedule:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan db:seed --class=Seat\\Services\\Database\\Seeders\\PluginDatabaseSeeder'</span> +</span></code></pre></div> +<ul> +<li>Bring your application <em>live</em> and back out of maintenance mode:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan up'</span> +</span></code></pre></div> +<p>Installing packages like this will ensure that none of the core SeAT packages are affected and you should be free to upgrade SeAT core at anytime.</p> +<h2 id="docker-package-installation">Docker package installation<a class="headerlink" href="#docker-package-installation" title="Permanent link">¶</a></h2> +<p>Applying community packages to your SeAT instance with Docker requires you to update your .env file located in <code>/opt/seat-docker</code> and uncommenting SEAT_PLUGINS by removing '#' and entering the package(s) to be installed separating each package with a comma. An example of how to enter packages in your .env would be:</p> +<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1">1</a></span> +<span class="normal"><a href="#__codelineno-8-2">2</a></span> +<span class="normal"><a href="#__codelineno-8-3">3</a></span> +<span class="normal"><a href="#__codelineno-8-4">4</a></span> +<span class="normal"><a href="#__codelineno-8-5">5</a></span> +<span class="normal"><a href="#__codelineno-8-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="c1"># SeAT Plugins</span> +</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2"></a><span class="c1"># This is a list of the all of the third party plugins that you</span> +</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="c1"># would like to install as part of SeAT. Package names should be</span> +</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4"></a><span class="c1"># comma seperated if multiple packages should be installed.</span> +</span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5"></a> +</span><span id="__span-8-6"><a id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="l l-Scalar l-Scalar-Plain">SEAT_PLUGINS=denngarr/seat-fitting,cryptaeve/seat-squad-sync</span> +</span></code></pre></div></td></tr></table></div> +<ul> +<li>Once you have entered the package(s) to be installed run the below command in <code>/opt/seat-docker</code>:</li> +</ul> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Docker (SeAT 4.x)</label><label for="__tabbed_1_2">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_1_3">Docker (SeAT 5.x - using reverse proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>docker-compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>docker-compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +</div> +</div> +<p>After running the above command wait for containers affected to rebuild. If SeAT does not come back up refer to <a href="https://eveseat.github.io/docs/troubleshooting/">Troubleshooting</a> for more insight.</p> +<h2 id="package-list">Package list<a class="headerlink" href="#package-list" title="Permanent link">¶</a></h2> +<h3 id="seat-specific-packages">SeAT specific packages<a class="headerlink" href="#seat-specific-packages" title="Permanent link">¶</a></h3> +<h4 id="maintained-packages">Maintained packages<a class="headerlink" href="#maintained-packages" title="Permanent link">¶</a></h4> +<table> +<thead> +<tr> +<th>Package</th> +<th>Version (SeAT 4.x)</th> +<th>Version (SeAT 5.x)</th> +<th>Installation</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="https://github.com/waw-eve/seat-mumble-register">alliancewaw/seat-mumble-register</a></td> +<td><a href="https://packagist.org/packages/alliancewaw/seat-mumble-register"><img alt="Latest Stable Version" src="https://poser.pugx.org/alliancewaw/seat-mumble-register/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td></td> +<td><a href="https://github.com/waw-eve/seat-mumble-register-backend/blob/main/README.md">Read the docs</a> This plugin provide an extension to generate a certificate for SeAT user and regist it to mumble server</td> +</tr> +<tr> +<td><a href="https://github.com/cryocaustik/seat-hr">cryocaustik/seat-hr</a></td> +<td><a href="https://packagist.org/packages/cryocaustik/seat-hr"><img alt="Latest Stable Version" src="http://poser.pugx.org/cryocaustik/seat-hr/v/stable?style=flat-square" /></a></td> +<td><a href="https://packagist.org/packages/cryocaustik/seat-hr"><img alt="Latest Unstable Version" src="http://poser.pugx.org/cryocaustik/seat-hr/v/unstable" /></a></td> +<td></td> +<td>Human Resources plugin for SeAT with Applications (with customized questions per corporation), Blacklist, Intel, Kick History, Notes, and Sheet</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-eve/seat-squad-sync">cryptaeve/seat-squad-sync</a></td> +<td><a href="https://packagist.org/packages/cryptaeve/seat-squad-sync"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/crypta-tech/seat-squad-sync?filter=4.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/cryptaeve/seat-squad-sync"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptaeve/seat-squad-sync/v/stable?style=flat-square" /></a></td> +<td></td> +<td>Adds the ability to sync squad members into filters of permissions</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-eve/seat-text">cryptaeve/seat-text</a></td> +<td><a href="https://packagist.org/packages/cryptaeve/seat-text"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/crypta-tech/seat-text?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/cryptaeve/seat-text"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptaeve/seat-text/v/stable?style=flat-square" /></a></td> +<td></td> +<td>A module to serve public static ascii, with editing access controlled by seat</td> +</tr> +<tr> +<td><a href="https://github.com/dysath/seat-fitting">denngarr/seat-fitting</a></td> +<td><a href="https://packagist.org/packages/denngarr/seat-fitting"><img alt="Latest Stable Version" src="https://poser.pugx.org/denngarr/seat-fitting/v/stable?style=flat-square" /></a></td> +<td>See cryptatech-seat-fitting</td> +<td></td> +<td>Module to check fittings per character</td> +</tr> +<tr> +<td><a href="https://github.com/dysath/seat-srp">denngarr/seat-srp</a></td> +<td><a href="https://packagist.org/packages/denngarr/seat-srp"><img alt="Latest Stable Version" src="https://poser.pugx.org/denngarr/seat-srp/v/stable?style=flat-square" /></a></td> +<td>See cryptatech/seat-srp</td> +<td></td> +<td>A module for SeAT that tracks SRP requests</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-tech/seat-fitting">cryptatech/seat-fitting</a></td> +<td>See denngarr/seat-fitting</td> +<td><a href="https://packagist.org/packages/cryptatech/seat-fitting"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptatech/seat-fitting/v/stable?style=flat-square" /></a></td> +<td><a href="https://github.com/crypta-tech/seat-fitting/releases/tag/5.0.4">Read the docs</a></td> +<td>Module to check fittings per character</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-tech/seat-srp">cryptatech/seat-srp</a></td> +<td>See denngarr/seat-srp</td> +<td><a href="https://packagist.org/packages/cryptatech/seat-srp"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptatech/seat-srp/v/stable?style=flat-square" /></a></td> +<td></td> +<td>A module for SeAT that tracks SRP requests</td> +</tr> +<tr> +<td><a href="https://github.com/h4zz4rddev/seat-buyback">h4zz4rddev/seat-buyback</a></td> +<td><a href="https://packagist.org/packages/h4zz4rddev/seat-buyback"><img alt="Latest Stable Version" src="https://poser.pugx.org/h4zz4rddev/seat-buyback/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td></td> +<td>A SeAT module for buyback functionality</td> +</tr> +<tr> +<td><a href="https://github.com/humunuk/alliance-structure-mngmt">humunuk/alliance-structure-mngmt</a></td> +<td><a href="https://packagist.org/packages/humunuk/alliance-structure-mngmt"><img alt="Latest Stable Version" src="https://poser.pugx.org/humunuk/alliance-structure-mngmt/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td></td> +<td>Add "Structures" sub-menu to Alliance page and show all the structures that belong to corps in alliance</td> +</tr> +<tr> +<td><a href="https://github.com/BenHUET/eveseat-calendar">kassie/calendar</a></td> +<td><a href="https://packagist.org/packages/kassie/calendar"><img alt="Latest Stable Version" src="https://poser.pugx.org/kassie/calendar/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td><a href="https://github.com/BenHUET/eveseat-calendar/blob/master/README.md">Read the docs</a></td> +<td>Calendar plugin</td> +</tr> +<tr> +<td><a href="https://github.com/pyTonicis/seat-corp-mining-tax">pyTonicis/seat-corp-mining-tax</a></td> +<td><a href="https://packagist.org/packages/pytonicis/seat-corp-mining-tax"><img alt="Latest Stable Version" src="https://poser.pugx.org/pyTonicis/seat-corp-mining-tax/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td><a href="https://github.com/pyTonicis/seat-corp-mining-tax/blob/master/README.md">Read the docs</a></td> +<td>A Modul to manage corporation mining tax</td> +</tr> +<tr> +<td><a href="https://github.com/zenobio93/seat-discord-connector">warlof/seat-discord-connector</a></td> +<td><a href="https://packagist.org/packages/warlof/seat-discord-connector#5.1.1"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/zenobio93/seat-discord-connector?filter=5.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/warlof/seat-discord-connector"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/seat-discord-connector/v/stable?style=flat-square" /></a></td> +<td><a href="https://github.com/zenobio93/seat-discord-connector/blob/6.0.x/README.md">Read the docs</a></td> +<td>A Discord driver to be used with <code>seat-connector</code></td> +</tr> +<tr> +<td><a href="https://github.com/zenobio93/seat-teamspeak">warlof/seat-teamspeak</a></td> +<td><a href="https://packagist.org/packages/warlof/seat-teamspeak#5.1.0"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/zenobio93/seat-teamspeak?filter=5.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/warlof/seat-teamspeak"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/seat-teamspeak/v/stable?style=flat-square" /></a></td> +<td><a href="https://github.com/zenobio93/seat-teamspeak/blob/6.0.x/README.md">Read the docs</a></td> +<td>A Teamspeak driver to be used with <code>seat-connector</code></td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-info">recursivetree/seat-info</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-info"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-info?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-info"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-info?filter=2.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://github.com/recursivetree/seat-info/blob/master/README.md">Read the docs</a></td> +<td>A module that adds a small wiki-like article systems for example as a corporation bulletin.<br/><br/><strong>SeAT 5.x</strong><br/>You need to follow <a href="https://github.com/recursivetree/seat-info#4x---5x">special steps</a> after upgrading to retain your resource files.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-rat">recursivetree/seat-rat</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-rat"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-rat?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-rat"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-rat?filter=2.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>A module to monitor ratting usage in a system, e.g. to prevent dropping the bounty risk modifier in nullsec.</td> +</tr> +<tr> +<td><a href="https://github.com/SimplyUnnamed/seat-user-last-logins">simplyunnamed/seat-user-last-login</a></td> +<td><a href="https://packagist.org/packages/simplyunnamed/seat-user-last-login"><img alt="Latest Stable Version" src="http://poser.pugx.org/simplyunnamed/seat-user-last-login/v?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td></td> +<td>Tool to help find potential AFK's in your corporation.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-billing">recursivetree/seat-billing</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-billing"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-billing?filter=4.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-billing"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-billing?filter=5.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>A billing module to help you with ore and rating taxes.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-pushx-blamer">recursivetree/seat-pushx-blamer</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-pushx-blamer"><img alt="Latest Stable Version" src="https://poser.pugx.org/recursivetree/seat-pushx-blamer/v/stable?style=flat-square" /></a></td> +<td><img alt="SeAT 5.x incompatible" src="https://img.shields.io/badge/SeAT%205.x-not--available--yett-critical?style=flat-square" /></td> +<td></td> +<td>A module to tell you who's guilty of blocking the PushX queue.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-alliance-industry">recursivetree/seat-alliance-industry</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-alliance-industry"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-alliance-industry?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-alliance-industry"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-alliance-industry?filter=2.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>A corporation/alliance/coalition industry order marketplace</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-inventory">recursivetree/seat-inventory</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-inventory"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-inventory?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-inventory"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-inventory?filter=2.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>Inventory manager for contracts and corporation hangars.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-transport">recursivetree/seat-transport</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-transport"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-transport?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-transport"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-transport?filter=2.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>This plugin is a calculator for hauling costs, for example for an alliance JF service.</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-mineral-hauling">recursivetree/seat-mineral-hauling</a></td> +<td><img alt="SeAT 4.x incompatible" src="https://img.shields.io/badge/SeAT%204.x-not--available-critical?style=flat-square" /></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-mineral-hauling"><img alt="Latest Stable Version" src="https://img.shields.io/github/v/tag/recursivetree/seat-mineral-hauling?filter=1.*&style=flat-square&label=stable&color=%2328a3df" /></a></td> +<td></td> +<td>Calculates the most efficient way to move minerals in refined ore form.</td> +</tr> +</tbody> +</table> +<h4 id="price-provider-packages">Price Provider Packages<a class="headerlink" href="#price-provider-packages" title="Permanent link">¶</a></h4> +<p>These packages implement different prices sources for the <a href="https://github.com/recursivetree/seat-prices-core">recursivetree/seat-prices-core</a> price provider system. If you are on SeAT 5 and use a plugin that uses <a href="https://github.com/recursivetree/seat-prices-core">recursivetree/seat-prices-core</a> internally, you can install and use any of the following price provider packages.</p> +<table> +<thead> +<tr> +<th>Price Provider</th> +<th>Version</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="https://github.com/recursivetree/seat-prices-evepraisal">recursivetree/seat-prices-evepraisal</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-prices-evepraisal"><img alt="Latest Stable Version" src="https://poser.pugx.org/recursivetree/seat-prices-evepraisal/v/stable?style=flat-square" /></a></td> +<td>Prices from evepraisal clones</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-prices-evemarketer">recursivetree/seat-prices-evemarketer</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-prices-evemarketer"><img alt="Latest Stable Version" src="https://poser.pugx.org/recursivetree/seat-prices-evemarketer/v/stable?style=flat-square" /></a></td> +<td>Prices from evemarketer.com</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-tech/seat-prices-janice">cryptatech/seat-prices-janice</a></td> +<td><a href="https://packagist.org/packages/cryptatech/seat-prices-janice"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptatech/seat-prices-janice/v/stable?style=flat-square" /></a></td> +<td>Prices from https://janice.e-351.com/</td> +</tr> +<tr> +<td><a href="https://github.com/crypta-tech/seat-prices-fuzzwork">cryptatech/seat-prices-fuzzwork</a></td> +<td><a href="https://packagist.org/packages/cryptatech/seat-prices-fuzzwork"><img alt="Latest Stable Version" src="https://poser.pugx.org/cryptatech/seat-prices-fuzzwork/v/stable?style=flat-square" /></a></td> +<td>Prices from https://market.fuzzwork.co.uk/</td> +</tr> +</tbody> +</table> +<h4 id="library-packages">Library Packages<a class="headerlink" href="#library-packages" title="Permanent link">¶</a></h4> +<p>These packages provide utilities for other packages and usually don't need to be installed manually.</p> +<table> +<thead> +<tr> +<th>Package</th> +<th>Version</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="https://github.com/zenobio93/seat-connector">warlof/seat-connector</a></td> +<td><a href="https://packagist.org/packages/warlof/seat-connector"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/seat-connector/v/stable?style=flat-square" /></a></td> +<td>A generic connector module that handles invites and roles management with any registered platform</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-treelib">recursivetree/seat-treelib</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-treelib"><img alt="Latest Stable Version" src="https://poser.pugx.org/recursivetree/seat-treelib/v/stable?style=flat-square" /></a></td> +<td>A module that contains shared code for all <code>recursivetree/*</code> plugins</td> +</tr> +<tr> +<td><a href="https://github.com/recursivetree/seat-prices-core">recursivetree/seat-prices-core</a></td> +<td><a href="https://packagist.org/packages/recursivetree/seat-prices-core"><img alt="Latest Stable Version" src="https://poser.pugx.org/recursivetree/seat-prices-core/v/stable?style=flat-square" /></a></td> +<td>This plugin provides a price provider system for all plugins dealing with prices. Seat 5.x only.</td> +</tr> +</tbody> +</table> +<h4 id="deprecated-packages">Deprecated packages<a class="headerlink" href="#deprecated-packages" title="Permanent link">¶</a></h4> +<table> +<thead> +<tr> +<th>Package</th> +<th>Version</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td><a href="https://github.com/eve-scout/eveseat-oauth2-server">eve-scout/eveseat-oauth2-server</a></td> +<td><a href="https://packagist.org/packages/eve-scout/eveseat-oauth2-server"><img alt="Latest Stable Version" src="https://poser.pugx.org/eve-scout/eveseat-oauth2-server/v/stable?style=flat-square" /></a></td> +<td>This EVE SeAT package enables an OAuth2 server for Single sign-on.</td> +</tr> +<tr> +<td><a href="https://github.com/flyingferret/seat-whtools">flyingferret/seat-whtools</a></td> +<td><a href="https://packagist.org/packages/flyingferret/seat-whtools"><img alt="Latest Stable Version" src="https://poser.pugx.org/flyingferret/seat-whtools/v/stable?style=flat-square" /></a></td> +<td>A small collection of tools for helping with Wh-Life corporation management, including calculating doctrine stocking levels (based on contracts and <code>denngarr/seat-fitting</code> plugin), a blue loot tax calculator, and a skill base certificate management. Currently very much a work in progress.</td> +</tr> +<tr> +<td><a href="https://github.com/freedenizen/eveseat-notes">freedenizen/eveseat-notes</a></td> +<td><a href="https://packagist.org/packages/freedenizen/eveseat-notes"><img alt="Latest Stable Version" src="https://poser.pugx.org/freedenizen/eveseat-notes/v/stable?style=flat-square" /></a></td> +<td>A notes addon for seat 1.x</td> +</tr> +<tr> +<td><a href="https://github.com/herpaderpaldent/seat-discourse">herpaderpaldent/seat-discourse</a></td> +<td><a href="https://packagist.org/packages/herpaderpaldent/seat-discourse"><img alt="Latest Stable Version" src="https://poser.pugx.org/herpaderpaldent/seat-discourse/v/stable?style=flat-square" /></a></td> +<td>SeAT Discourse enables SeAT to act as SSO provider for your Discourse-Forum instance. Groups and Categories do respect roles of members. With this package you can create hidden sections for your member and public sections for potential recruits to which members get automatically access to. <strong>Important:</strong> Check installation instructions on Github.</td> +</tr> +<tr> +<td><a href="https://github.com/herpaderpaldent/seat-groups">herpaderpaldent/seat-groups</a></td> +<td><a href="https://packagist.org/packages/herpaderpaldent/seat-groups"><img alt="Latest Stable Version" src="https://poser.pugx.org/herpaderpaldent/seat-groups/v/stable?style=flat-square" /></a></td> +<td>Module to create auto, open and managed role groups to which user can be automatically be assigned, user can opt-in or user can apply to.</td> +</tr> +<tr> +<td><a href="https://github.com/herpaderpaldent/seat-notifications">herpaderpaldent/seat-notifications</a></td> +<td><a href="https://packagist.org/packages/herpaderpaldent/seat-notifications"><img alt="Latest Stable Version" src="https://poser.pugx.org/herpaderpaldent/seat-notifications/v/stable?style=flat-square" /></a></td> +<td>This is a fully functional notification package for discord and slack notifications. This package is very easily extendable by other packages and should replace core notifications at some point. Currently seat-groups provide many useful notifications. Notifications are send out by slack or discord bot and uses twice a full oAuth2 authentication of the user.</td> +</tr> +<tr> +<td><a href="https://github.com/warlof/seat-migrator">warlof/seat-migrator</a></td> +<td><a href="https://packagist.org/packages/warlof/seat-migrator"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/seat-migrator/v/stable?style=flat-square" /></a></td> +<td>A migration script between SeAT 2 and SeAT 3</td> +</tr> +<tr> +<td><a href="https://github.com/warlof/seat-slack-sso">warlof/seat-slack-sso</a></td> +<td><a href="https://packagist.org/packages/warlof/seat-slack-sso"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/seat-slack-sso/v/stable?style=flat-square" /></a></td> +<td>Slack SSO integration for seat 2.x</td> +</tr> +<tr> +<td><a href="https://github.com/warlof/eveseat-mining-ledger">warlof/eveseat-mining-ledger</a></td> +<td><a href="https://github.com/warlof/eveseat-mining-ledger"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/eveseat-mining-ledger/v/stable?style=flat-square" /></a></td> +<td>ESI capability that provides a mining ledger to SeAT 2.x</td> +</tr> +<tr> +<td><a href="https://github.com/warlof/slackbot">warlof/slackbot</a></td> +<td><a href="https://packagist.org/packages/warlof/slackbot"><img alt="Latest Stable Version" src="https://poser.pugx.org/warlof/slackbot/v/stable?style=flat-square" /></a></td> +<td>A slack bot that handles invites and kicks based on an api key</td> +</tr> +</tbody> +</table> +<h3 id="other-seat-related-packages">Other SeAT related packages<a class="headerlink" href="#other-seat-related-packages" title="Permanent link">¶</a></h3> +<ul> +<li><a href="https://github.com/nullsecurity-australia/helm-charts/tree/main/charts/eveseat">nullsecurity-australia/helm-charts</a> +Allows to install EVE SeAT on a Kubernetes Cluster</li> +</ul> +<div class="admonition danger"> +<p class="admonition-title">Danger</p> +<p>Packages after this message are provided as history and idea database. They will not work on the stable version since they are non longer maintained by their author or have been integrated in core.</p> +</div> +<ul> +<li><a href="https://github.com/Betriebsrat/err-seat">Betriebsrat/err-seat</a><br /> +Seat Api Interface for errbot</li> +<li><a href="https://github.com/eve-scout/passport-eveseat">eve-scout/passport-eveseat</a><br /> +Passport strategy for authenticating with EVE SeAT using the OAuth 2.0 API.</li> +<li><a href="https://github.com/eve-scout/nodebb-plugin-sso-eveseat">eve-scout/nodebb-plugin-sso-eveseat</a><br /> +This NodeBB plugin allows users login/register via their EVE SeAT account.</li> +</ul> +<h3 id="installing-different-versions">Installing different versions<a class="headerlink" href="#installing-different-versions" title="Permanent link">¶</a></h3> +<p>Sometimes it can be useful to install a version different from the latest version, for example if you want to install an older version of a plugin or if you want to test a bugfix. The easiest way to find all available versions is to go to the packagist site of the plugin by clicking on the version in the available plugins list. On packagist, if you scroll down, to the right you will find a list of all available versions.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:4"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Blade</label><label for="__tabbed_2_2">Docker (SeAT 4.x)</label><label for="__tabbed_2_3">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_2_4">Docker (SeAT 5.x - using proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>Follow the normal installation steps, but change the <code>composer require</code> command to include the package according to the following example:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'composer require <package vendor>/<package-name>:<version-name>'</span> +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<p>In your <code>.env</code> file, add the version to the package like this:</p> +<p><div class="language-text highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2 +</span></code></pre></div> +Next, restart the stack as usual.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1">1</a></span> +<span class="normal"><a href="#__codelineno-14-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1"></a>docker-compose<span class="w"> </span>down +</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<p>In your <code>.env</code> file, add the version to the package like this:</p> +<p><div class="language-text highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2 +</span></code></pre></div> +Next, restart the stack as usual.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-16-1">1</a></span> +<span class="normal"><a href="#__codelineno-16-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1"></a>docker-compose<span class="w"> </span>down +</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2"></a>docker-compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<p>In your <code>.env</code> file, add the version to the package like this:</p> +<p><div class="language-text highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2 +</span></code></pre></div> +Next, restart the stack as usual.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-18-1">1</a></span> +<span class="normal"><a href="#__codelineno-18-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1"></a>docker-compose<span class="w"> </span>down +</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2"></a>docker-compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "..", "features": ["content.code.copy"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/configuration_overload/index.html b/configuration/configuration_overload/index.html new file mode 100644 index 00000000..1bbe08cf --- /dev/null +++ b/configuration/configuration_overload/index.html @@ -0,0 +1,1403 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/configuration_overload/"> + + + <link rel="prev" href="../eve_administrative_contact/"> + + + <link rel="next" href="../sde_overload/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Configuration Overload - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#quick-n-dirty-package-summary" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Configuration Overload + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Configuration Overload + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Configuration Overload + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#quick-n-dirty-package-summary" class="md-nav__link"> + Quick-n-dirty-package summary + </a> + +</li> + + <li class="md-nav__item"> + <a href="#overriding-configuration" class="md-nav__link"> + Overriding configuration + </a> + +</li> + + <li class="md-nav__item"> + <a href="#an-example-changing-eseye_loglevel" class="md-nav__link"> + An example, changing eseye_loglevel + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#quick-n-dirty-package-summary" class="md-nav__link"> + Quick-n-dirty-package summary + </a> + +</li> + + <li class="md-nav__item"> + <a href="#overriding-configuration" class="md-nav__link"> + Overriding configuration + </a> + +</li> + + <li class="md-nav__item"> + <a href="#an-example-changing-eseye_loglevel" class="md-nav__link"> + An example, changing eseye_loglevel + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + + <h1>Configuration Overload</h1> + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<p>This page aims to give a brief overview of how configuration is handled in SeAT and its packages. +To give some perspective, we have to have a quick look at how packages are built and bootstrapped.</p> +<h3 id="quick-n-dirty-package-summary">Quick-n-dirty-package summary<a class="headerlink" href="#quick-n-dirty-package-summary" title="Permanent link">¶</a></h3> +<p>All of SeAT's core internals are built as packages. This means, every package has a service provider. +All a service provider really is, is a class with 2 methods ie: <code>handle()</code> and <code>register()</code>. +When a service provider is bootstrapped into the application, these 2 methods are called at some stage.</p> +<p>It is in these methods that we tell the Laravel framework more about our package. +Amongst many things that we can tell it, one of them is configuration related. +All we really telling the application is where the configuration file is, and under which namespace does it live. +Another important fact is that SeAT package configurations are added with the <code>mergeConfigFrom()</code> method. +This means, you can override the defaults in your installation without worrying about breaking the package itself.</p> +<h3 id="overriding-configuration">Overriding configuration<a class="headerlink" href="#overriding-configuration" title="Permanent link">¶</a></h3> +<p>Lets take a look at a sample package configuration file: The <a href="https://github.com/eveseat/eveapi/blob/master/src/Config/eveapi.config.php">eveseat/eveapi package</a> for example. +At the time of this writing, it has 5 configuration options. The first being a <code>version</code>, the last being <code>eseye_loglevel</code>. +When this package is installed, this configuration file will live somewhere deep inside your <code>vendor</code> folder. +Changing the value there is not impossible, but it will be lost with the next package upgrade. +The better method will be to override the change locally, inside you <code>config/</code> folder <a href="https://github.com/eveseat/seat/tree/master/config">here</a>.</p> +<h3 id="an-example-changing-eseye_loglevel">An example, changing <code>eseye_loglevel</code><a class="headerlink" href="#an-example-changing-eseye_loglevel" title="Permanent link">¶</a></h3> +<p>To start, create the file <code>eveapi.config.php</code> inside the <code>config</code> folder. +Next, we add the contents in the file to return an array, specifying the <code>eseye_loglevel</code> key and its new value. +The file would look something like this:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="cp"><?php</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="c1">// File: config/eveapi.config.php</span> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a> +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="k">return</span> <span class="p">[</span> +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a> <span class="s1">'eseye_loglevel'</span> <span class="o">=></span> <span class="s1">'debug'</span><span class="p">,</span> +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="p">];</span> +</span></code></pre></div></td></tr></table></div> +<p>That's it. The configuration should now have been overridden.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/email_setup/gmail/index.html b/configuration/email_setup/gmail/index.html new file mode 100644 index 00000000..9179f52c --- /dev/null +++ b/configuration/email_setup/gmail/index.html @@ -0,0 +1,1384 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/email_setup/gmail/"> + + + <link rel="prev" href="../mailgun/"> + + + <link rel="next" href="../../env_file_reference/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>GMail - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#email-setup-using-gmail" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + GMail + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" checked> + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="true"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + GMail + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + GMail + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-config" class="md-nav__link"> + The config + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-config" class="md-nav__link"> + The config + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="email-setup-using-gmail">Email Setup - Using GMail<a class="headerlink" href="#email-setup-using-gmail" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>SeAT requires email to be setup to allow for things like notifications to be sent. +This guide will attempt to describe how to go about setting up your email using <a href="https://www.gmail.com">GMail</a> as an SMTP.</p> +<h2 id="the-config">The config<a class="headerlink" href="#the-config" title="Permanent link">¶</a></h2> +<p>As with anything Laravel, the config for your email setup will live in your installs <code>.env</code> file. To use GMail as an SMTP service, set the <code>MAIL_DRIVER</code> option in your <code>.env</code> configuration file to <code>smtp</code>. Next, specify the SMTP details:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span> +<span class="normal"><a href="#__codelineno-0-8">8</a></span> +<span class="normal"><a href="#__codelineno-0-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>// File: .env +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a>MAIL_DRIVER=smtp +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a>MAIL_HOST=smtp.gmail.com +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a>MAIL_PORT=587 +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a>MAIL_USERNAME=username@gmail.com +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a>MAIL_PASSWORD=gmailpassword +</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a>MAIL_ENCRYPTION=tls +</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a>MAIL_FROM_ADDRESS=username@gmail.com +</span></code></pre></div></td></tr></table></div> +<p>Done! To test, you can add some mail notification using the <code>Integrations</code> and <code>Notification groups</code>.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/email_setup/mailgun/index.html b/configuration/email_setup/mailgun/index.html new file mode 100644 index 00000000..d430ab0c --- /dev/null +++ b/configuration/email_setup/mailgun/index.html @@ -0,0 +1,1382 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/email_setup/mailgun/"> + + + <link rel="prev" href="../../esi_configuration/"> + + + <link rel="next" href="../gmail/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Mailgun - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#email-setup-using-mailgun" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Mailgun + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" checked> + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="true"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Mailgun + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Mailgun + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-config" class="md-nav__link"> + The config + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-config" class="md-nav__link"> + The config + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="email-setup-using-mailgun">Email Setup - Using Mailgun<a class="headerlink" href="#email-setup-using-mailgun" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>SeAT requires email to be setup to allow for things like notifications to be sent. +This guide will attempt to describe how to go about setting up your email using the <a href="https://www.mailgun.com">Mailgun</a> service. +Though Mailgun is a commercial service, you get to send 10k emails for free per month. +It also provides epic stats for you to track emails with etc.</p> +<h2 id="the-config">The config<a class="headerlink" href="#the-config" title="Permanent link">¶</a></h2> +<p>As with anything Laravel, the config for mailgun will live in your installs <code>.env</code> file. +To use the Mailgun driver, first set the <code>MAIL_DRIVER</code> option in your <code>.env</code> configuration file to <code>mailgun</code>. +Next, we will add two options to specify details about our mailgun account.</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>// File: .env +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a>MAILGUN_DOMAIN=whateveritis +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a>MAILGUN_SECRET=anotherthing +</span></code></pre></div></td></tr></table></div> +<p>To find out the values you need to populate, login to your mailgun account and browse to the <a href="https://mailgun.com/app/domains">domains</a> section. +Pick the applicable domain name. The screen you will see should looks something similar to this:</p> +<p><img alt="Mailgun Domain" src="https://i.imgur.com/11deaFQ.png" /></p> +<p>The big title (<code>sandbox1XXXXXXX</code> in my case) is the domain name, and the field titled <code>API Key</code> is the <code>MAILGUN_SECRET</code>.</p> +<p>Done! To test, you can add some mail notification using the <code>Integrations</code> and <code>Notification groups</code>.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/env_file_reference/index.html b/configuration/env_file_reference/index.html new file mode 100644 index 00000000..c2ad25cf --- /dev/null +++ b/configuration/env_file_reference/index.html @@ -0,0 +1,1452 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/env_file_reference/"> + + + <link rel="prev" href="../email_setup/gmail/"> + + + <link rel="next" href="../eve_administrative_contact/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Env File Reference - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#env-reference" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Env File Reference + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Env File Reference + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Env File Reference + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#configuration-value-reference" class="md-nav__link"> + Configuration Value Reference + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#configuration-value-reference" class="md-nav__link"> + Configuration Value Reference + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="env-reference">Env Reference<a class="headerlink" href="#env-reference" title="Permanent link">¶</a></h1> +<p>In both the case of a Docker installation as well as a host based installation (manual or via SeAT tool), SeAT has some configuration values that can be set via an <code>.env</code> file. Depending on your installation type, this file will be in either <code>/opt/seat-docker/.env</code> or in <code>/var/www/seat/.env</code></p> +<h2 id="configuration-value-reference">Configuration Value Reference<a class="headerlink" href="#configuration-value-reference" title="Permanent link">¶</a></h2> +<table> +<thead> +<tr> +<th>Parameter Name</th> +<th>Default value</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>APP_URL</td> +<td>http://seat.local</td> +<td>This is the public address where SeAT instance is reachable. That should match with the <code>EVE_CALLBACK_URL</code> without <code>/auth/eve/callback</code> suffix</td> +</tr> +<tr> +<td>DB_HOST</td> +<td>127.0.0.1</td> +<td>This is the IP or domain from your SQL Server.</td> +</tr> +<tr> +<td>DB_PORT</td> +<td>3306</td> +<td>This is the port used by your SQL Server to receive query.</td> +</tr> +<tr> +<td>DB_DATABASE</td> +<td>seat</td> +<td>This is the name for your SeAT database.</td> +</tr> +<tr> +<td>DB_USERNAME</td> +<td>seat</td> +<td>This is the user which is granted to the SeAT database from SeAT server.</td> +</tr> +<tr> +<td>DB_PASSWORD</td> +<td>secret</td> +<td>This is the user password</td> +</tr> +<tr> +<td>MAIL_DRIVER</td> +<td>smtp</td> +<td>This is the driver used to send mail. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_HOST</td> +<td>smtp.mailtrap.io</td> +<td>This is driver mail hostname. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_PORT</td> +<td>2525</td> +<td>This is the driver mail port. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_USERNAME</td> +<td>null</td> +<td>This is the driver mail username. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_PASSWORD</td> +<td>null</td> +<td>This is the driver mail password. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_ENCRYPTION</td> +<td>null</td> +<td>This is the driver mail encryption. It will be covered in a dedicated article.</td> +</tr> +<tr> +<td>MAIL_FROM_ADDRESS</td> +<td>noreply@localhost.local</td> +<td>This is the mail address which the user will chown when he will receive mail from SeAT.</td> +</tr> +<tr> +<td>MAIL_FROM_NAME</td> +<td>SeAT Administrator</td> +<td>This is the name which the user will chown when he will receive mail from SeAT.</td> +</tr> +<tr> +<td>EVE_CLIENT_ID</td> +<td>null</td> +<td>This is the EVE Application Client ID you'll get when you created an application over https://developers.eveonline.com</td> +</tr> +<tr> +<td>EVE_CLIENT_SECRET</td> +<td>null</td> +<td>This is the EVE Application Client Secret you'll get when you created an application over https://developers.eveonline.com</td> +</tr> +<tr> +<td>EVE_CALLBACK_URL</td> +<td>https://seat.local/auth/eve/callback</td> +<td>This is the EVE Application Callback URL you filled when you created an application over https://developers.eveonline.com. You should have only to fix <code>seat.local</code></td> +</tr> +<tr> +<td>QUEUE_BALANCING_MODE</td> +<td>false</td> +<td>Determine the workers balancing mode used by the Jobs Manager. Value can be <code>false</code>, <code>auto</code> or <code>simple</code>. See <a href="https://laravel.com/docs/5.8/horizon#balance-options">official Laravel documentation</a> for more details</td> +</tr> +<tr> +<td>QUEUE_WORKERS</td> +<td>4</td> +<td>Determine the amount of worker which have to be spawn to process jobs over all queues. In <code>auto</code> and <code>simple</code> balancing, this value cannot be lower than <code>4</code> as it's correspond to the available queues.</td> +</tr> +</tbody> +</table> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/esi_configuration/index.html b/configuration/esi_configuration/index.html new file mode 100644 index 00000000..90ece23b --- /dev/null +++ b/configuration/esi_configuration/index.html @@ -0,0 +1,1471 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/esi_configuration/"> + + + <link rel="prev" href="../../upgrading/from_seat_1_0/"> + + + <link rel="next" href="../email_setup/mailgun/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>ESI Configuration - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#configuring-eve-online-esi-scopes" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + ESI Configuration + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + ESI Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + ESI Configuration + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-summary" class="md-nav__link"> + Configuration Summary + </a> + +</li> + + <li class="md-nav__item"> + <a href="#register-your-application" class="md-nav__link"> + Register your application + </a> + +</li> + + <li class="md-nav__item"> + <a href="#set-config-parameters-in-env-file" class="md-nav__link"> + Set config parameters in .env file + </a> + + <nav class="md-nav" aria-label="Set config parameters in .env file"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#notes-for-docker-users" class="md-nav__link"> + Notes for Docker Users + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-summary" class="md-nav__link"> + Configuration Summary + </a> + +</li> + + <li class="md-nav__item"> + <a href="#register-your-application" class="md-nav__link"> + Register your application + </a> + +</li> + + <li class="md-nav__item"> + <a href="#set-config-parameters-in-env-file" class="md-nav__link"> + Set config parameters in .env file + </a> + + <nav class="md-nav" aria-label="Set config parameters in .env file"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#notes-for-docker-users" class="md-nav__link"> + Notes for Docker Users + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="configuring-eve-online-esi-scopes">Configuring Eve Online ESI-Scopes<a class="headerlink" href="#configuring-eve-online-esi-scopes" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>For normal operations within SeAT, authentication is provided by EVE Onlines' SSO service and API access with ESI and tokens supplied via SSO. Technical details behind the SSO implementation can be found <a href="https://eveonline-third-party-documentation.readthedocs.io/en/latest/sso/index.html">here</a>.</p> +<p>Authenticating users using SSO effectively means that users may authenticate to SeAT using their existing EVE Online credentials. SeAT <em>does not</em> have access to the credentials itself as that is handled entirely by CCP. Only once authentication is successful from an EVE Online perspective does a user get asked if they want to allow your SeAT installation to have access with the configured set of scopes. Once the user agrees to these scopes, the users browser is redirect back to SeAT and will be logged in.</p> +<p>If you have not configured this yet, the login page will present you with a warning about it:</p> +<p><img alt="initial login screen" src="https://i.imgur.com/B6qhwO8.png" /></p> +<h2 id="configuration-summary">Configuration Summary<a class="headerlink" href="#configuration-summary" title="Permanent link">¶</a></h2> +<p>A bit of setup work is needed in order to have your SeAT setup ready for SSO integration and ESI usage. The gist of it is:</p> +<ul> +<li><a href="#register-your-application">Step I</a>: Register your application on the <a href="https://developers.eveonline.com/applications">EVE Online Developers portal</a> for both Authentication and API Access.</li> +<li><a href="#set-config-parameters-in-env-file">Step II</a>: Configure your <code>EVE_CLIENT_ID</code>, <code>EVE_CLIENT_SECRET</code> and <code>EVE_CALLBACK_URL</code> in the <code>.env</code> configuration <a href="https://github.com/eveseat/seat/blob/b067bd3e742a79c35b5fa44ff77380a9187a27cf/.env.example#L21-L23">file</a></li> +</ul> +<h2 id="register-your-application">Register your application<a class="headerlink" href="#register-your-application" title="Permanent link">¶</a></h2> +<p>Browse to the <a href="https://developers.eveonline.com/applications">EVE Online Developers portal</a> and create a new Application.</p> +<p><img alt="new sso application" src="https://i.imgur.com/QcedExJ.png" /></p> +<p>Give your application a <strong>meaningful</strong> <em>Name</em> and a <em>Description</em>. Users will see this name when they review the access Third Party applications have to their account so keep that in mind when registering your application.</p> +<p><img alt="new sso application" src="https://i.imgur.com/zqhQ69H.png" /></p> +<p>Next, set the connection type to <em>Authentication & API Access</em> (1), select the <em>ESI Scopes</em> you want (probably all of them) (2) and specify the <em>Callback URL</em> (3)</p> +<p>To select <em>ESI Scopes</em> you can search for them in <em>Available Scopes</em> (2) and select the desired scope. The selected scope then will moved to (3).</p> +<p><img alt="new sso application" src="https://i.imgur.com/70vLD6V.png" /></p> +<div class="admonition note"> +<p class="admonition-title">Note on the Callback URL</p> +<p>The Callback URL where the user should be redirected to once authentication was successful. In other words, once they have completed authentication using their EVE Online credentials, they need to be redirected back to your SeAT instance. In the example above, we can see it is <code>https://seat.local/auth/eve/callback</code>. You should replace the <code>seat.local</code> part with <em>your</em> domain!</p> +<p>For example, assuming you are hosting SeAT at <code>https://this.is.seat/</code>, then the Callback URL will be <code>https://this.is.seat/auth/eve/callback</code>. If you have SeAT in a sub folder on your web server, remember to add the folder name before <code>/auth/eve/callback</code>.</p> +</div> +<p>With the new application created, you will now have the <code>EVE_CLIENT_ID</code>, <code>EVE_CLIENT_SECRET</code> that you need to configure in SeAT itself. Take note of these values.</p> +<p><img alt="new sso application" src="https://i.imgur.com/bjEip1X.png" /></p> +<h2 id="set-config-parameters-in-env-file">Set config parameters in <code>.env</code> file<a class="headerlink" href="#set-config-parameters-in-env-file" title="Permanent link">¶</a></h2> +<p>We are almost done. The next thing to do is to add the configuration parameters to our SeAT installs <code>.env</code> file. Browse to your SeAT installation directory and edit the <code>.env</code> file (note this is a hidden file and wont show up when you just type <code>ls</code>).</p> +<p>Look for the following section of the file and populate the values with those you got when you created an application on the developers site:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>EVE_CLIENT_ID=null +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>EVE_CLIENT_SECRET=null +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a>EVE_CALLBACK_URL=http://seat.test/auth/eve/callback +</span></code></pre></div></td></tr></table></div> +<h3 id="notes-for-docker-users">Notes for Docker Users<a class="headerlink" href="#notes-for-docker-users" title="Permanent link">¶</a></h3> +<p>Your <code>.env</code> file is located in <code>/opt/seat-docker</code>. Rebuild your app after setting the ESI Details in it using:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Docker (SeAT 4.x)</label><label for="__tabbed_1_2">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_1_3">Docker (SeAT 5.x - using proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>docker-compose<span class="w"> </span>down +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>down +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span> +<span class="normal"><a href="#__codelineno-3-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>down +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/eve_administrative_contact/index.html b/configuration/eve_administrative_contact/index.html new file mode 100644 index 00000000..9fe94f29 --- /dev/null +++ b/configuration/eve_administrative_contact/index.html @@ -0,0 +1,1427 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/eve_administrative_contact/"> + + + <link rel="prev" href="../env_file_reference/"> + + + <link rel="next" href="../configuration_overload/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>EVE Administrative Contact - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#eve-api-administrative-contact" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + EVE Administrative Contact + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + EVE Administrative Contact + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + EVE Administrative Contact + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#what" class="md-nav__link"> + What + </a> + +</li> + + <li class="md-nav__item"> + <a href="#why" class="md-nav__link"> + Why + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how" class="md-nav__link"> + How + </a> + + <nav class="md-nav" aria-label="How"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#web-interface" class="md-nav__link"> + Web interface + </a> + +</li> + + <li class="md-nav__item"> + <a href="#command-line" class="md-nav__link"> + Command line + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#what" class="md-nav__link"> + What + </a> + +</li> + + <li class="md-nav__item"> + <a href="#why" class="md-nav__link"> + Why + </a> + +</li> + + <li class="md-nav__item"> + <a href="#how" class="md-nav__link"> + How + </a> + + <nav class="md-nav" aria-label="How"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#web-interface" class="md-nav__link"> + Web interface + </a> + +</li> + + <li class="md-nav__item"> + <a href="#command-line" class="md-nav__link"> + Command line + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="eve-api-administrative-contact">Eve API Administrative Contact<a class="headerlink" href="#eve-api-administrative-contact" title="Permanent link">¶</a></h1> +<h2 id="what">What<a class="headerlink" href="#what" title="Permanent link">¶</a></h2> +<p>Requests to the EVE API need to have an administrative contact email set before SeAT will queue jobs to process. CCP made the request in this <a href="https://github.com/eveseat/seat/issues/77">Github issue</a>. To address this, the email address is added to the User-Agent string that is used when making EVE API requests as can be seen <a href="https://github.com/eveseat/eveapi/blob/master/src/Helpers/PhealSetup.php#L77">eveseat/eveapi:Helpers/PhealSetup#L77</a>.</p> +<h2 id="why">Why<a class="headerlink" href="#why" title="Permanent link">¶</a></h2> +<p>The error <code>Failed to queue due to default config</code> is generated by <a href="https://github.com/eveseat/eveapi/blob/master/src/Traits/JobManager.php#L47-L56">eveseat/eveapi:Traits/JobManager#L47-L56</a> check. In order for this check to pass, you need to configure the administrative email address in the SeAT configuration.</p> +<h2 id="how">How<a class="headerlink" href="#how" title="Permanent link">¶</a></h2> +<p>Adding the email address can be done in two ways. Wither via the command line or via the Web interface.</p> +<h3 id="web-interface">Web interface<a class="headerlink" href="#web-interface" title="Permanent link">¶</a></h3> +<p>The other method to change the admin email is via the web interface. You need to be logged in with a user that has the <code>superuser</code> role. Typically, if the email address is not set, you may notice the following warning on the home page:</p> +<p><img alt="seat default email warning" src="https://i.imgur.com/5NyqkX8.png" /></p> +<p>To configure it, browse to <em>Configuration</em> -> <em>SeAT Settings</em> from the side menu, and set the email in the <em>Administrator Email</em> field.</p> +<p><img alt="seat webui email config" src="https://i.imgur.com/F9MKvsw.png" /></p> +<h3 id="command-line">Command line<a class="headerlink" href="#command-line" title="Permanent link">¶</a></h3> +<p>The command <code>php artisan seat:admin:email</code> will prompt you to add a valid email address for the administrative contact:</p> +<p>Example:</p> +<p><img alt="seat admin email" src="https://i.imgur.com/G1SZuZR.png" /></p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/configuration/sde_overload/index.html b/configuration/sde_overload/index.html new file mode 100644 index 00000000..9e3c56cb --- /dev/null +++ b/configuration/sde_overload/index.html @@ -0,0 +1,1351 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/configuration/sde_overload/"> + + + <link rel="prev" href="../configuration_overload/"> + + + <link rel="next" href="../../admin_guides/admin_login/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>SDE Overload - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#overriding-the-resources-json" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + SDE Overload + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" checked> + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="true"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + SDE Overload + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + SDE Overload + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#overriding-the-resources-json" class="md-nav__link"> + Overriding the resources json + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#overriding-the-resources-json" class="md-nav__link"> + Overriding the resources json + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + + <h1>SDE Overload</h1> + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<p>SeAT sources information about the SDE from a json file hosted <a href="https://github.com/eveseat/resources/blob/master/sde.json">here</a>. It may happen that the SDE gets updated but the the json resource has not yet been updated. For this reason, its possible to specify the version to get based on what is available on <a href="https://www.fuzzwork.co.uk/dump/">www.fuzzwork.co.uk</a>.</p> +<h3 id="overriding-the-resources-json">Overriding the resources json<a class="headerlink" href="#overriding-the-resources-json" title="Permanent link">¶</a></h3> +<p>Check the version of SDE dumps available on <a href="https://www.fuzzwork.co.uk/dump/">www.fuzzwork.co.uk</a>. At the time of this writing, <code>frostline-1.0-116241</code> was the latest. Once you have the version string ready, open the <code>.env</code> configuration file and add a key as follows:</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>SDE_VERSION=frostline-1.0-116241 +</span></code></pre></div> +<p>When running the SDE updater, specify the <code>--local</code> parameter to source the version string from the configuration file:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>eve:update:sde<span class="w"> </span>--local +</span></code></pre></div> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>By default, SeAT automatically updates the SDE <a href="https://github.com/eveseat/services/blob/master/src/database/seeds/ScheduleSeeder.php#L50">every month</a>. You may want to login as an administrator and remove the schedule to update it monthly if you have overridden the default.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/css/extra_footer.css b/css/extra_footer.css new file mode 100644 index 00000000..37900e49 --- /dev/null +++ b/css/extra_footer.css @@ -0,0 +1,3 @@ +.md-footer-nav { + display: none; +} diff --git a/css/extra_typo.css b/css/extra_typo.css new file mode 100644 index 00000000..aae4f6d0 --- /dev/null +++ b/css/extra_typo.css @@ -0,0 +1,33 @@ +.md-typeset img, .md-typeset svg { + display: block; + margin-left: auto; + margin-right: auto; +} + +.md-typeset__table { + display: table; + width: 100%; +} + +.md-typeset table:not([class]) { + display: table; +} + +.md-typeset table:not([class]) td { + vertical-align: middle; +} + +[data-md-color-primary="grey"] .md-typeset a { + color: #ffa724; +} + +div.md-content li, div.md-content p { + text-align: justify; +} + +.md-typeset__scrollwrap { + text-align: center; +} +.md-typeset ul { + list-style-type: square; +} diff --git a/developer_guides/core_package_breakdown/index.html b/developer_guides/core_package_breakdown/index.html new file mode 100644 index 00000000..ebf41e6f --- /dev/null +++ b/developer_guides/core_package_breakdown/index.html @@ -0,0 +1,1467 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/core_package_breakdown/"> + + + <link rel="prev" href="../developer_installation/"> + + + <link rel="next" href="../package_development/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Core Package Breakdown - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#developers-guides-core-package-breakdown" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Core Package Breakdown + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Core Package Breakdown + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Core Package Breakdown + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#understanding-the-core-seat-packages" class="md-nav__link"> + Understanding the core SeAT packages + </a> + + <nav class="md-nav" aria-label="Understanding the core SeAT packages"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#eveseatapi" class="md-nav__link"> + eveseat/api + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseateveapi" class="md-nav__link"> + eveseat/eveapi + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatnotifications" class="md-nav__link"> + eveseat/notifications + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatweb" class="md-nav__link"> + eveseat/web + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatseat" class="md-nav__link"> + eveseat/seat + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatservices" class="md-nav__link"> + eveseat/services + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#understanding-the-core-seat-packages" class="md-nav__link"> + Understanding the core SeAT packages + </a> + + <nav class="md-nav" aria-label="Understanding the core SeAT packages"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#eveseatapi" class="md-nav__link"> + eveseat/api + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseateveapi" class="md-nav__link"> + eveseat/eveapi + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatnotifications" class="md-nav__link"> + eveseat/notifications + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatweb" class="md-nav__link"> + eveseat/web + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatseat" class="md-nav__link"> + eveseat/seat + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eveseatservices" class="md-nav__link"> + eveseat/services + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="developers-guides-core-package-breakdown">Developers Guides - Core Package Breakdown<a class="headerlink" href="#developers-guides-core-package-breakdown" title="Permanent link">¶</a></h1> +<h2 id="understanding-the-core-seat-packages">Understanding the core SeAT packages<a class="headerlink" href="#understanding-the-core-seat-packages" title="Permanent link">¶</a></h2> +<p>This section aims to describe the functional differences between the various SeAT packages.</p> +<h3 id="eveseatapi">eveseat/api<a class="headerlink" href="#eveseatapi" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>Seat\Api</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/api">link</a></p> +<p>This repository contains all the SeAT Api Endpoints, as well as the routes and views for API key management.</p> +<h3 id="eveseateveapi">eveseat/eveapi<a class="headerlink" href="#eveseateveapi" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>Seat\Eveapi</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/eveapi">link</a></p> +<p>This repository is the heart of the API update logic. It is responsible for doing the <strong>actual</strong> update work, pulling the EVE API documents from ESI, parsing them and storing the resultant data in the database. Most of the data models live in this repository too.</p> +<h3 id="eveseatnotifications">eveseat/notifications<a class="headerlink" href="#eveseatnotifications" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>Seat\Notifications</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/notifications">link</a></p> +<p>This repository contains a set of scheduled jobs that perform notifications type tasks. A notification can be something as simple as an alert about a corporation member that has been inactive for a period of time.</p> +<h3 id="eveseatweb">eveseat/web<a class="headerlink" href="#eveseatweb" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>Seat\Web</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/web">link</a></p> +<p>This repository contains the web interface for SeAT. It contains by far the most complex <a href="https://github.com/eveseat/web/blob/master/src/WebServiceProvider.php">service provider</a> and will undoubtedly become the prime example/reference when developing packages for SeAT. This package is also the only one that has a permissions / ACL concept. Refer the to the permissions document for more information.</p> +<h3 id="eveseatseat">eveseat/seat<a class="headerlink" href="#eveseatseat" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>App</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/seat">link</a></p> +<p>This is the main SeAT repository. It does not really contain much logic. In fact, it should just be seen as the glue between all the core packages. This is the repository that is cloned when a new installation is done.</p> +<p>The most important part of this repository is the service providers that are bootstrapped with the application. The <a href="https://github.com/eveseat/seat/blob/39ff75beb8185acd46f8490129e9178a9f190a70/config/app.php#L168">providers array</a> has the default Laravel providers as well as the SeAT providers at the end. These providers tell the application where to find routes, views, configs etc. For more detailed information about providers, refer to the <a href="http://laravel.com/docs/5.5/providers">Laravel 5.5 documentation</a>. When you write your package though, you should make use of package discovery as described in the <a href="https://laravel.com/docs/5.5/packages#package-discovery">Laravel 5.5 documenation</a>. This will make the installation of your package super simple without the need to edit any files.</p> +<h3 id="eveseatservices">eveseat/services<a class="headerlink" href="#eveseatservices" title="Permanent link">¶</a></h3> +<p>Namespace: <strong>Seat\Services</strong></p> +<p>Source Code: <a href="https://github.com/eveseat/services">link</a></p> +<p>This repository contains 'services'. A service is defined as any form of helper and or repository that other packages can depend on. The <em>eveseat/web</em> package (amongst others) make heavy use of the repository classes in this package.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/developer_installation/index.html b/developer_guides/developer_installation/index.html new file mode 100644 index 00000000..f7a6aea6 --- /dev/null +++ b/developer_guides/developer_installation/index.html @@ -0,0 +1,1464 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/developer_installation/"> + + + <link rel="prev" href="../../user_guides/moons_reporter/"> + + + <link rel="next" href="../core_package_breakdown/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Developer Installation - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#developer-installation" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Developer Installation + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Developer Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Developer Installation + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#setup-process" class="md-nav__link"> + Setup Process + </a> + + <nav class="md-nav" aria-label="Setup Process"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#overrider" class="md-nav__link"> + Overrider + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#teach-things-by-example" class="md-nav__link"> + Teach things by example + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#setup-process" class="md-nav__link"> + Setup Process + </a> + + <nav class="md-nav" aria-label="Setup Process"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#overrider" class="md-nav__link"> + Overrider + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#teach-things-by-example" class="md-nav__link"> + Teach things by example + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="developer-installation">Developer Installation<a class="headerlink" href="#developer-installation" title="Permanent link">¶</a></h1> +<p>This document describes how to set up a development environment for both core package and third party package development. +The easiest way to set up a development environment is to use docker. You can use the same image as in a production environment.</p> +<p>For development, plugins and the seat core are treated the same. When working on the core, you install a core package like +any other plugin. This is also how core packages are implemented: Internally they are also just a plugin, only that they +are considered the core and that other plugins build on top of them.</p> +<p>The SeAT docker image is built in a way to prefer development installations of packages over plugins from <code>.env</code> and the core. While the docker image always downloads and installs +the core packages, when it finds a local development install of a core package, it uses that over the latest version from packagist.</p> +<h2 id="setup-process">Setup Process<a class="headerlink" href="#setup-process" title="Permanent link">¶</a></h2> +<p>First, start with <a href="../../installation/docker_installation/">standard installation</a> to get a working environment.</p> +<p>The official docker-compose wrapper is shipped with a <code>packages</code> directory. +It is mounted readonly, and you can store your development sources in it.</p> +<p>To make things easier, we recommend you keep vendor path convention to split your sources across every single package you want to play with.</p> +<h3 id="overrider">Overrider<a class="headerlink" href="#overrider" title="Permanent link">¶</a></h3> +<p>In the next step, we need to let laravel, the php framework used by seat, know that our plugin is there.</p> +<p>The image has been designed to look for a file called <code>override.json</code> inside <code>packages</code> directory. +When it is found, it will be merged together with standard <code>composer.json</code> file from <code>eveseat/seat</code> package.</p> +<p>It's designed to override both <code>autoload</code> and <code>providers</code>. +Here is a complete <code>override.json</code> structure:</p> +<div class="language-json highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span> +<span class="normal"><a href="#__codelineno-0-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="p">{</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="w"> </span><span class="nt">"autoload"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="w"> </span><span class="nt">"namespace_to_load\\"</span><span class="p">:</span><span class="w"> </span><span class="s2">"packages/sources_path"</span> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="w"> </span><span class="p">},</span> +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="w"> </span><span class="nt">"providers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="w"> </span><span class="s2">"FQCN\\Provider"</span> +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="w"> </span><span class="p">]</span> +</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="p">}</span> +</span></code></pre></div></td></tr></table></div> +<p>An override can have either autoload, providers or even both property. +Do not forget to escape <code>\</code> in order to get a valid json file.</p> +<p>When your container will start, mapping from <code>autoload</code> property in your <code>override.json</code> file will be merged with <code>autoload-dev</code> property from official <code>composer.json</code>.</p> +<div class="admonition tips"> +<p class="admonition-title">SeAT 4.x</p> +<ol> +<li>If you need access the console of any container, access it via <code>docker exec seat-web sh</code> where <code>seat-web</code> is the name of the target container.</li> +<li>You can execute <code>artisan</code> commands from outside of docker with <code>docker exec seat-web php artisan <command></code></li> +</ol> +</div> +<div class="admonition tips"> +<p class="admonition-title">SeAT 5.x</p> +<ol> +<li>If you need access the console of any container, access it via <code>docker exec front sh</code> where <code>front</code> is the name of the target container.</li> +<li>You can execute <code>artisan</code> commands from outside of docker with <code>docker exec front php artisan <command></code></li> +</ol> +</div> +<p>Please note that there is currently no way to install dependencies with the package override. </p> +<p>When installing already existing packages (e.g. a core package), you can find all required autoloads and service providers in it's <code>composer.json</code> file.</p> +<h2 id="teach-things-by-example">Teach things by example<a class="headerlink" href="#teach-things-by-example" title="Permanent link">¶</a></h2> +<p>As an example, let's say I want to make a new feature in web core package, I'll spawn an <code>eveseat</code> directory at root <code>packages</code> directory, followed by a clone from <code>eveseat/web</code> git repository. +Last but not least, I'll create an <code>override.json</code> file to inform SeAT there are developer things to load.</p> +<ol> +<li>Create vendor directory into <code>packages</code> directory <code>mkdir packages/eveseat</code></li> +<li>Cloning core web package into <code>packages/eveseat/web</code> directory <code>git clone https://github.com/eveseat/web.git packages/eveseat/web</code></li> +<li>Create an <code>override.json</code> to use custom web sources</li> +</ol> +<div class="language-shell highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span> +<span class="normal"><a href="#__codelineno-1-3">3</a></span> +<span class="normal"><a href="#__codelineno-1-4">4</a></span> +<span class="normal"><a href="#__codelineno-1-5">5</a></span> +<span class="normal"><a href="#__codelineno-1-6">6</a></span> +<span class="normal"><a href="#__codelineno-1-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>cat<span class="w"> </span>><span class="w"> </span>packages/override.json<span class="w"> </span><span class="s"><< EOL</span> +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="s">{</span> +</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="s"> "autoload": {</span> +</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="s"> "Seat\\Web\\": "packages/eveseat/web/src/"</span> +</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="s"> }</span> +</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="s">}</span> +</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="s">EOL</span> +</span></code></pre></div></td></tr></table></div> +<div class="admonition tips"> +<p class="admonition-title">Tips</p> +<p>If you're working with Windows, prefer to store your files in wsl layer rather than Windows directory. +Both work, however, you'll get better performances!</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/development_tips/index.html b/developer_guides/development_tips/index.html new file mode 100644 index 00000000..003d55d8 --- /dev/null +++ b/developer_guides/development_tips/index.html @@ -0,0 +1,1460 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/development_tips/"> + + + <link rel="prev" href="../package_development/"> + + + <link rel="next" href="../job_queue_flow/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Development Tips - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#development-tips" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Development Tips + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Development Tips + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Development Tips + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#best-practices" class="md-nav__link"> + Best practices + </a> + +</li> + + <li class="md-nav__item"> + <a href="#model-observers" class="md-nav__link"> + Model Observers + </a> + +</li> + + <li class="md-nav__item"> + <a href="#useful-seat-specific-features" class="md-nav__link"> + Useful SeAT-Specific Features + </a> + + <nav class="md-nav" aria-label="Useful SeAT-Specific Features"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#deferred-migrations" class="md-nav__link"> + Deferred Migrations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#injectable-relations" class="md-nav__link"> + Injectable Relations + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#best-practices" class="md-nav__link"> + Best practices + </a> + +</li> + + <li class="md-nav__item"> + <a href="#model-observers" class="md-nav__link"> + Model Observers + </a> + +</li> + + <li class="md-nav__item"> + <a href="#useful-seat-specific-features" class="md-nav__link"> + Useful SeAT-Specific Features + </a> + + <nav class="md-nav" aria-label="Useful SeAT-Specific Features"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#deferred-migrations" class="md-nav__link"> + Deferred Migrations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#injectable-relations" class="md-nav__link"> + Injectable Relations + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="development-tips">Development Tips<a class="headerlink" href="#development-tips" title="Permanent link">¶</a></h1> +<p>This page contains general tips and tricks that may be useful during package development.</p> +<h2 id="best-practices">Best practices<a class="headerlink" href="#best-practices" title="Permanent link">¶</a></h2> +<p>No doubt, there are no limits to what code you can write, how you structure it and how you name things. However, the last thing you want is to have conflicts with the SeAT core, or someone elses package! The following list contains some tips to help you avoid those conflicts and to help people better discover your packages:</p> +<ul> +<li>Prefix your github repository name with <code>seat</code> eg: <code>seat-teamspeak</code>.</li> +<li>Tag your github repository with <code>seat</code>.</li> +<li>Use a unique package namespace such as <code>Author\Seat\Package\</code> eg: <code>Warlof\Seat\Teamspeak\</code>.</li> +<li>Prefix your database table names with something unique to your package. eg <code>warlof_teamspeak_users</code>. + Although you shouldn't make your prefix too long, as there is a 64 character table length limit.</li> +<li>Do not modify core tables. This will break future updates for users of your package.</li> +<li>Prefix your settings with both an author and package eg: <code>warlof.teamspeak.address</code>.</li> +<li>Prefix redis records with both author and package eg: <code>warlof.teamspeak.channels</code>.</li> +<li>In your <code>composer.json</code> file, set the <code>type</code> to <code>seat-plugin</code>.</li> +<li>Avoid altering core tables, especially introducing relationship - this might break core migrations. Prefer to use observer if you need to maintain your data across core models.</li> +<li>If you need an API or something the SeAT core doesn't provide, consider contributing it. The SeAT core is not set in stone.</li> +<li>Scope your routes: For example all routes from the seat core start with <code>seatcore</code>like this: <code>seatcore::my.route.to.someting</code>. You should follow a similar format: <code>seat<plugin name>::<route></code></li> +<li>Use a <a href="../package_development/#jobs--schedules">schedule seeder</a> for adding commands to the schedule. Compared to migrations, this has the advantage that accidentally deleted commands will be added back automatically on the next restart.</li> +<li>For all your model, extend from <code>\Seat\Services\Models\ExtensibleModel</code> instead of the standard laravel <code>Model</code>. They are functionally equivalent, but <code>ExtensibleModel</code> allows <a href="#injectable-relations">injectable relations</a>.</li> +</ul> +<h2 id="model-observers">Model Observers<a class="headerlink" href="#model-observers" title="Permanent link">¶</a></h2> +<p>Depending on what your package does, it may be interesting for you to know when data is created / deleted. Given that SeAT makes use of Laravel, you have the ability to subscribe to events that occur on any model within SeAT.</p> +<p>For example, should a <code>User</code> model get deleted, the <code>deleted</code> event will get fired. Writing an observer class and subscribing to it with <code>\Seat\Web\Models\User::observer(\My\Namespace\UserObserver::class)</code> will allow you to define a <code>deleted()</code> method inside of your observer class and perform extra logic with the <code>User</code> that got deleted.</p> +<p>Examples of where this may be interesting could be if you need to have cleanup code for tables that your package includes.</p> +<p>For more information, checkout the Laravel documentation on <a href="https://laravel.com/docs/10.x/eloquent#observers">Eloquent Observers</a>.</p> +<h2 id="useful-seat-specific-features">Useful SeAT-Specific Features<a class="headerlink" href="#useful-seat-specific-features" title="Permanent link">¶</a></h2> +<h3 id="deferred-migrations">Deferred Migrations<a class="headerlink" href="#deferred-migrations" title="Permanent link">¶</a></h3> +<p>Sometimes you might want to run some business logic in a migration. For example, when adding a new column, you might want to fill that column with a computation that is part of your business logic. +If you have all the logic inside your migration class, and you don't depend on any other application code, you are good. However, when your migration depends on application code, it is likely that +you run into issues later down the line. Your business logic probably assumes that all your migrations have run. However, when calling business logic from migrations, this is not guaranteed. +Later migrations have not yet run, meaning you are likely to run into issues.</p> +<p>Seat offers a solution to this: Deferred Migrations. These are functions that can be scheduled in a migration and that run after all other migrations have finished. +In your migration, you can schedule a deferred migration like this:</p> +<div class="language-php highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="x">\Seat\Services\Facades\DeferredMigration::schedule(function (){</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="x"> // this closure runs after all migrations have finished. It is save to call business logic from here.</span> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="x">});</span> +</span></code></pre></div> +<h3 id="injectable-relations">Injectable Relations<a class="headerlink" href="#injectable-relations" title="Permanent link">¶</a></h3> +<p>Cross-package interaction is at the heart of SeAT. For example, plugins use the ESI data pulled by <code>eveapi</code>. However, there is one issue: While a plugin can always assume that <code>eveapi</code> is there, +this is not possible the other way around. The seat core can run without any plugin. This implies that the plugin can have a relation pointing from a plugin model to a core model, but not the other +way around.</p> +<p>In SeAT, there is a system of injectable relations that helps with this. In short, to any model extending from <code>\Seat\Services\Models\ExtensibleModel</code>, you can attach relations similar to how you +attach observers. </p> +<p>First, you create a model extension class containing the relations you want to add to the base model. This extension class should extend from the base model.</p> +<p>Second, you register the extension classes in your service provider's boot method like this: +<div class="language-php highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="x">BaseModel::injectRelationsFrom(ModelExtension::class);</span> +</span></code></pre></div></p> +<p>The relations defined in the model extension class should now be usable on the base model. </p> +<p>Even though the model extension extends from the base class and behaves the same for the most part, you should always use the base class in your code, as otherwise observers aren't working properly.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/job_queue_flow/index.html b/developer_guides/job_queue_flow/index.html new file mode 100644 index 00000000..e811eb82 --- /dev/null +++ b/developer_guides/job_queue_flow/index.html @@ -0,0 +1,1323 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/job_queue_flow/"> + + + <link rel="prev" href="../development_tips/"> + + + <link rel="next" href="../notifications_implementation/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Job Queue Flow - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#job-queue-flow" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Job Queue Flow + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <a href="./" class="md-nav__link md-nav__link--active"> + Job Queue Flow + </a> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="job-queue-flow">Job Queue Flow<a class="headerlink" href="#job-queue-flow" title="Permanent link">¶</a></h1> +<p>When a job is queued, it's instance is serialized and push into the Redis database. +Horizon, our jobs orchestrator is taking care of every new jobs falling in redis and push it to an available worker from the targeted queue.</p> +<p>With SeAT 4, queues have been renamed and are scoped. This helps to identify load per "topic" and ensure better parallel processing of jobs.</p> +<p>As shown bellow, queues <code>characters</code>, <code>corporations</code> and <code>public</code> are dedicated to ESI jobs.</p> +<ul> +<li>Characters queue is processing all jobs directly tied to a character entity (like info, assets, contracts, etc...)</li> +<li>Corporations queue is processing all jobs directly tied to a corporation entity (like killmails, jobs, wallets, etc...)</li> +<li>Public queue is processing all jobs related to universe (like stations, alliances, sovereignties, etc...)</li> +</ul> +<p>There is a dedicated queue to handle notifications tasks (like notifying a killmail on Discord). +So, you will always get your notifications as fast as possible.</p> +<p>The last two other queues (<code>high</code> and <code>default</code>) have a general purpose.</p> +<ul> +<li>The <code>high</code> queue is dedicated to jobs which have a critical level (like those related to security)</li> +<li>The <code>default</code> queue is a bucket collecting all jobs without any other specified queue</li> +</ul> +<p>The default (and recommended) jobs handling configuration is using <strong>auto balancing</strong>. +This ensures every single queue always have a minimum of workers (1 is the default value).</p> +<div class="admonition important"> +<p class="admonition-title">Important</p> +<p>There are no ranking in queues, so, the <strong>high</strong> one is not most important than other in the way jobs are processing. +Queue name doesn't influe on their ability to process load. So, please use <strong>high queue</strong> for really important/critical tasks only.</p> +</div> +<p><img alt="Flow" src="../../img/seat_jobs_flow.png" /></p> +<p>An editable <a href="https://www.draw.io/">draw.io</a> xml to import can be found here: <a href="../../img/seat_jobs_flow.drawio">seat_jobs_flow.drawio</a></p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/notifications_implementation/index.html b/developer_guides/notifications_implementation/index.html new file mode 100644 index 00000000..1e31c343 --- /dev/null +++ b/developer_guides/notifications_implementation/index.html @@ -0,0 +1,1582 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/notifications_implementation/"> + + + <link rel="prev" href="../job_queue_flow/"> + + + <link rel="next" href="../updating_plugins/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Notifications Implementation - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#developers-guides-notifications-implementation" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Notifications Implementation + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Notifications Implementation + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Notifications Implementation + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration" class="md-nav__link"> + Configuration + </a> + +</li> + + <li class="md-nav__item"> + <a href="#formatters" class="md-nav__link"> + Formatters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#observers" class="md-nav__link"> + Observers + </a> + + <nav class="md-nav" aria-label="Observers"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#characters" class="md-nav__link"> + Characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#corporations" class="md-nav__link"> + Corporations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#killmails" class="md-nav__link"> + Killmails + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads" class="md-nav__link"> + Squads + </a> + +</li> + + <li class="md-nav__item"> + <a href="#users" class="md-nav__link"> + Users + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#porting-plugins-from-seat-4-to-5" class="md-nav__link"> + Porting Plugins from Seat 4 to 5 + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration" class="md-nav__link"> + Configuration + </a> + +</li> + + <li class="md-nav__item"> + <a href="#formatters" class="md-nav__link"> + Formatters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#observers" class="md-nav__link"> + Observers + </a> + + <nav class="md-nav" aria-label="Observers"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#characters" class="md-nav__link"> + Characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#corporations" class="md-nav__link"> + Corporations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#killmails" class="md-nav__link"> + Killmails + </a> + +</li> + + <li class="md-nav__item"> + <a href="#squads" class="md-nav__link"> + Squads + </a> + +</li> + + <li class="md-nav__item"> + <a href="#users" class="md-nav__link"> + Users + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#porting-plugins-from-seat-4-to-5" class="md-nav__link"> + Porting Plugins from Seat 4 to 5 + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="developers-guides-notifications-implementation">Developers Guides - Notifications Implementation<a class="headerlink" href="#developers-guides-notifications-implementation" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>SeAT is shipped with a built-in notification system which is able to send message across the world to almost any platform.</p> +<p>It is supporting e-mail, Slack and Discord out of the box.</p> +<p>However, thanks to Laravel, if you need to support another platform - you simply need to implement the related driver. See official <a href="https://laravel-notification-channels.com">Laravel Notification Channels</a> website to get more about this. </p> +<p>Additionally, there is a system to mention certain users when a notification gets sent. Since we don't assume that many people need to implement this for a new platform, there is no written documentation. This is a good starting point to read the code: <a href="https://github.com/eveseat/notifications/blob/master/src/Config/notifications.mentions.php">Config/notifications.mentions.php</a></p> +<h2 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">¶</a></h2> +<p>All notifications must be declared inside <code>notifications.alerts.php</code>. You will want to create a file named like this in the <code>Config</code> directory of your plugin and then use <code>mergeConfigFrom</code> in your service provider to merge the seat core and plugin notification configuration. +Every entry must follow this pattern:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="x">'created_user' => [</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a><span class="x"> 'label' => 'notifications::alerts.created_user',</span> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="x"> 'handlers' => [</span> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="x"> 'mail' => \Seat\Notifications\Notifications\Seat\Mail\CreatedUser::class,</span> +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="x"> 'slack' => \Seat\Notifications\Notifications\Seat\Slack\CreatedUser::class,</span> +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="x"> ],</span> +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="x">]</span> +</span></code></pre></div></td></tr></table></div> +<ul> +<li>the entry key <code>created_user</code> must be unique overall system and will identify the very specific notification declaration. It will reference the notification definition composed of <code>label</code> and <code>handlers</code> keys.</li> +<li>the <code>label</code> will reference a translation token - this is the value which will appear on user interface into notification settings</li> +<li>the <code>handlers</code> key is containers a list of available formatters. There is a formatter per available platform - or so called - channel.</li> +<li>the optional <code>visible</code> key hides the notification from the list of available notifications, but you can still use the seat notification infrastructure normally. Realistically, you don't need this for anything.</li> +</ul> +<p>You can also look at the seat core <a href="https://github.com/eveseat/notifications/blob/master/src/Config/notifications.alerts.php">notifications.alerts.php</a> file as an example.</p> +<h2 id="formatters">Formatters<a class="headerlink" href="#formatters" title="Permanent link">¶</a></h2> +<p>Formatters are class which will define how message targeting a specific channel must be structured. +In upper example, we have two formatters:</p> +<ul> +<li><a href="https://github.com/eveseat/notifications/blob/master/src/Notifications/Seat/Mail/CreatedUser.php">\Seat\Notifications\Notifications\Seat\Mail\CreatedUser</a> which is handling mail channel format</li> +<li><a href="https://github.com/eveseat/notifications/blob/master/src/Notifications/Seat/Slack/CreatedUser.php">\Seat\Notifications\Notifications\Seat\Slack\CreatedUser</a> which is handling Slack channel format</li> +</ul> +<p>Formatter must extend a different abstract class depending on what kind of platform it supports:</p> +<ul> +<li>Discord: <code>Seat\Notifications\Notifications\AbstractDiscordNotification</code></li> +<li>Slack: <code>Seat\Notifications\Notifications\AbstractSlackDiscordNotification</code></li> +<li>Mail: <code>Seat\Notifications\Notifications\AbstractMailNotification</code></li> +</ul> +<p>Every formatter is composed of the following method:</p> +<ul> +<li><code>populateMessage(Message $message, mixed $notifiable)</code> which will generate the structure message for the target platform. The type of <code>Message</code> differs slightly according to which platform you're on, e.g. on discord it is a <code>Seat\Notifications\Services\Discord\Messages\DiscordMessage</code>, on slack it is a <code>Illuminate\Notifications\Messages\SlackMessage</code>.</li> +</ul> +<h2 id="observers">Observers<a class="headerlink" href="#observers" title="Permanent link">¶</a></h2> +<p>In SeAT, notifications are event based and sent by jobs queued in <code>notifications</code> queue. This prevents to lock system while sending the information.</p> +<p>To send your notification, you will listen for system events (ie: a character notification created in the database) in order to dispatch the selected notification.</p> +<h3 id="characters">Characters<a class="headerlink" href="#characters" title="Permanent link">¶</a></h3> +<p>All characters related notifications are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/CharacterNotificationObserver.php">\Seat\Notifications\Observers\CharacterNotificationObserver</a></p> +<p>It is waiting for an Eve Online notification targeting a character to be registered and dispatch the related message to the requested platform - if asked for.</p> +<p>SeAT is shipped with numerous notifications - but due to the number of existing ones and the fact that there are regularly news notifications created by CCP attached to added features, it might append that a notification isn't handled.</p> +<p>You can track such cases using <code>debug</code> log level which will generate a log entry looking like this:</p> +<blockquote> +<p>Unsupported notification type.\ + <strong>type:</strong> TheNotificationTypeAsPerESIDefinition (see: https://esi.evetech.net/ui/#/Character/get_characters_character_id_notifications)\ + <strong>sender_type:</strong> character\ + <strong>notification:</strong> the YAML structure of the notification</p> +</blockquote> +<p>You'll find all standard notifications handler related to character into the following namespace: <a href="https://github.com/eveseat/notifications/tree/master/src/Notifications/Characters">\Seat\Notifications\Notifications\Characters</a></p> +<h3 id="corporations">Corporations<a class="headerlink" href="#corporations" title="Permanent link">¶</a></h3> +<p>Most of the corporations related notifications are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/CharacterNotificationObserver.php">\Seat\Notifications\Observers\CharacterNotificationObserver</a></p> +<p>It is waiting for an Eve Online notification targeting a corporation to be registered and dispatch the related message to the requested platform - if asked for.</p> +<p>SeAT is shipped with numerous notifications - but due to the number of existing ones and the fact that there are regularly news notifications created by CCP attached to added features, it might append that a notification isn't handled.</p> +<p>You can track such cases using <code>debug</code> log level which will generated a log entry looking like this :</p> +<blockquote> +<p>Unsupported notification type.\ + <strong>type:</strong> TheNotificationTypeAsPerESIDefinition (see: https://esi.evetech.net/ui/#/Character/get_characters_character_id_notifications)\ + <strong>sender_type:</strong> corporation\ + <strong>notification:</strong> the YAML structure of the notification</p> +</blockquote> +<p>Alternatively, notifications related to corporation member state are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/CorporationMemberTrackingObserver.php">\Seat\Notifications\Observers\CorporationMemberTrackingObserver</a></p> +<p>You'll find all standard notifications handler related to corporation into the following namespace: <a href="https://github.com/eveseat/notifications/tree/master/src/Notifications/Corporations">\Seat\Notifications\Notifications\Corporations</a></p> +<h3 id="killmails">Killmails<a class="headerlink" href="#killmails" title="Permanent link">¶</a></h3> +<p>All killmails related notifications are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/KillmailNotificationObserver.php">\Seat\Notifications\Observers\KillmailNotificationObserver</a></p> +<p>It is waiting for a killmail being registered and dispatch the related message to the requested platform - if asked for.</p> +<h3 id="squads">Squads<a class="headerlink" href="#squads" title="Permanent link">¶</a></h3> +<p>All squads related notifications are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/SquadApplicationObserver.php">\Seat\Notifications\Observers\SquadApplicationObserver</a> and <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/SquadMemberObserver.php">\Seat\Notifications\Observers\SquadMemberObserver</a></p> +<p>It is waiting for squads members and applications to be registered and dispatch the related message to the requested platform - if asked for.</p> +<p>You'll find all standard notifications handler related to Squads into the following namespace: <a href="https://github.com/eveseat/notifications/tree/master/src/Notifications/Seat">\Seat\Notifications\Notifications\Seat</a></p> +<h3 id="users">Users<a class="headerlink" href="#users" title="Permanent link">¶</a></h3> +<p>All users related notifications are handled by <a href="https://github.com/eveseat/notifications/blob/master/src/Observers/UserObserver.php">\Seat\Notifications\Observers\UserObserver</a></p> +<p>It is waiting for a user to be registered and dispatch the related message to the requested platform - if asked for.</p> +<p>You'll find all standard notifications handler related to character into the following namespace: <a href="https://github.com/eveseat/notifications/tree/master/src/Notifications/Seat">\Seat\Notifications\Notifications\Seat</a></p> +<h2 id="porting-plugins-from-seat-4-to-5">Porting Plugins from Seat 4 to 5<a class="headerlink" href="#porting-plugins-from-seat-4-to-5" title="Permanent link">¶</a></h2> +<p>All notifications continue to work without any changes, even though there have been major refactors. However, to profit of the new mentions system behind discord pings, you need to change a few things to update to the new notification structure:</p> +<ul> +<li>Start extending from the platform specific classes instead of <code>Seat\Notifications\Notifications\AbstractNotification</code>. </li> +<li>Discord: extend <code>Seat\Notifications\Notifications\AbstractDiscordNotification</code></li> +<li>Slack: extend <code>Seat\Notifications\Notifications\AbstractSlackNotification</code></li> +<li>Mail: extend <code>Seat\Notifications\Notifications\AbstractMailNotification</code></li> +<li>Remove the via method. It moved to the abstract notification class.</li> +<li>Refactor your public <code>toX()</code> method to a protected <code>populateMessage(MessageType $message, $notifiable)</code>. Instead of creating a new message, use the parameter <code>$message</code>. The type <code>MessageType</code> must be adjusted depending on your platform:</li> +<li>discord: <code>Seat\Notifications\Services\Discord\Messages\DiscordMessage</code></li> +<li>slack: <code>Illuminate\Notifications\Messages\SlackMessage</code></li> +<li>mail: <code>Illuminate\Notifications\Messages\MailMessage</code></li> +<li>Consider using the <code>Seat\Notifications\Traits\NotificationDispatchTool</code> trait to dispatch notification. It helps to deduplicate the most common logic.</li> +</ul> +<p>The old notification structure will stop working in seat 6.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/package_development/index.html b/developer_guides/package_development/index.html new file mode 100644 index 00000000..bc283d65 --- /dev/null +++ b/developer_guides/package_development/index.html @@ -0,0 +1,1973 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/package_development/"> + + + <link rel="prev" href="../core_package_breakdown/"> + + + <link rel="next" href="../development_tips/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Package Development - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#developers-guides-package-development" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Package Development + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Package Development + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Package Development + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#background-notes" class="md-nav__link"> + Background notes + </a> + +</li> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#service-provider" class="md-nav__link"> + Service provider + </a> + +</li> + + <li class="md-nav__item"> + <a href="#package-structure" class="md-nav__link"> + Package structure + </a> + +</li> + + <li class="md-nav__item"> + <a href="#routes-and-controllers" class="md-nav__link"> + Routes and controllers + </a> + + <nav class="md-nav" aria-label="Routes and controllers"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#routes" class="md-nav__link"> + Routes + </a> + + <nav class="md-nav" aria-label="Routes"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#access-control" class="md-nav__link"> + Access Control + </a> + +</li> + + <li class="md-nav__item"> + <a href="#middleware" class="md-nav__link"> + Middleware + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#views" class="md-nav__link"> + Views + </a> + + <nav class="md-nav" aria-label="Views"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#sidebar-menu" class="md-nav__link"> + Sidebar menu + </a> + +</li> + + <li class="md-nav__item"> + <a href="#character-submenus" class="md-nav__link"> + Character submenus + </a> + +</li> + + <li class="md-nav__item"> + <a href="#corporation-submenus" class="md-nav__link"> + Corporation submenus + </a> + +</li> + + <li class="md-nav__item"> + <a href="#bootstrapping-menu-items" class="md-nav__link"> + Bootstrapping menu items + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#jobs-schedules" class="md-nav__link"> + Jobs & Schedules + </a> + +</li> + + <li class="md-nav__item"> + <a href="#releasing-the-plugin" class="md-nav__link"> + Releasing the plugin + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#introduction" class="md-nav__link"> + Introduction + </a> + +</li> + + <li class="md-nav__item"> + <a href="#background-notes" class="md-nav__link"> + Background notes + </a> + +</li> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#service-provider" class="md-nav__link"> + Service provider + </a> + +</li> + + <li class="md-nav__item"> + <a href="#package-structure" class="md-nav__link"> + Package structure + </a> + +</li> + + <li class="md-nav__item"> + <a href="#routes-and-controllers" class="md-nav__link"> + Routes and controllers + </a> + + <nav class="md-nav" aria-label="Routes and controllers"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#routes" class="md-nav__link"> + Routes + </a> + + <nav class="md-nav" aria-label="Routes"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#access-control" class="md-nav__link"> + Access Control + </a> + +</li> + + <li class="md-nav__item"> + <a href="#middleware" class="md-nav__link"> + Middleware + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#views" class="md-nav__link"> + Views + </a> + + <nav class="md-nav" aria-label="Views"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#sidebar-menu" class="md-nav__link"> + Sidebar menu + </a> + +</li> + + <li class="md-nav__item"> + <a href="#character-submenus" class="md-nav__link"> + Character submenus + </a> + +</li> + + <li class="md-nav__item"> + <a href="#corporation-submenus" class="md-nav__link"> + Corporation submenus + </a> + +</li> + + <li class="md-nav__item"> + <a href="#bootstrapping-menu-items" class="md-nav__link"> + Bootstrapping menu items + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#jobs-schedules" class="md-nav__link"> + Jobs & Schedules + </a> + +</li> + + <li class="md-nav__item"> + <a href="#releasing-the-plugin" class="md-nav__link"> + Releasing the plugin + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="developers-guides-package-development">Developers Guides - Package Development<a class="headerlink" href="#developers-guides-package-development" title="Permanent link">¶</a></h1> +<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2> +<p>So, you want to write a SeAT package? Hopefully this guide helps you along the way! This guide was written while writing the API package for SeAT <a href="https://github.com/eveseat/api">here</a>. I figured it would be best to try and capture the process to help in case I miss any important details.</p> +<p>Be sure to also have a look at the <a href="../development_tips/">Development Tips</a> page!</p> +<h2 id="background-notes">Background notes<a class="headerlink" href="#background-notes" title="Permanent link">¶</a></h2> +<p>I think its important to keep in mind a few things about how SeAT is put together. The most important being a brief description of what each core package offers, and how you can integrate with them. For a breakdown on what the core packages provide, please refer the to [breakdown].</p> +<p>SeAT 4 is written on <a href="http://laravel.com/docs/6.x">Laravel 6</a>, while SeAT 5 uses <a href="http://laravel.com/docs/10.x">Laravel 10</a>. A <strong>very</strong> good thing to do would be to actually read the documentation top->bottom and get an idea of what is possible with the framework. SeAT core packages make heavy use of many of the features, based directly of what has been interpreted by this very documentation.</p> +<p>If you really want to start contributing packages, but just cant get your head around this whole Laravel thing, then I can suggest you have a look at this excellent free course material covering the basics of what you will encounter in the SeAT codebase. <a href="https://laracasts.com/series/laravel-6-from-scratch">https://laracasts.com/series/laravel-6-from-scratch</a></p> +<p>Other plugins and the SeAT core are also a good learning resource.</p> +<h2 id="getting-started">Getting started<a class="headerlink" href="#getting-started" title="Permanent link">¶</a></h2> +<p>The very first thing to do is prepare the empty git repository on say Github, as well as the composer package itself. Clone a clean repository, and run <code>composer init</code>, answering any questions. Once that is done, edit the resultant <code>composer.json</code> and prepare the <code>autoload</code> block. SeAT core follows the <a href="http://www.php-fig.org/psr/psr-4/">PSR-4</a> autoloading standard. I will suggest you do the same. For some more detailed composer info, refer to the docs <a href="https://getcomposer.org/doc/01-basic-usage.md">here</a>. For the API package, I am going to autoload <strong>Seat\Api</strong> from the <code>src</code> directory using PSR-4.</p> +<h2 id="service-provider">Service provider<a class="headerlink" href="#service-provider" title="Permanent link">¶</a></h2> +<p>As mentioned in the package <a href="../core_package_breakdown/">breakdowns</a>, the <em>eveseat/seat</em> repository bootstraps packages via service providers or package discovery. This is actually a Laravel convention that SeAT just follows. To get our package ready, we need to create a service provider. For the API package, I create an <code>ApiServiceProvider</code> class in <code>src/</code> directory which extends <code>Seat\Services\AbstractSeatPlugin</code>. Our packages file structure now looks as follows:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>├── composer.json +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>└── src +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> └── ApiServiceProvider.php +</span></code></pre></div></td></tr></table></div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>The <code>AbstractSeatPlugin</code> class is extending Laravel <code>ServiceProvider</code> class and ship you with useful methods that help to register your plugin in the stack (including version discovery, permissions registration, etc...). +You must use it rather than the standard one, especially if you want permissions and get your packages in Settings > SeAT Settings > SeAT Module Versions pane.</p> +</div> +<h2 id="package-structure">Package structure<a class="headerlink" href="#package-structure" title="Permanent link">¶</a></h2> +<p>From here you pretty much free to do what you want. How you structure the package will obviously depend on what exactly your package provides. In principle, I prefer to follow the same package structure as Laravel does for web / console features. Since we are going to be providing web features with the API, we will quickly create a few folders in preparation for this. I know beforehand that we are going to need a model to store API tokens; middleware to authenticate API requests; routes and controllers for the actual api logic (preferably making use of the <em>eveapi/services</em> repository classes for data access) as well as a few web views for administrators to generate API tokens for applications. With that in mind, the initial structure looks as follows:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-1-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-1-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-1-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-1-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-1-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-1-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-1-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-1-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-1-10">10</a></span> +<span class="normal"><a href="#__codelineno-1-11">11</a></span> +<span class="normal"><a href="#__codelineno-1-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>├── composer.json +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>└── src +</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a> ├── ApiServiceProvider.php +</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a> ├── Config +</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a> ├── Http +</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a> │ ├── Controllers +</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7"></a> │ └── Middleware +</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8"></a> ├── Models +</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9"></a> ├── database +</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10"></a> │ └── migrations +</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11"></a> └── resources +</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12"></a> └── views +</span></code></pre></div></td></tr></table></div> +<p>This will obviously change as we progress building the package.</p> +<h2 id="routes-and-controllers">Routes and controllers<a class="headerlink" href="#routes-and-controllers" title="Permanent link">¶</a></h2> +<p>To start testing the API, we need to add a route and controller to process some requests and responses. My <code>routes.php</code> file will have a global <code>Route::group()</code> to encapsulate the routes in the <strong>Seat\Api</strong> namespace as well as prefix them with <code>api/</code>.</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span> +<span class="normal"><a href="#__codelineno-2-3">3</a></span> +<span class="normal"><a href="#__codelineno-2-4">4</a></span> +<span class="normal"><a href="#__codelineno-2-5">5</a></span> +<span class="normal"><a href="#__codelineno-2-6">6</a></span> +<span class="normal"><a href="#__codelineno-2-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="x">// File: routes.php</span> +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a><span class="x">Route::group([ 'namespace' => 'Seat\Api\Http\Controllers',</span> +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a><span class="x"> 'prefix' => 'api'</span> +</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="x">], function () {</span> +</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a> +</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6"></a><span class="x"> // Logic here</span> +</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="x">});</span> +</span></code></pre></div></td></tr></table></div> +<p>See the final product <a href="https://github.com/eveseat/api/blob/master/src/Http/routes.php">here</a> for a more complete example.</p> +<p>Next, I add some logic with a route to <code>/</code>, update the base frameworks <code>composer.json</code> to autoload the <strong>Seat\Api</strong> namespace from the directory where my package lives, run <code>composer dump-autoload</code> and add the service provider to the <em>eveseat/seat</em> repositories <code>app.php</code> providers array. Lastly, I add a method to the service provider to load the routes and call it form the <code>boot()</code> method in the generated stub.</p> +<p>See the complete service provider <a href="https://github.com/eveseat/api/blob/master/src/ApiServiceProvider.php">here</a></p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-3-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-3-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-3-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-3-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-3-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-3-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-3-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-3-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-3-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="x">/**</span> +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="x">* Include the routes</span> +</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="x">*/</span> +</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="x">public function add_routes()</span> +</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="x">{</span> +</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a> +</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a><span class="x"> if (!$this->app->routesAreCached()) {</span> +</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a><span class="x"> include __DIR__ . '/Http/routes.php';</span> +</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9"></a><span class="x"> }</span> +</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10"></a><span class="x">}</span> +</span></code></pre></div></td></tr></table></div> +<p>As a final test, I check that my route is accessible from a booted SeAT app. :) </p> +<h3 id="routes">Routes<a class="headerlink" href="#routes" title="Permanent link">¶</a></h3> +<h4 id="access-control">Access Control<a class="headerlink" href="#access-control" title="Permanent link">¶</a></h4> +<p>Obviously, some routes are not for everyone's eyes. SeAT comes with middleware that can be used to filter out requests that may not be authorized for your route. As can be seen in the example below (from <a href="https://github.com/eveseat/api/blob/85590fbf0b18b7078d977cade50fdfc3d22709d7/src/Http/routes.php#L34">here</a>), we are filtering out requests to <code>api-admin</code> for only superusers.</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span> +<span class="normal"><a href="#__codelineno-4-3">3</a></span> +<span class="normal"><a href="#__codelineno-4-4">4</a></span> +<span class="normal"><a href="#__codelineno-4-5">5</a></span> +<span class="normal"><a href="#__codelineno-4-6">6</a></span> +<span class="normal"><a href="#__codelineno-4-7">7</a></span> +<span class="normal"><a href="#__codelineno-4-8">8</a></span> +<span class="normal"><a href="#__codelineno-4-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="x">Route::group([</span> +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="x"> 'namespace' => 'Admin',</span> +</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a><span class="x"> 'middleware' => ['auth', 'can:global.superuser'], // The ACL specification.</span> +</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4"></a><span class="x"> 'prefix' => 'api-admin'</span> +</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5"></a><span class="x"> ], function () {</span> +</span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6"></a><span class="x"> Route::get('/', [</span> +</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7"></a><span class="x"> 'as' => 'seatcore::api-admin.list',</span> +</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8"></a><span class="x"> 'uses' => 'ApiAdminController@listTokens']);</span> +</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9"></a><span class="x"> });</span> +</span></code></pre></div></td></tr></table></div> +<p>I suggest you have a look at the <code>eveseat/web</code> packages routes definitions for more examples on how the middleware is used. <a href="https://github.com/eveseat/web/tree/master/src/Http/Routes">https://github.com/eveseat/web/tree/master/src/Http/Routes</a></p> +<p>It is recommended that you scope the route name defined in <code>'as' => 'seatcore::api-admin.list'</code>. For example all routes from the seat core start with <code>seatcore</code> like this: <code>seatcore::my.route.to.someting</code>. You should follow a similar format: <code>seat<plugin name>::<route></code></p> +<h4 id="middleware">Middleware<a class="headerlink" href="#middleware" title="Permanent link">¶</a></h4> +<p>To auth our API requests, we are going to go with token based authentication for now. We want users to present us with a <code>X-Token</code> header (from a valid allowed src IP address) before they may proceed with their request. To do this, we will filter requests using middleware. Thankfully, again, Laravel comes with a command to stub us some empty middleware. Run <code>php artisan make:middleware ApiToken</code> and copy it to your projects <code>Middleware</code> folder. Next we should register the middleware in our service provider. I do this by adding a method and calling it in <code>boot()</code>.</p> +<p>See the complete middleware <a href="https://github.com/eveseat/api/blob/master/src/Http/Middleware/ApiToken.php">here</a></p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-5-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-5-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-5-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-5-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-5-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-5-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-5-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-5-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-5-10">10</a></span> +<span class="normal"><a href="#__codelineno-5-11">11</a></span> +<span class="normal"><a href="#__codelineno-5-12">12</a></span> +<span class="normal"><a href="#__codelineno-5-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="x">/**</span> +</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="x"> * Include the middleware needed</span> +</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a><span class="x"> *</span> +</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a><span class="x"> * @param $router</span> +</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="x"> */</span> +</span><span id="__span-5-6"><a id="__codelineno-5-6" name="__codelineno-5-6"></a><span class="x">public function add_middleware($router)</span> +</span><span id="__span-5-7"><a id="__codelineno-5-7" name="__codelineno-5-7"></a><span class="x">{</span> +</span><span id="__span-5-8"><a id="__codelineno-5-8" name="__codelineno-5-8"></a> +</span><span id="__span-5-9"><a id="__codelineno-5-9" name="__codelineno-5-9"></a><span class="x"> // Authenticate checks that the token is valid</span> +</span><span id="__span-5-10"><a id="__codelineno-5-10" name="__codelineno-5-10"></a><span class="x"> // from an allowed IP address</span> +</span><span id="__span-5-11"><a id="__codelineno-5-11" name="__codelineno-5-11"></a><span class="x"> $router->middleware('api.auth', ApiToken::class);</span> +</span><span id="__span-5-12"><a id="__codelineno-5-12" name="__codelineno-5-12"></a> +</span><span id="__span-5-13"><a id="__codelineno-5-13" name="__codelineno-5-13"></a><span class="x">}</span> +</span></code></pre></div></td></tr></table></div> +<h2 id="views">Views<a class="headerlink" href="#views" title="Permanent link">¶</a></h2> +<p>Although almost all of our interfacing with this package will be via the json api endpoints, we need to add a few routes that will give an administrator the ability to generate API tokens as well as view logs etc. This will be for an administrator, so we will re-use the ACL features provided by the <code>eveseat/web</code> package to ensure that only admins an access our api-admin routes. Views live in <code>resources/views</code> and are bootstrapped to the <code>api</code> namespace in the service provider. See the service provider <a href="https://github.com/eveseat/api/blob/master/src/ApiServiceProvider.php">here</a> for an example.</p> +<p>Note how we are re-using views that exist in the <code>web</code> namespace. All we have to do is extend one of the <a href="https://github.com/eveseat/web/tree/master/src/resources/views/layouts/grids">grids</a> like <a href="https://github.com/eveseat/api/blob/master/src/resources/views/list.blade.php#L1">here</a> and start without our blade template.</p> +<h3 id="sidebar-menu">Sidebar menu<a class="headerlink" href="#sidebar-menu" title="Permanent link">¶</a></h3> +<p>Integrating with the sidebar is also really easy. All you have to do is create a config file, bootstrap it in the service provider and viola. The config file itself has a set structure for the <code>web</code> package to interpret and can be seen <a href="https://github.com/eveseat/api/blob/master/src/Config/package.sidebar.php">here</a>.</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-6-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-6-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-6-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-6-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-6-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-6-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-6-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-6-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-6-10">10</a></span> +<span class="normal"><a href="#__codelineno-6-11">11</a></span> +<span class="normal"><a href="#__codelineno-6-12">12</a></span> +<span class="normal"><a href="#__codelineno-6-13">13</a></span> +<span class="normal"><a href="#__codelineno-6-14">14</a></span> +<span class="normal"><a href="#__codelineno-6-15">15</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="x">return [</span> +</span><span id="__span-6-2"><a id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="x"> 'api' => [</span> +</span><span id="__span-6-3"><a id="__codelineno-6-3" name="__codelineno-6-3"></a><span class="x"> 'permission' => 'global.superuser',</span> +</span><span id="__span-6-4"><a id="__codelineno-6-4" name="__codelineno-6-4"></a><span class="x"> 'name' => 'Api Tokens',</span> +</span><span id="__span-6-5"><a id="__codelineno-6-5" name="__codelineno-6-5"></a><span class="x"> 'icon' => 'fas fa-exchange',</span> +</span><span id="__span-6-6"><a id="__codelineno-6-6" name="__codelineno-6-6"></a><span class="x"> 'route_segment' => 'api-admin',</span> +</span><span id="__span-6-7"><a id="__codelineno-6-7" name="__codelineno-6-7"></a><span class="x"> 'entries' => [</span> +</span><span id="__span-6-8"><a id="__codelineno-6-8" name="__codelineno-6-8"></a><span class="x"> [ // Manage API Tokens</span> +</span><span id="__span-6-9"><a id="__codelineno-6-9" name="__codelineno-6-9"></a><span class="x"> 'name' => 'Manage',</span> +</span><span id="__span-6-10"><a id="__codelineno-6-10" name="__codelineno-6-10"></a><span class="x"> 'icon' => 'fas fa-key',</span> +</span><span id="__span-6-11"><a id="__codelineno-6-11" name="__codelineno-6-11"></a><span class="x"> 'route' => 'api-admin.list'</span> +</span><span id="__span-6-12"><a id="__codelineno-6-12" name="__codelineno-6-12"></a><span class="x"> ]</span> +</span><span id="__span-6-13"><a id="__codelineno-6-13" name="__codelineno-6-13"></a><span class="x"> ]</span> +</span><span id="__span-6-14"><a id="__codelineno-6-14" name="__codelineno-6-14"></a><span class="x"> ]</span> +</span><span id="__span-6-15"><a id="__codelineno-6-15" name="__codelineno-6-15"></a><span class="x">];</span> +</span></code></pre></div></td></tr></table></div> +<p>The format is generally an array, whereby the first key is the name of your package (<code>api</code> in this case). Thereafter you can specify the main entry, and any sub entries you want to add. The <code>route</code> key should refer to the named route. The sidebar loader will resolve the route itself for you. If you have any permissions requirements for your package, the <code>permission</code> key can be used together with a required SeAT permission to render the view.</p> +<h3 id="character-submenus">Character submenus<a class="headerlink" href="#character-submenus" title="Permanent link">¶</a></h3> +<p>Integrating with the character sub menus is also really easy. Just like the sidebar, all you have to do is create a config file, bootstrap it in the service provider and viola. The namespace should be named <code>package.character.menu</code> in your service provider. A sample config file can be seen below:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-7-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-7-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-7-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-7-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-7-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-7-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-7-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-7-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-7-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="x">// file: package.character.menu.php</span> +</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2"></a> +</span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3"></a><span class="x">return [</span> +</span><span id="__span-7-4"><a id="__codelineno-7-4" name="__codelineno-7-4"></a><span class="x"> [</span> +</span><span id="__span-7-5"><a id="__codelineno-7-5" name="__codelineno-7-5"></a><span class="x"> 'name' => 'Research',</span> +</span><span id="__span-7-6"><a id="__codelineno-7-6" name="__codelineno-7-6"></a><span class="x"> 'permission' => 'character.research',</span> +</span><span id="__span-7-7"><a id="__codelineno-7-7" name="__codelineno-7-7"></a><span class="x"> 'highlight_view' => 'research',</span> +</span><span id="__span-7-8"><a id="__codelineno-7-8" name="__codelineno-7-8"></a><span class="x"> 'route' => 'character.view.research'</span> +</span><span id="__span-7-9"><a id="__codelineno-7-9" name="__codelineno-7-9"></a><span class="x"> ]</span> +</span><span id="__span-7-10"><a id="__codelineno-7-10" name="__codelineno-7-10"></a><span class="x">];</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="corporation-submenus">Corporation submenus<a class="headerlink" href="#corporation-submenus" title="Permanent link">¶</a></h3> +<p>Integrating with the corporation sub menus is also really easy. Just like the sidebar and character menus, all you have to do is create a config file, bootstrap it in the service provider and viola. The namespace should be named <code>package.corporation.menu</code> in your service provider. A sample config file can be seen below:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-8-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-8-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-8-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-8-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-8-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-8-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-8-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-8-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-8-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="x">// file: package.corporation.menu.php</span> +</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2"></a> +</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="x">return [</span> +</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4"></a><span class="x"> [</span> +</span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5"></a><span class="x"> 'name' => 'Research',</span> +</span><span id="__span-8-6"><a id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="x"> 'permission' => 'corporation.research',</span> +</span><span id="__span-8-7"><a id="__codelineno-8-7" name="__codelineno-8-7"></a><span class="x"> 'highlight_view' => 'research',</span> +</span><span id="__span-8-8"><a id="__codelineno-8-8" name="__codelineno-8-8"></a><span class="x"> 'route' => 'corporation.view.research'</span> +</span><span id="__span-8-9"><a id="__codelineno-8-9" name="__codelineno-8-9"></a><span class="x"> ]</span> +</span><span id="__span-8-10"><a id="__codelineno-8-10" name="__codelineno-8-10"></a><span class="x">];</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="bootstrapping-menu-items">Bootstrapping menu items<a class="headerlink" href="#bootstrapping-menu-items" title="Permanent link">¶</a></h3> +<p>In the above items, we refer to the files needing to be <em>bootstrapped</em> via the service provider. All this really means is that we have to tell the Laravel application where to find configuration information for a namespace. So, if we wanted to add a sidebar item, we would add the following line to the <code>register()</code> method of the service provider:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="x">// Include this packages menu items</span> +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a><span class="x">$this->mergeConfigFrom(__DIR__ . '/Config/package.sidebar.php', 'package.sidebar');</span> +</span></code></pre></div></td></tr></table></div> +<p>The first argument is the file with the sidebar definitions, the second is the namespace.</p> +<h2 id="permissions">Permissions<a class="headerlink" href="#permissions" title="Permanent link">¶</a></h2> +<p>You are able to register and use your own permissions for use within SeAT. This is relatively simple and done by creating a config file in the location <code>Config/Permissions/package.permissions.php</code>. It should return an array of the following format:</p> +<div class="language-php highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-10-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-10-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-10-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-10-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-10-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-10-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-10-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-10-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-10-10">10</a></span> +<span class="normal"><a href="#__codelineno-10-11">11</a></span> +<span class="normal"><a href="#__codelineno-10-12">12</a></span> +<span class="normal"><a href="#__codelineno-10-13">13</a></span> +<span class="normal"><a href="#__codelineno-10-14">14</a></span> +<span class="normal"><a href="#__codelineno-10-15">15</a></span> +<span class="normal"><a href="#__codelineno-10-16">16</a></span> +<span class="normal"><a href="#__codelineno-10-17">17</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1"></a><span class="x">[</span> +</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2"></a><span class="x"> 'sheet' => [</span> +</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3"></a><span class="x"> 'label' => 'Grant access to Character Sheet',</span> +</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4"></a><span class="x"> 'description' => 'The Character Sheet contains basic information....',</span> +</span><span id="__span-10-5"><a id="__codelineno-10-5" name="__codelineno-10-5"></a><span class="x"> 'division' => 'financial',</span> +</span><span id="__span-10-6"><a id="__codelineno-10-6" name="__codelineno-10-6"></a><span class="x"> ],</span> +</span><span id="__span-10-7"><a id="__codelineno-10-7" name="__codelineno-10-7"></a><span class="x"> 'intel' => [</span> +</span><span id="__span-10-8"><a id="__codelineno-10-8" name="__codelineno-10-8"></a><span class="x"> 'label' => 'web::permissions.character_intel_label',</span> +</span><span id="__span-10-9"><a id="__codelineno-10-9" name="__codelineno-10-9"></a><span class="x"> 'description' => 'web::permissions.character_intel_description',</span> +</span><span id="__span-10-10"><a id="__codelineno-10-10" name="__codelineno-10-10"></a><span class="x"> 'division' => 'military',</span> +</span><span id="__span-10-11"><a id="__codelineno-10-11" name="__codelineno-10-11"></a><span class="x"> ],</span> +</span><span id="__span-10-12"><a id="__codelineno-10-12" name="__codelineno-10-12"></a><span class="x"> 'planetary' => [</span> +</span><span id="__span-10-13"><a id="__codelineno-10-13" name="__codelineno-10-13"></a><span class="x"> 'label' => 'web::permissions.character_planetary_label',</span> +</span><span id="__span-10-14"><a id="__codelineno-10-14" name="__codelineno-10-14"></a><span class="x"> 'description' => 'web::permissions.character_planetary_description',</span> +</span><span id="__span-10-15"><a id="__codelineno-10-15" name="__codelineno-10-15"></a><span class="x"> 'division' => 'industrial',</span> +</span><span id="__span-10-16"><a id="__codelineno-10-16" name="__codelineno-10-16"></a><span class="x"> ],</span> +</span><span id="__span-10-17"><a id="__codelineno-10-17" name="__codelineno-10-17"></a><span class="x">];</span> +</span></code></pre></div></td></tr></table></div> +<table> +<thead> +<tr> +<th>property</th> +<th>mandatory</th> +<th>purpose</th> +</tr> +</thead> +<tbody> +<tr> +<td>label</td> +<td>yes</td> +<td>The displayed name of your permission. It must be a translation token.</td> +</tr> +<tr> +<td>description</td> +<td></td> +<td>The displayed permission description. It should help user to determine what the permission is doing. It must be a translation token.</td> +</tr> +<tr> +<td>division</td> +<td></td> +<td>It will show a "category" icon to help user figures what will be impacted by the permission. Value can be one of <code>military</code>, <code>assets</code>, <code>financial</code>, <code>industrial</code>.</td> +</tr> +<tr> +<td>gate</td> +<td></td> +<td>If you need to manage your permission with a custom policy, you can provide a policy FQCN.</td> +</tr> +</tbody> +</table> +<p>The definition key (<code>sheet</code>, <code>intel</code>, <code>planetary</code> in the upper sample) will be used as permission unique identifier by the system. This is the one stored in the database, together with scope.</p> +<p><img alt="Permission Structure" src="../../img/permissions_structure.png" /></p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>By default, if no gate are provided, those shipped in core will be used according to this pattern :</p> +<ul> +<li>character scope: CharacterPolicy, this will require an instance of CharacterInfo to be used in your checks</li> +<li>corporation scope: CorporationPolicy, this will require an instance of CorporationInfo to be used in your checks</li> +<li>anything else: GlobalPolicy</li> +</ul> +<p>You'll find policy sample at <a href="https://github.com/eveseat/web/tree/master/src/Acl/Policies">this location</a>.</p> +<p>In SeAT 4, a permission is made of a scope and an ability. The ability is defined by the permissions configuration file and the scope is defined on registration.</p> +</div> +<p>This config file is then loaded from your app service provider as below:</p> +<div class="language-php highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="x"> $this->registerPermissions(__DIR__ . '/Config/Permissions/package.permissions.php', 'package');</span> +</span></code></pre></div> +<h2 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h2> +<p>For our API package, we have a database requirement. We need to store api tokens and the ip address that is allowed to use them. We are also going to store an access log (based on the config setting). We create migrations and models just like you would for a base Laravel 6 application. The only thing to remember is that your migrations for your package must be published (and specified in your service provider).</p> +<p>Registering these migrations looks like the following:</p> +<div class="language-php highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="x">$this->loadMigrationsFrom(__DIR__ . '/database/migrations/');</span> +</span></code></pre></div> +<h2 id="jobs-schedules">Jobs & Schedules<a class="headerlink" href="#jobs-schedules" title="Permanent link">¶</a></h2> +<p>Many packages need to run certain actions in a regular interval. For example, a mining tax plugin might want to calculate taxes once a day. This can be done with the job queue and the schedule system.</p> +<p>First, create your job containing the logic you want to run on a schedule. You can refer to the <a href="https://laravel.com/docs/10.x/queues">laravel docs</a> for this.</p> +<p>Next, create an artisan command that launches your job. Again, you can refer to the <a href="https://laravel.com/docs/10.x/artisan">laravel docs</a> for this.</p> +<p>In a last step, we create a database seeder that adds your command to the schedule. In your <code>database/seeders/</code> directory, create a class that extends from <code>\Seat\Services\Seeding\AbstractScheduleSeeder</code>. +The required <code>getSchedules()</code> function should return an array describing the command you wish to schedule, according to the following format: +<div class="language-php highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="x">public function getSchedules(): array</span> +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="x">{</span> +</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="x"> return [</span> +</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="x"> [ </span> +</span><span id="__span-13-5"><a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a><span class="x"> 'command' => 'horizon:snapshot', // your artisan command</span> +</span><span id="__span-13-6"><a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a><span class="x"> 'expression' => '*/5 * * * *', // this is a cron expression describing how often your command should be run</span> +</span><span id="__span-13-7"><a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a><span class="x"> 'allow_overlap' => false,</span> +</span><span id="__span-13-8"><a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a><span class="x"> 'allow_maintenance' => false,</span> +</span><span id="__span-13-9"><a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a><span class="x"> 'ping_before' => null,</span> +</span><span id="__span-13-10"><a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a><span class="x"> 'ping_after' => null,</span> +</span><span id="__span-13-11"><a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a><span class="x"> ],</span> +</span><span id="__span-13-12"><a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a><span class="x"> [ </span> +</span><span id="__span-13-13"><a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a><span class="x"> 'command' => 'other:command',</span> +</span><span id="__span-13-14"><a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a><span class="x"> 'expression' => '*/5 * * * *',</span> +</span><span id="__span-13-15"><a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a><span class="x"> 'allow_overlap' => false,</span> +</span><span id="__span-13-16"><a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a><span class="x"> 'allow_maintenance' => false,</span> +</span><span id="__span-13-17"><a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a><span class="x"> 'ping_before' => null,</span> +</span><span id="__span-13-18"><a id="__codelineno-13-18" name="__codelineno-13-18" href="#__codelineno-13-18"></a><span class="x"> 'ping_after' => null,</span> +</span><span id="__span-13-19"><a id="__codelineno-13-19" name="__codelineno-13-19" href="#__codelineno-13-19"></a><span class="x"> ],</span> +</span><span id="__span-13-20"><a id="__codelineno-13-20" name="__codelineno-13-20" href="#__codelineno-13-20"></a><span class="x"> ];</span> +</span><span id="__span-13-21"><a id="__codelineno-13-21" name="__codelineno-13-21" href="#__codelineno-13-21"></a><span class="x">}</span> +</span></code></pre></div></p> +<p>You can let the <code>getDeprecatedSchedules()</code> function return an empty array for now.</p> +<p>Lastly, register your seeder in your service provider's <code>register()</code> method using +<div class="language-php highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="x">$this->registerDatabaseSeeders(MyScheduleSeeder::class);</span> +</span></code></pre></div></p> +<p>When you restart the stack, the seeder should add the command to the schedule. For testing, it might also be useful to run the seeder manually using +<code>` +php artisan db:seed --class=Seat\\Services\\Database\\Seeders\\PluginDatabaseSeeder</code></p> +<h2 id="releasing-the-plugin">Releasing the plugin<a class="headerlink" href="#releasing-the-plugin" title="Permanent link">¶</a></h2> +<p>The usual setup is to host the code on github and distribute the code via <a href="https://packagist.org/">packagist</a>. +When you submit your plugin on packagist, it will be installable like the other plugins by adding <code><vendor>/<package></code> to the appropriate section of your <code>.env</code> file.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/seat_api/index.html b/developer_guides/seat_api/index.html new file mode 100644 index 00000000..1b296938 --- /dev/null +++ b/developer_guides/seat_api/index.html @@ -0,0 +1,1467 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/seat_api/"> + + + <link rel="prev" href="../updating_plugins/"> + + + <link rel="next" href="../../styling/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>SeAT API - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#introduction" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + SeAT API + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + SeAT API + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + SeAT API + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#authentication" class="md-nav__link"> + Authentication + </a> + +</li> + + <li class="md-nav__item"> + <a href="#content-type" class="md-nav__link"> + Content-Type + </a> + +</li> + + <li class="md-nav__item"> + <a href="#errors" class="md-nav__link"> + Errors + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#definitions" class="md-nav__link"> + Definitions + </a> + +</li> + + <li class="md-nav__item"> + <a href="#authentication" class="md-nav__link"> + Authentication + </a> + +</li> + + <li class="md-nav__item"> + <a href="#content-type" class="md-nav__link"> + Content-Type + </a> + +</li> + + <li class="md-nav__item"> + <a href="#errors" class="md-nav__link"> + Errors + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h1> +<p>SeAT has a REST API. Endpoints are protected by an access token that is limited by IP address. For every IP address that wants to make API requests to SeAT, a unique token is required. API Tokens have no concept of ACL's. The API should primarily be used for integrations with other systems.</p> +<h2 id="definitions">Definitions<a class="headerlink" href="#definitions" title="Permanent link">¶</a></h2> +<p>Currently, all API endpoints live at <code><seat url>/api/<version></code> where <code><seat url></code> is the full url to your SeAT instance and <code><version></code> is the API version you wish to interact with.</p> +<p>Since SeAT 3.0, API documentation is generated from source code annotations and presented via a Swagger UI. As a result, endpoint documentation is now directly available on your instance at the following address <code><seat url>/api/documentation</code>. A link to the documentation is also provided on the API key management page available to users with the Superuser role.</p> +<div class="admonition warning"> +<p class="admonition-title">Swagger JSON</p> +<p>If you get an error when viewing the API documentation that complains about a file called <code>api-docs.json</code>, make sure that you ran the <code>php artisan l5-swagger:generate</code> command as part of the installation and upgrade routines.</p> +</div> +<h2 id="authentication">Authentication<a class="headerlink" href="#authentication" title="Permanent link">¶</a></h2> +<p>Authentication to the SeAT API is done via a <code>X-Token</code> header. A token may be obtained by browsing to the API settings page in the SeAT WebUI and generating one. A sample request using <code>curl</code> with an authentication token can be seen below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-0-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-0-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-0-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-0-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-0-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-0-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-0-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-0-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-0-10">10</a></span> +<span class="normal"><a href="#__codelineno-0-11">11</a></span> +<span class="normal"><a href="#__codelineno-0-12">12</a></span> +<span class="normal"><a href="#__codelineno-0-13">13</a></span> +<span class="normal"><a href="#__codelineno-0-14">14</a></span> +<span class="normal"><a href="#__codelineno-0-15">15</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>$<span class="w"> </span>curl<span class="w"> </span>-X<span class="w"> </span>GET<span class="w"> </span>-H<span class="w"> </span><span class="s2">"X-Token:123456"</span><span class="w"> </span>-H<span class="w"> </span><span class="s2">"Accept: application/json"</span><span class="w"> </span>http://localhost:8000/api/v1/key +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>*<span class="w"> </span>Trying<span class="w"> </span>::1... +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a>*<span class="w"> </span>Connected<span class="w"> </span>to<span class="w"> </span>localhost<span class="w"> </span><span class="o">(</span>::1<span class="o">)</span><span class="w"> </span>port<span class="w"> </span><span class="m">8000</span><span class="w"> </span><span class="o">(</span><span class="c1">#0)</span> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a>><span class="w"> </span>GET<span class="w"> </span>/api/v1/key<span class="w"> </span>HTTP/1.1 +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a>><span class="w"> </span>Host:<span class="w"> </span>localhost:8000 +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a>><span class="w"> </span>User-Agent:<span class="w"> </span>curl/7.43.0 +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a>><span class="w"> </span>Accept:<span class="w"> </span>application/json +</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a>><span class="w"> </span>X-Token:123456 +</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a>> +</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><<span class="w"> </span>HTTP/1.1<span class="w"> </span><span class="m">200</span><span class="w"> </span>OK +</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a><<span class="w"> </span>Host:<span class="w"> </span>localhost:8000 +</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12"></a><<span class="w"> </span>Connection:<span class="w"> </span>close +</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13"></a><<span class="w"> </span>Cache-Control:<span class="w"> </span>no-cache +</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14"></a><<span class="w"> </span>Date:<span class="w"> </span>Sat,<span class="w"> </span><span class="m">28</span><span class="w"> </span>Nov<span class="w"> </span><span class="m">2015</span><span class="w"> </span><span class="m">22</span>:27:12<span class="w"> </span>GMT +</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15"></a><<span class="w"> </span>Content-Type:<span class="w"> </span>application/json +</span></code></pre></div></td></tr></table></div> +<h2 id="content-type">Content-Type<a class="headerlink" href="#content-type" title="Permanent link">¶</a></h2> +<p>Make sure you specify the Accepted content-type header as <code>application/json</code>. When using <code>cURL</code>, you can specify it with <code>-H</code></p> +<p>Example:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>$<span class="w"> </span>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>https://seat.testsite.local/api/v1/key<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Accept: application/json"</span><span class="w"> </span>-H<span class="w"> </span><span class="s2">"X-Token: L3SxgdX4XUw6pVWVSCftgsh16eAbBF3D"</span><span class="w"> </span>-d<span class="w"> </span><span class="s2">"key_id=123&v_code=123"</span> +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a><span class="o">{</span><span class="s2">"v_code"</span>:<span class="o">[</span><span class="s2">"The v code must be 64 characters."</span><span class="o">]}</span> +</span></code></pre></div></td></tr></table></div> +<p>If you don't do this, the API will respond with a redirect and not give you the expected content.</p> +<h2 id="errors">Errors<a class="headerlink" href="#errors" title="Permanent link">¶</a></h2> +<p>All SeAT API responses will include the appropriate HTTP response codes. You should check this for error handling purposes. Some sample response codes could be:</p> +<table> +<thead> +<tr> +<th>Code</th> +<th>Status</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td>200</td> +<td>OK</td> +<td>The request was successful.</td> +</tr> +<tr> +<td>404</td> +<td>Not Found</td> +<td>The requested endpoint could not be found.</td> +</tr> +<tr> +<td>422</td> +<td>Unprocessable Entity</td> +<td>Typically, input validation has failed. The response json should contain the errors.</td> +</tr> +<tr> +<td>500</td> +<td>Internal Server Error</td> +<td>Something bad has happened. Check the server and Laravel log files for more details.</td> +</tr> +</tbody> +</table> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/developer_guides/updating_plugins/index.html b/developer_guides/updating_plugins/index.html new file mode 100644 index 00000000..ec5ed291 --- /dev/null +++ b/developer_guides/updating_plugins/index.html @@ -0,0 +1,1444 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/developer_guides/updating_plugins/"> + + + <link rel="prev" href="../notifications_implementation/"> + + + <link rel="next" href="../seat_api/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Updating Plugins - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#updating-plugins" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Updating Plugins + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" checked> + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="true"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Updating Plugins + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Updating Plugins + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#from-seat-4" class="md-nav__link"> + From SeAT 4 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#from-seat-3" class="md-nav__link"> + From SeAT 3 + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#from-seat-4" class="md-nav__link"> + From SeAT 4 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#from-seat-3" class="md-nav__link"> + From SeAT 3 + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="updating-plugins">Updating Plugins<a class="headerlink" href="#updating-plugins" title="Permanent link">¶</a></h1> +<p>This page aims to help with porting a SeAT plugin to a newer version of seat.</p> +<h2 id="from-seat-4">From SeAT 4<a class="headerlink" href="#from-seat-4" title="Permanent link">¶</a></h2> +<p>SeAT 5 mainly upgrades the php and laravel version as well as all dependencies to their newest version. However, there are a few other breaking changes that can't be ignored.</p> +<ul> +<li>PHP 8.2: SeAT now runs on php 8.2, enabling new features like enums and better type hinting, but also breaking a few things.</li> +<li>Route Prefixing: All routes from the seat core start with <code>seatcore::</code>. For example, <code>notifications.integrations.list</code> turns into <code>seatcore::notifications.integrations.list</code>. If your plugin uses routes pointing to the seat core, you will have to update them.</li> +<li>Models: With SeAT 5, the <code>services</code> packages starts to ship a <code>ExtensibleModel</code> class. Plugins can inject relation into these models, fo example from an eveapi model to a plugin model. + It is recommended that all models start extending from <code>\Seat\Services\Models\ExtensibleModel</code>. It is enough to just switch from <code>MyClass extend Model</code> to <code>MyClass extends ExtensibleModel</code></li> +<li>Notifications: All notifications from SeAT 4 continue to work, but by updating them you can enable more features like discord pings. See the <a href="../notifications_implementation/">notifications guide</a> for more details.</li> +<li>The <code>Seat\Eveapi\Jobs\Middleware\WithoutOverlapping</code> job middleware backport is now provided by laravel and got removed from the SeAT core. Use <code>Illuminate\Queue\Middleware\WithoutOverlapping</code> instead. Just swapping the import should be enough, as they are compatible.</li> +<li>Some, but not all ways of exporting data from DataTables are broken. Just check whether they work and fix if required.</li> +<li>There are a few minor breaking changes between Laravel 6 and 10:</li> +<li><code>MyJob::dispatchNow()</code> got replaced with <code>MyJob::dispatchSync()</code></li> +<li>For a full list, head over to the <a href="https://laravel.com/docs/10.x/upgrade">laravel documentation</a>.</li> +</ul> +<h2 id="from-seat-3">From SeAT 3<a class="headerlink" href="#from-seat-3" title="Permanent link">¶</a></h2> +<p>If you're upgrading a SeAT 3.x plugin, the cheat sheet bellow will probably helps you.</p> +<table> +<thead> +<tr> +<th>SeAT 3.x</th> +<th>SeAT 4.x</th> +<th>Purpose</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>auth()->user()</code></td> +<td><code>auth()->user()</code></td> +<td>Retrieve the currently authenticated user.</td> +</tr> +<tr> +<td><code>auth()->user()->group->main_character</code></td> +<td><code>auth()->user()->main_character</code></td> +<td>Retrieve the main character from the currently authenticated user.</td> +</tr> +<tr> +<td><code>auth()->user()->group->main_character->name</code></td> +<td><code>auth()->user()->name</code></td> +<td>Retrieve the main character name from the currently authenticated user.</td> +</tr> +<tr> +<td><code>auth()->user()->group->characters</code></td> +<td><code>auth()->user()->characters</code></td> +<td>Retrieve all characters from the currently authenticated user.</td> +</tr> +<tr> +<td><code>auth()->user()->refresh_token</code></td> +<td><code>CharacterInfo()->refresh_token</code></td> +<td>Retrieve the refresh token attached to a character.</td> +</tr> +<tr> +<td><code>auth()->user()->group->refresh_tokens</code></td> +<td><code>auth()->user()->refresh_tokens</code></td> +<td>Retrieve all refresh tokens attached to authenticated user.</td> +</tr> +</tbody> +</table> +<p>Also, if you need it, a table called <code>mig_groups</code> is available in database containing a list of all converted group into standalone user. +This table will stay here until next SeAT major update.</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Purpose</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>group_id</code></td> +<td>The unique ID from SeAT 3 user group</td> +</tr> +<tr> +<td><code>old_user_id</code></td> +<td>The unique ID from SeAT 3 user (match to Character ID)</td> +</tr> +<tr> +<td><code>new_user_id</code></td> +<td>The unique ID from SeAT 4 user</td> +</tr> +<tr> +<td><code>main_character_id</code></td> +<td>The SeAT 3 registered main character ID - or random from the User Group if none were set</td> +</tr> +</tbody> +</table> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/img/authorization.png b/img/authorization.png new file mode 100644 index 0000000000000000000000000000000000000000..a18cfea8724c8f2e41957f38ad90fb1cb4933764 GIT binary patch literal 67011 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 literal 0 HcmV?d00001 diff --git a/img/authorization_members.png b/img/authorization_members.png new file mode 100644 index 0000000000000000000000000000000000000000..ad81a6a9911a01d9b0885eea7ae2b497890a75b9 GIT binary patch literal 70517 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 literal 0 HcmV?d00001 diff --git a/img/authorization_permissions.png b/img/authorization_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..30d56a3c91886725d2012301b50726ce3d601d14 GIT binary patch literal 103814 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ČLl-p>5q&9=0sbKOpZ+p7>X>Y#cN-ypINcL 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 literal 0 HcmV?d00001 diff --git a/img/customized-signin-page.png b/img/customized-signin-page.png new file mode 100644 index 0000000000000000000000000000000000000000..7272c49db20bfcd947a673ff6580ba397b18f40b GIT binary patch literal 1595357 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�q~_gC`*?7d>w<wyF*Cve_fQ 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	q&Az&eGtcu!}FwPLRZoy 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�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Þuu&;HfWthKD}#Ax=N_I!ZGK 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,b=uHdyqz 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
yqtZPli0?ur45-Gxgy9fXl)~=FSkPs2T?IZM1GL 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⁢^f^={G5GbdJ!<yRyU?ui1ImdyJtZ*G<{=N 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≻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%0A?A3b zLhLJWWkzS%3b=sH&uQe{Un4GeCIG~wcZ;trpAVgWWF1u)ge}R7QgL#1=KVU9u>zq0 z{u{p5{aVN_>eJ6UY5Szr`ntG*pf_g=vw?e*3kH+iSuz!lCC#nLhZtE;nu3is7ms5r zf5ds;O{6MClggY}Pehn^_pg(JQ#2%)<(9&YAUZ;yaz#SP6|-zExz)M?=qVGN<ng_S zfKxteJfqC~A-5K3v22y%k4od%zb8K%g%2BLmz!#EU6N|5!W(>iiV6Zk>K=O9<Gg$j z_3%MwQ~vw=6nV`NTdXgG7%coVda`jpK<ak_Zo>OHa8|SG&Y~3Ym)F01hSVxn<?qCj zF*1MRX_0v|QtD?}adi!AK(9Mnaq^A*V(5+g4r}QR?Y}S_N?-U7sHH5*d*AY1p*bx_ z{7NZvE<LDCabJaKgnZVm8;$T8ek;DPP&Iejvu3Zm!d2l3X3ab!|B;nC`&YhtYauJX z?=9!(Uu9*x)62x;#-3kqq~fxU<GiD4Uh2ROo_mWtfbX<=8Xj_Pe!DY8X43r(r73?@ zFh}#Ec%Q>gK{Za+{7Z0;jF@A{-Cf25H}vyJ1R>Umnfiu%*k~urINhEeM!YMZrZ+hk zEK6^_WCSXpW`Mjk%F?Ry<U^@%?go7CSuR(O|DM^;Q3MK|C^8ISCG>AhYhAqbwNNGK z>3>zw9crbc84NJ5Sju2fZVskN05K2u*`OWhSO!Jae}#q|aDg?dN3@qqleGev2m3`1 zQV)?y%3e&{LY&5(j?@`i+CN-ZKmUzECLMqmb}9UNCxxCiu0+eQAaBe$^dY})u)4_Q z@aOg;`x9t_+o!<T<Z9NXWioY_>r$iIPGMzSKaiG+#q>=GAVn^gW4NS2PuidSF|NY2 zz{A=vjsHHoe#p7X4hvdlWs+P<`o2}IeA71$Gd%k&AS<yq<0S&3{lQU__b!w+TlCJo zn+{yzkL^;9KhjsQGz<H6X<5jfM?i7<_?H~HDq`j#$_2P;d5AW0%{>rN!5{ZhN<nOD zRm&n_s4p=1Q3a{LQjyFXM6!ik^$rbTrDEjNd4x}{Q>gTu0p6x&n>Jfhb{J3h(FObf z$t(F{|H}ZUj$LAXNN4VnAjUV(i)s^O0q3mBxIZR`R|*`ClW+{n5kCF{f2@*8G^C$T zM78{m`ortSq-UlFX*Vw;FtUN;7HL9{ndxZ(B0O+<;YER^UJHiQws4nJ$c}>rN3<*# zWtiA3{<9`+`59&1STjWMhIH~v5|~8a{UGII(SfFpq*Zu;O}55%^f+h>!xXut4ysPN z=q)R~-;`My8WJ56YpcYwkb~v8sX2O{k1Z;dE;rPMYurn@I8iXVnwdylK)8-<G<v&9 zxpSyY+KX*U@WI_*cPndiTvI(eX|k!;>Nq>mpV{wIG>j3(laUie)n(^>dJ;yxFMC|4 zF==I2)0qp3F<7F{xI&L@7nDx>wvFCB@TwuaFux)cPNU=$#d2`*Z2?zqD)dl>o19QM z$O=+&npTZn9yomdiih`_4fJWbZn3rGO#)gW?<O3KZ+|`%+8)sf4U4`adlq&O;;&t| zGqW#37({_-s&HHuDy?i)KEi}9QMYw^?Vw<v;ZFI>lj8-d&su57Jm+Y|z%wbrt9bPK zrA30*W!<v(&-!C)qLA&A8ae&RktoG@a3UyEyp-%+dtkSe?O=6DOSf#VYMs%1TNBv= zzuxEcGIzi=)F!-p)2L#>M!Efi$vGjk<r{K&T6hyk5bK!v^29Y;V!6geYyknaCz*?o z)vzVe0Vnv9n%<Mlt!z>+YB8)mn%i$28<(-Ny{cfW{}9s5DOtIC1ps#mJ3(tdRqT4( za<2$|1wCqXI^cKz`F0M$75i~@0bGI4B6XJ;dxPVy@vx9hHuwAUor;~Xg~vV-2voOD z^s``pV{Ni4o)V*kgudOMjRQ1iI8Wr}%J1S+pFqy>pPGU9jv^*snb!u&5&dRO;5To} zZ2<@XfzstRldHH_*I5JPo3+CpZ9*(vHGw)m_M91PEN3EU)rL0SrEC(JS4v0nYWa0} zHL>JAsf>N2sXI6!F_p!#cY{b2Kxi>6Nq@e%r1v4z{(b$o<HF6F$u9p#Sf`COY#Gtz zYW2Q-*h6=+i0-6MsZuF$HcotCo9^kjnSU33u{mu<mlas0ttyYn!bj)x<h&>APSdTR z-@)B&g?Q(|!?KesXZ%Jkma8zHUoPl2SfA2`C@oOCAsn{4YeW#-O91B_|MF6QSzz%* z)gWAQ$&)n%<6R^~qO$MXc95XH(GNV%x?YtTH4-tvc|RO-hqA*j_W|V{99-=}x*E_* zw4kwHG-zG+{e}bG6EBti){wMTBULH5XBwIGkmtu?i%tgsx_mgDa2)rWQ`t~2%ZxII z;=0y4?tmil^q{AvdOKmJdR-wp8FpfuO>@7&V|rEiR9@XDjUV^a{zk+>XjAJO;s^e| zM*~U9TSalRzs9~<JN{c!-sRudR%v;0dRP%;yS*CBvVjN??Gxc#T+X+;A&+Zz?((6S zx*N=NA#eM>s0O7wv+32H?2Yp`1vXG8)#g&`D;Hl)UntSBQE#j{`P%FciT1xx7EAO0 zu3ZDWZx<A!lU`=OT_+Z3RN1p3f&qenHdh?ke|ZJ4iEjrW>{E=b?@0$Sf{ic1M)u>X zr_MWr47x0At6FZIR#L>I%rfYd<-ulSEw;zC<o>U6WZlZ5zpnPm%cjgU5H2e9+$5qy zKHmzN#ooIL5S}`gKltXCeEwQ>$A_|cQ-UUouA(K&R(Y08aR|5XZCcdGgilJcf8UHX z={^h`)%hW6Glm{nhP8g^ybUKKU+FDa5P4;r3i&|iiHnav=BQb`h`(dawACn^$U<&S zbYa=Mlpap+>?k%+Sdk{(Rp`BkbDO5gZs|gf5WLF<)3BQM?v+Q1zTtEp1&X>nrWq<Z z@jC*jihoFCLdnk03r0sjwPe4T(6_-vKfqD=4D{2{{2ALX50_@Y1B49YAMe$1bj%^= zSJ1n!u!%`ibU)Edl$>*}9s6v>pX|z1PCob67;iK=n?@*s-XLrD8eJp+EY$XI_i9m; zD;UQx^-)djwRd7gUTs3iFRE$nN&65=?+E29*E{nr4Mx`I8f>(V2hqzc!4x?7^c4q7 z$mb4f^}YU`nvXjYhS^+dAd{I7NJxS0D_96Bfdwu%HRgy9{3Pn*#@mrO0g3sg^PMaG zyaG~S9W)R^^Fqx2;UUD3<RRR3s&${$t%YKdL_Cr}l{#Ky(DRZDb@lGk-g-~;V2l5S z)hCW2j)OMh(XrRBC3yoLd2<3*Leg-(*1S(|NoS}vNEyO)D#GsNG(}xNKSms}_T6_D zc@sVSOw<Kh-s#MwzLg*WuLqmJQ<}wR+W5ykpKvqe79?iH)Z0NLhHiup*+jIh>`6<! zJ4^Rd$|g>HD#cybv>%zcNR`W{G{YBedP2cSstz`RiU-PdQ!2(oQhwgXKnoTe^l#(X zl2~N$&;2XVuXp3Yc_$?<O4SFXiG~niNp?tK?U5k_7x65x?mMZj5XLE;ejB8|6UY{> z9Xm`s2Qn%r`C+U&_?<2eSst|l1VGs{{AMtI&!T<mBWUrVEj{~IWl2>m!{dM`X#VM+ z&5eryG%r3Q4~WuHmIB-$n;@KDQ5V{@TL3K>lC?UhMoNwg{yRVHoI^PsX*$!+w#bs? z_q>T~qD8Z;h;FIUQ@>GE9GVLTKHItxEN~db#M;PyvrmbFBIfV%OY2apc~Z=!1IcRn z#r#tXRk~RJz68EM{?%Z__6eE)*+sh=**N1=-jV=s|4Y+|ksNo<{+^n$%;8vG)8ln_ z)7BjSXBX}=Bz9{}iMFW?YsYH_JU8j;{U6y~1&WL9s1gjbzv^wg`%3<sH{<4^-e;QJ zd~X#i;uzI|N{Id-Mks<bSa!iQ{4`%qw0~LJ?!-6rrg&heBJ_e4QvuAOt<D2q-dr$I zE~q`i*bqeTXflEJI*aicUDjK7tmKHE<DH-xb<~*pyI>@#YB(hvQWc?l6)Ahyd*mL} z4D;**exvsaH_3_0r9R*ZoSv)?7?5+Ex^~P(wM)(#+m;N8_If+PA0~uu$5W;@-S7|~ ztjUPYO!IxliS*!Z$Qvv-qxraJL^jjsVBMpPLhAD_c$l)&<2lmI?d3vZQGpW$g4f+Z zkOXZxax6sN$loW&_6~`@z47mYPb%C0$T85e7Tz=OdpFSi#?zlD)0!6Bg^%S?e|si& z^w_NJQv$F5`K_{OMXUak8>$a8WnQy_EfG^e)NG8@RVqBT=17{UwIc_q;>P#PAvli@ zW!93)&F%HJujUR`{|Fv`em_N_>sEp5<tE!5zI9mjoa6UPWkR0e&CO!J^A+oSe6n|> zBoE=Uvia<6K~Vnz?-HsZ83dxi=xN@2IQz769)fQ&>MkaG$k`f}H=F&z%^@0jd+yd@ zpB<!j*u3jSLy(1qpZQVCS5}5I<SV{2h8@n<gp1vhnE(y|<F?85h_u|jZD)B-`3{nf zoTtS6=btb<Y(r82wDtR>u`P!lP9%C1n510NvVq()ho9t-;SM0$z(xRv-`x7UE)4S| zr-h)=&zLm9FTosb$0NB`gM5)Ka1y;ClqA=aAGu3=R)#%@+MH#x8^tE%6GM$aobEUT zV^S^0;LIRjLYdE^%|WJ1F}U{NBcL~Zu0m#68FJG#BSA#nFWi`rV?qWW9BrZ2-qIkb ztKTJjhNOb;IQF}7o4{MY5X~^4rJ0m*n-p@o8*8dNGd7&rt%oU+-B#e6;sxZq5pFAt zgW}swUlLXg(p{nyc^>LA{*o7KQsj2^XFjtqO?){xd8`xTx=KRaCyDV5Pw{j>r=Tp7 z+sLyjs3QVx9+I2o<2XaSY-++0ZF$zP|3*FC|NK$&z!MT*3ZhJ05m}=W%ZWaiCBzXH zkvsZWQxDid=k3H_e_?@wfGZ)~(2l{FNV_B~eVJm;|M9hO)j4203vS}ZoZhyZ;<`aR z+A^}s;<<qN2*z477aBZoE2PF$M^oXz{bR?6sgk#Bh86UpD*6CJtSn3FhP{dhhFD!d znR4OLx`W4HTTW5UEx>q=K3-i>l-$moBL@}M?)83?68k9rBGuaQ%o9@7{};F$1DjzC zc!mR*jS0XxE!ckM)|QXc!t*aRaRO}c8ndQs5uAsNWy(Q?T1rt_3&><BA<#D^Nc#xA zy$0m5ohSGL&{-`tB4O@r3!}~#U;(^=F^-0IT1*p?&}kP1EbDJPoKD-56y?s>;5e|K zYnZlrz2cAUX-;hwy~4fy$~h|I>QSS^)m+JVmOvd#cvU-Og#wwl<%#7gs@->k9jBwZ zL6(v~SB`k8n3xM4jRf4f4>7FuLR9X_>K_;Md_Y>u##Ik*Oz+`7^&~gN`%U3&0muDT zzY9eIi~6Z-J0HnC6tU4B%KqWCa7OZ%Nre`W^ts=j_}P8&naF{;Aw28>B%a|Pfl;@n z0$8iqUboVmRvrb0z8zw-WAL~u4h@FVup~x&MgH>hfO^8Xp;>*_;<03jbte(k@xy6* zv$kJKn!4|P(t#avc06h=vylbg|IvR%I4dF2Lf`NnCya)=K4vb;sWRb)rf<ii&hc60 z$x~I>jo*I;>{}_{H4ScjmHMI6Mv0rz&Mz{=>VyTa8{FpN)_qL00xDeXy7qU6C&>&W zIekB$S|SLj^n<IO_|rkoupnj`Q&Ga5pGTN1dJ?CL)nJOIe~;5e6UlujaQ;MoUtsX< z_WIu4i2>9-k0&_}eZaRK*0?`YJjmQ&_cpu#3$yMyPd^mjen-i3Fo}{Dl2mKK1)6_^ z)@#j&^Zl3ZCs61Peoz;wS|5(MHz6Yx?7OqMO~D9%r!KHu<1a$dcDHrX(~5h-H+4HB zn4AJ*0#JaxxrWxkIY02eE@}bVHGU^)cH_g=cxmPQWWB-dSuV}={p*-v{R#!}=!;F) zES9x7XH&^^){m4we84&f{3gt10Crw?;+e7rESKk}r|dATHFpZ8^h0^6jF(ZAqFo|{ zedY!`^kdfifZd(MmB=^%MQN;K#a6?iO(NU&W?99xdJB?LQ8|EqVZwbDS#i}b9!sN@ zODqUBTpCM!vSf0wnUGfYt7yUi$iBttq>C<?&1~+Ru1lTugr6N7^7N{vC3#mXOA(&S zi=l?jSPid#)s$Iyx8yay`(E5+qD4N=rl&N!s>JR8)b_A0VR(C@H&-~}3XGfgw6aeL zRVjMqTnnh1&v_C@*Y^#f8~O)FD|Do)>1l*G)P?*LRU#nZRBUU0Q#kil<E?t37(*iM z(-`0~RPd)r*fSUjEEt05$z@t)gES&dK*`<(Sz6cb0p_Y!<=Dv03V!5Bd#s}&FRC=J zS^fDB*P;KaXWIu`l5_}er&lY;CdE77U;ACumQxk6E{P$0T-*j+%hv8vT=6ER)kG_i zVI3`W6(Pra$j|I#-4mg)j0rv2G|#z!Z%#Yk8vZt|52CR?wN|>{9RWW9%U+`8!V^)O z^t*|#az@+Q_(mp3Q9f=;MjVs-GxdAyh1UW5^%A+JzZvA4`qqM*V}z`!`UkNlLy2cJ z+cLs|V(%gLqytom>UZg~t<YLu5)>VV29F~Qx`%Ot&5&Zx%nduCS-)&I6LOycS#e$K zC*ymjJ?(DS0hl9OK?}9lPniC+*NfPd<}90#(S$Ja?KBx~w}jUO8fC2h8`zw@=%7w) zr$~1Nf5vVRN1(rD8u;m?yT2N7Gj68TrY@TYJtq;HWav(L#hy4<$B)@Z*`+895YB*F zX~c}nLCNj7;^og3ZdkX4;LWi2If90~4N!?q^4PnpyBusM$fbt~C;^CF!+eOWt76(` z5W(l5=<@1qv?vh}qtW^NpAGY=brsoJMo!Oli)v6gp;|>#uG5FjlbBQFkNtRcZ)|_N zH(1+SY3kzjuY~*DT91rB`AW7T$mSxH3#*>#igN340q$qOVH;9--0bpW$mN;5v?G&J zQ%-Yz&4A*}nS~|o{8JaH1M48C@fw^isII}hEzMsXti5z&IufxMeh}`3ACbb2ha1c= zzyTTq*E|)r)7hqmGOtNxS=AI+iL>i)FyD1#GG<Uda&%%Y3=1lm_6#TJYHB9oY{Y=# zIZ?sS_~A2+Uy3YJ3pkVd1!!&g(G2U$+SXikTa0qpH#hhXXs^Ch!fNKxBu<uD%L4e9 zV$OzOLxvx<A`vr>pr5d_42qT>Pk4c-%}pqd@xMcGr8B8g>$^aKaP{r5tFD~Bu+V=! zht;3?up?^o$|)V8f9N(CDej$SIcB}({aLHPCKw|KmhIO4Lj-@CgHrC;mJx&q96nDM zt(u862Q#*@M+qfv-zAYg4F*i_)Fg^Wv2>~Z%<$Ouyq28xtS>(+CI*`jUs8}&<aytL zKwx?ep95X!c$bn5<w26km)eE37rzB<G`4S6%tmbc5}rpDokVcS9X6X2<dbBF15gh- zh1>m5)VvPn7#V!YIAtlnv<A$+1u<%YIC~kO?Ap(g*dMTRWYNTfFaf|Qn=1mRrQDSj zZ;a>HhfG>q8PK&+n~w;^xh3bxz70kR#r7@u&DE#Y<YV9BO88Tx@`0(W#R&y&^RNH; z=it_6ir=l92|E@e%eBTGyUF<HWEk0LpKznre7UiH@{w;(0u|EhKrdvi3-JPp(ELvR zRmb6p*QE@WBTTxzNwXe9K@hK7c{es8nZ#;&abCd2${ReWye=QI$$r2=IsnOyJ8C7F zRVG}_6zpLozkbf4db!(BmexaZ&;FOpmf}FseoNISk-b^M<$k#8V#cM#y4U&s+z&SF z<H;UF?}<3`R$44&3}=U0Z07~SPWm+#_2uT{ngf|P3-u6bDDIW5yAs*#$sNEDP)y%^ zfBv-Yj@^C|gxiGU3Z%Y0Q*CQK3&?JZ7C6j3(jKb4hMi`{IA1j(z@|%@?UM~|<(-a^ zi0+GyK%xvbT@v@j(BqcLno^s{g++4hBS(lk`nApdZAOgX4~l3DXc<UIi+jR!CbH*o zG_m%enFJwx<W%lWazyW=kF?hGcfYY_-8JBRu(SWZ9^Wl>;fhaiJAdUfCowa#ay^_A zms_Ob1M6g@W1AK|&Mp$!!0A|5=7EaZ3Hc1$&MvPNeUF=mreuvptfJnEh(o`Ao6n>E zx?b13qm)|c@{5X3Xq3Jbd-cdqY@dIgrl9h!cpv)0(pv0!8-3khy79;nXtRtf%M+Fb z;zp{#@yI?PbTNP1W2wSvuCAjc$_<Y2*O<D%7kh8vL~@<3%g2TcHnelXovSM=lFEUY zO=zCZ!NU8l29Ns(*L+*Fv@e`Rl1`^@9B470DxkG;N0VmNMI69&gQwD)KP9#+-c;B( zTPx^s>yO?BcG$2(@(5P_xB`O?ZvE?LCHBpMnhF}0m98bn!~6wP#*67juL>AacLIz- z^e{%n2EFcZMEAJ0jCn12QYQsE=G>Il42lz~S#v)Mg=Xk;pR6nuXB}|W+ij;~M<yti zaWeMrI1zR!ib!n(D`IqLhWFd<(xb%5<1{!sp8tfR2%gPpvW@w-Gw5(}Jnyjcyo(K3 zMJS@BLFqr02Ca)k{AI)ibC*TN9dvC;?@tnGQ_pHy62!MdYl8plaSjM+YaWY$RA%q5 z1l;tXh&z_S@g2iusHJrpVIyt%)B5$Xh3Rjq;D!C;BMkfnDbSqG(>2dUJoLM3zMeR8 zi=1Q*hKF76@cA$r@dA<eDnkl#0Sj1`HE$+Osa;DQXrY|JrU*J9z@)7J&yUn>h}_Nh z_8Mqwd;QX@R$wFgTHS&@D^+1(@(VBe#J3u@Sh?SSqwGqai4}-l+nQm(3JrD3ZfH=9 zk!Y$&K^-@wa3Fq8M8Sq`jod>IfP8&Y{pZi}eFijx5g!~HbK8xm)ZgfNnEVq)<vctR zv}tE@tId9S4u;gONjuFzGHm`-HL-jDRTrmKD|XZzKa_7pvvD*3g9;AqL~6qQ&;yp_ zjbp-H)U;?t8Wnsqp0^eklt$V2hw?5F1EykiJ{0s?oi~t0yoB=k5J6lpLNGfno62Q3 zye31}hgkcID7u282emJzw_!JiEW%z*w{Y(=k195gXCKVDcdTw!i{(i1?(u0<@HE>@ znW*HRzF^`$u}~<^t3hYn)ySibVOU6<|GRJ1nmOH1;R=n^ooNDLhrZlW)V-{6JO9#{ zn7(I;e6YEDHl1L7#x4AUQ16*>)#9-Euqt?7BX+38qy265$YO{)FzLb?U!J(HdxbNq t5Tb8qM*|5RoTE*;t}bCj)g9EBzg()YfWxu!oqr(UrKe@6S)p$C>VHRMJ%<1Q literal 0 HcmV?d00001 diff --git a/img/moons_reporter.png b/img/moons_reporter.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec3284b7e172bf41a38c1b430cd8f0ee3f9c992 GIT binary patch literal 66094 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 N<3ZGc%KayQ`(I;`ZFK+u literal 0 HcmV?d00001 diff --git a/img/moons_reporter_details.png b/img/moons_reporter_details.png new file mode 100644 index 0000000000000000000000000000000000000000..49684989b170dfbf648a349937c371f6372d6605 GIT binary patch literal 59810 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�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�gH;LRdg7PrH=1+;2m{V`M2WE^OBY}G1Xn-5?CQ@ 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 LNkvXXu0mjfbrMWJ literal 0 HcmV?d00001 diff --git a/img/moons_reporter_import.png b/img/moons_reporter_import.png new file mode 100644 index 0000000000000000000000000000000000000000..92399e865355b29a61f7a50bd7ca90c7b7175105 GIT binary patch literal 41342 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 literal 0 HcmV?d00001 diff --git a/img/moons_reporter_search.png b/img/moons_reporter_search.png new file mode 100644 index 0000000000000000000000000000000000000000..33e05857240f883aef195aea15a6a2acc9873cda GIT binary patch literal 8589 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 literal 0 HcmV?d00001 diff --git a/img/permissions_structure.png b/img/permissions_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..117932cf88370038ff5b39d17ef201b7a5966571 GIT binary patch literal 98398 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 literal 0 HcmV?d00001 diff --git a/img/seat_jobs_flow.drawio b/img/seat_jobs_flow.drawio new file mode 100644 index 00000000..698d3b0f --- /dev/null +++ b/img/seat_jobs_flow.drawio @@ -0,0 +1 @@ +<mxfile host="app.diagrams.net" modified="2020-06-20T10:43:28.898Z" agent="5.0 (Windows)" etag="eyqcJyYYNw19TbFPkQKL" version="13.3.0"><diagram id="xpU8Qzh2EXYl8TWvfU0n" name="Page-1">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</diagram></mxfile> \ No newline at end of file diff --git a/img/seat_jobs_flow.png b/img/seat_jobs_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1e70fac7377158870960881a36e1fc650a40c11a GIT binary patch literal 57799 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 KYM#oKyZ;YPc}4XA literal 0 HcmV?d00001 diff --git a/img/squads_card_applications.png b/img/squads_card_applications.png new file mode 100644 index 0000000000000000000000000000000000000000..7273d3f26e060c0808063b3278d3c69fe6adba1a GIT binary patch literal 20767 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 Qbc1q;r>mdKI;Vst0EUMki2wiq literal 0 HcmV?d00001 diff --git a/img/squads_card_general.png b/img/squads_card_general.png new file mode 100644 index 0000000000000000000000000000000000000000..52e9fe91b3e342f2a2f4726b751259eb1eb8b09d GIT binary patch literal 92009 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 literal 0 HcmV?d00001 diff --git a/img/squads_card_members.png b/img/squads_card_members.png new file mode 100644 index 0000000000000000000000000000000000000000..b92baae50f29e7112cd5a60fbc7205138d4c3c3b GIT binary patch literal 62271 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 W@B7>(pmshC{wg47*8{)s3;zTVY@I{^ literal 0 HcmV?d00001 diff --git a/img/squads_card_roles.png b/img/squads_card_roles.png new file mode 100644 index 0000000000000000000000000000000000000000..33b4c422d06fe75617d475c9165b818a5116beaf GIT binary patch literal 13049 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 a3<CM;vH-8YetbE9I&s|g$C4l1fBru^e{EL) literal 0 HcmV?d00001 diff --git a/img/squads_create.png b/img/squads_create.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc10742d4500959e839c25f1412e922cc0b0d25 GIT binary patch literal 16353 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 literal 0 HcmV?d00001 diff --git a/img/squads_filters.png b/img/squads_filters.png new file mode 100644 index 0000000000000000000000000000000000000000..2b6d8908a2a0fd2ee4e7843ded732867f8580ec2 GIT binary patch literal 27322 zcmdSBd0bQ3mNtxKl~|>Kvtf)H6cq&nGDD)G0Y_96M1`PX5Sc_~2#FR|AP@*q5K$m1 zlL`_B1!W4z5CjDol$l5%Vwgh05Hi2#fZp<U-+ue;+kL-Ze}9OCoW0IId#|(B+RyXs z9d+`Ah1_pSzsbnR$Q`ykcv?ngDGc}*xO^G#m(B0~R0sZB;(OZSfJ|Pq3Jdt~v+Mrj z`(<Pbh$}>wegQuJdd<?#S4Kwu4ft=#`t3(<$jDr^I(%^dnIMM=F}~a>FpM5N2VF}G zo+ll@*WYbA&OroKRl%yiWG|8aw*3k!T2>nW=e{+!l@G@{8*ICzGncR26yy1`+TmOF zU2;epg>`POn|1DGl2&zL4sG~sx#<^I#pDnD2m3d@)j6=cgQWBnzpn{fg2--uYCO{M zH1x#T)X<#KfstuWkYYdDpW>A`hNIj2Unp~s=u(a);sopMwB1LuB|e!+M{cVh?%{k4 zJkWl3djKjplt8m&sanWsJz?EBE3`Wdd}~si6}u<TEoEK0Q)lh+r(sk1)f)V_myoSb z$t3l|w_i+LH5S@x2AH>>e5!EAes(qYc9Qr^NcB;NyJ^zLWJ{#v0BGfWZr6qa_+|G5 zi??}P*k<hzmQ@zIO!Ro>t3Bl?tJyVUW(0o$xbF4__x#<LF}0s=y+1Whw68;!2j!n; z#KuB*fmY1cJ%ANkAW#u4tPn{I+8BE<V{j?ZNc}1CvTyC&ExAJX`Iv3UJ7&Zt>mu;) zo>#-)ukMBEH{_9n_$?VpE2Gi7+_0{ot<i!mwSxTtb<*IsO}HM&!n163#yI7Je~UtI zf}<7;94auo96lZ`U5l@{3*Q1XbkmHUSgq{T3EUn6LtY|S0=9bY7s7SAHkC1?<x?6C zUW<RbeL1vtnIeIdl)bUCcG14xcl*KBF=&^6bD6XBmxGvtfVDQ8bqifSr{01mE#A|; zvA)4Ed}V#Z(ITlz*|&Zu#gWLCWzpGJ6k$NC+r^JB<HwZ{hsL(n-vT~n>~=FmIjq4r z%_}T^etu;yN=uN~&wA5|PSGk23LG*4Xa6+04jj0#SZ~osKbCV+<~%(sFab1x&;-WK zEFAx8`1E4GK7swZwRrcV%0!Zxw~DAH^RK&U=`D_#XCj;%ag?wc94(E&DHt-|Yd%SO zC`90U$GdD=jMtn99iiV35|=ODS!cm|Ppj(ultP9keZHivmnYiDT1w?FP29i6T-^a0 z#!wZny!}xTR)U1}&nP4B=Hb}%qjXKGBx@wYw(@f#E142<!uTYv0_?X#sG!L;^Fdz7 zz!kr8HeN;kw#k5r+7??XE3&PC`sx*D$klT#twFc#BSndD3$n&q_||Xscny!rey-hu z=5c2xiHTaYg&8Z(DwE_SOosY8$CnSq)<}0pG+3j><kNz->HA1r{Z-8H?aWw`#=ta& z<*Xg-9MX&wd$*wnPL-y})i<Ce3dpmsSAx!Fwiluf4egw^fT@RcK9EjcyCo8i=;Pn1 z$k7_MhQqISryW;<t%&;*Xr+Os*D#L)ZSH?v%a%j}Lz#x>5N0|?()#Bsr;F<`!?Nwr zRPP1n3F8&eq0+bp6K!d4Iv&^g0Jq7^|H3rwUHd43<d&X3IE&}zARnZyrMO>dDLV=^ z`C4lswPKavB-!oAkin^m7XI6$%%f5!(o!Lb{G0yQDsRc~=ZPAM9^#9Eq!*u(W)>uM zmA1QP3k!Mt>X|87a;lbD&U_!m5{dh?qFp)^jxQ0c-~qjDyT5^&i)&}cMK%Zr1PX2K zk$CNXpP}URPWuX;Y+C`+O)_tHp$V>o4YBcM!ns{#WU@mFF+QXPFD7QtxV)HXI5#eb ze5ZL=*t;Ta2}xAw5TAw?%==I*DUwtwvQ!0hCwr4AZ;9k9WlsE=Dk9Cygh|_{l6n*_ zrc8<qkOoTX<ax5tNSeolD1N%mCkNRG_|;E><}}mDdD0K`qcpC?ffFJQKG~~uKD)h0 z7RGpkoPX3RRG?X29B_OhdgI$h?dJt9qe!d$7;{h+5u0wsmarL~$Op|*sw9c;EKZ%V zg@(8YVx@DLtWjdEaF}chJpK7j374D|jt}uE9pt4Yrb(=*dMaD$dMiV4`j&GQBU^Wf zv(Y)Yz7)@DNV1LR!5L!|ZjYF?6_^|To1_dWQ+KvRu5`$vEe*1hpRRTaj!F~L&9Vh0 z!OmiKJ6kd|e^L7welJHK90TRqB-d=eujn(8maUHQ85Da2UtrXmg&CH{=gqSi(;g>T zIx%o=BOQyHD0~b(h7ag&aq`AXv_&<3O;rA7ss<Rxc6V(ckak$5KkFQW@JTN;5LwTg zF-{*;@!H~6W!%-7nCTWAtEoMc%138Y`Uj>efycakzIOmKoQb?E$>j=IFXKq%YlV`W znMf-C&5V_UAbMO(=HE`rq*r)}$~3_1OJ5$RH6SgeHAja$k*PRdy`cC0m@%pz97eW; zGsB(lagbnGEy{EY(1%_WS3~$uXX1znXeg6fg_wUek}6G4q`nC}?}-^Mu+kIr4n|W3 znXG<j4)r+L0`<HF!q;dyj<>^!$<qFrn^J_9G?B$j5;aUAF9!*wTH>>u64(A2`mnSj z-Zo>Sv<;YJvGfbo4@XnT^u~ToW_99NuUW_hE$?(Vw}NQudd<$qC==}fz1VDvXV=w8 z=NeX!$q0KP1bmZ~O9YtVFRqznVy8j*#7#OsYMgpItztKO1V6%#8>no>&rBt2i=NKN zO355&&-sQ1R|%07D0P#VY*|~eC6)gv&uRi3nlmo|LoN92;_iW@Z2Y=(##UsSBx9}^ z&wHSK0+}e);rrsa&MaF>o}_b=6?TSt!WKPMI5VXEmR55Vr=RLyUDQ5;I4f3IUo35I zpdUsH$@pDjhNi>^al?Ux6Oqde#gn1ZH0l@7LGPy@S6Rpsd(9SO`DvYnSiO7e{~tbP z*2Aw47tpqX-f!)WbNX3E#_^6KP^49zhWzl8P~VW5WPdk+I(YlVNUZleI&fWnFqnqB zXCn+Q-q(@<+3)sI-mv#iGBRDJ3z<Dcd}w3lwDzk#_E-+($1h4n+@|(4v(Pq*R6rT| ztHr_%@9LmrWNu{c`FB6N65w1h8;|dxi{8^0N`q~QErOWQFv7Z}!!xXQJGyu>u>GlZ zHsAs3&x3u6wVU~Md+ZKUFd2|7bm0K6jWa}RFTl{+TGK7sF+{VwYGE^{K*w`GpTZjQ zfVzqd$7sp;*8Oe0kR1vnHg?2>6{V48X@wN~No;^|F}bCSOPL*dNBz2q<xEJ3Y`9~E zNLIs(IHKLacm=F;l^6=Obu2@aVFmGwU?<LpSc`)|v(Ok_e2N&ev=*ryMyU0rsRa*{ zL@&V>8(gJbGDlTmocv=Vl-SzJEKv<NKlsCUb@V*FoPl~vj&O^D+004Fd9W8TMR-0B z<??Y15=DO^&7lf%{?>v^f2OC20p{jj3>=t<U4Q<ApKs1+oJczo37vN-4U|5bVNwRN zPjk$o*vGL%pdAr@Al=Z3c2n4ELB2N@QJ^(9(Q9B^G7#b}VD$5x=&<mgWgHRp%VQZ< zV$3a%K=>{->{RvZnEh+$nldsju7nTUCAD}H<d)Ot{0Ox$bxy@kGL8Y@^}H<szaOGm zVnrwT4ohTa-a{Ud;BC8s&N||NuL&eC(CemkQCFM@eoc@iGWW>v129a+h5F?(RU*P_ zB}G_2=o(*uTQopecY!C{gT(xSs<$j5td_aKSA^}=L6tfaWMtm8{AjviTTdW=x~(Wp zSngM^Cp+D_>+_e2ZfCQxckb;H(OF%iYo5k1gyeN-d!^{CGD~<POqjSa%a$y>JM)M# zLfMWL*SJ~nXJ?ZPl7U<1o0>Qg`fkrT$#MjH4DaO``_2no?QusXrLl6d_1&yzOZl4m zdzv80LG;!jNTrul&sBli9EZ95<}|Hgq`kMfVrPZt9?QADAiShB1vH46cm+Ql?DWX* zGg}`O%_;20IGNs_>odg)-`q7qAwtiF%nm4I_j+TGhRi0CThPfD3gBFp6~2^v{dHE! z!kG02V>0}zpvay*ParVn&D#c8>8P_)?6PC5)pv6T&+S-NpZ1^$+H1P35tA`L(zx## z^0+3RPjL5oik)l>+JV?siuIQ0d59rV*;ky2x17v}p817J1n+)}C5eT+>=jzCHreCF zvx(KK>&6(K90apd8JwzKJIwIAqDXU?$*@6%*XJt7b1Um>PQtfDTO1hGj?C(mi$xtm z$V7A6XDr`dA*`%S8^?@Nm35p61cW#Iadb&1^jF0SsSS}76#eN>mM8hS)Yq#{P0>wB zy*<Lx37kmp$XJql``PYC_-mV56h=bx-YQHmEjAyiCwkQ$m8(fN95%pW`K@usB6+(z z=eJvg5eTTGoR`NH5ltcYZA=g4%v`aYiy3ETUwz&MiE0dYO5eO@am4H}8G8>DT5Mu$ zqVHXGp8QNt4VIoAGHZyMyXXK_TB;jIifXCIfa|~!SBIR|(=5-dydC?!QzNmYHg=$s z>}=0INNkKK9<4H3GD;#b!m@E5G<cyBk+70{cXl)aW%coVD|}7e^6o3Q4la0cz-Pz~ z`BDDEdpf9y$a%(4G`wx5#O=6zf>`$avO`IOI!X#JDMdpN#W1W`TymY@MEt!YvQEr0 z50wqi2zuf4C(SZx!PzGo;HTm6RrO2NL#3jLbUOWs>7O~T%DJ?IHA@OUKolWnN2~?L z#zfM|aw|XnOMd*-d9}S?hi;g0);;eVoY%y~WM2gb!o<cKGyG<S_AyFm|5)3hjrIxD zr)BS<uy<Dnmj>wXyo&d=*^KX<Lf$xMnwT?hc3aT&0DLvir2#Lp2eE6DrletcQO^!p z5AZb(4heOtg>*ao%U<Q>v6KDyD|yPbrFMRVzL2r!-MrsqZgc~0zOksvpuL2MAW>h0 z?KVbL2Jy`P`p$=YW==x_w=AB9sl!oUcBrk6+PsFIJ`Y5pJtmkxo-*Q9@uN`L$@z-q zu`%q!SnrjK@#Np;z#sGBkH638qa3DtrrV7u!Jfu!(TZsUe^<bJtD1|xLZW~LZ7mE; zq{kLUX9*A^F9Bc599{fba2qo$5weqjob}@Ubi;BWtF8lF<zM>K<SGFx71F_b?!`QC zwjhw^m(`ElO2Y}<z-*|h+1&a7ex!I7vg7W>ixO6QHkee~qSk6GBv2qrEffn!d|cv+ zd{Z6`?Xq8a8)5Ob7z!)+aw5$%dC~}rH)hupv!N0(FUwWbTsF-E9$0^k>nvoOPgY#f zOL*IU&Mix9`y^r}wsrXqAW@aZSR7?|sJf0<E_++73iC<kTx$a}wY%4RdgCfM5cVDQ zIZrH8p2uW+%wD<>M`D~J1>t&0FpF(!>leNb@F|Yd4M=$@4Dxg8jU%1&;;b-GK#Hbn z7h5lWji#CuKBrlV9v{D$24=>Xm?Hm_f>@H=I*dB*Z9U-GH*mGx#?4*z4a<P{Oy(;Y z-gXnbP^^nG1}l<>_<BoOaDHaIooNm34xu>X5k1QBkyQL8N!BFT<Xl*eJ_@XhIN)S@ z_yV6ykFSuC30RKFSPEulfh)n!5%7S0QUXc-Ke<T@gjEH0N}>o;1wHNqa>2;Mt8`|| z(Uy?O={Chqm3Qd&$Z*y(-N>Y}kuRdNG9K<gADfh5bqc~PftgIz?_L8JDq_=uJ$uMh zw;l2qA2i>h3~?`TZ9hB<Q1!w>b=BmC*qq&NR^{a%{K;t4*odrS*>D9ZSWXDg8mp zVV`_?Sz&yk$7_b8C&5o=!Z?M6%Yxi!QhO}3Yy5L{I4eTgtD%|dA2<-~+EYTIlBX8C z0Q7;+9n3TINW@JM<=6ShG|_SOdYy5S431rknTfssCj7{r(!NV+8>+|eOVrB-t=?~Z z4b){!h}=vQp5kXz6WxLg&R4^yjaF$BGa2q`<z6$(tJlyvY<7mxX}l%jY?>b5zjIy; zmHN(wLBm?=*C(B=Kx|{zG()gyjJfOedeX7l_7~eEC+oYGbe)lvSFyBp0MG<sFFg%0 zbyMNYvcoG$L18mdR@g20iOay0*jy(N<gM!V=geIf?>kE+Fqk4);Z)U06O{uG7y&lO zO`p)zh6$gU%Aq;z=g*FN`)=c#IrGVeG8-{h9vXJY)3YI`>ZDe&+L$veOi57|`|P21 z9)8L!mq7Y(?ZS4g(0K%(7sSv%wXQQzTxxo6P9bk3j4wVt*7;l28^*iP_TvVzC>l_% zR*w4z_W97h`rD$z{EY*~&q-Ftz){BM-otg`rF)=~hZHk(D8uojs%D+SEMv+B8`oO> zQ|T4M8!n?I-G{u0?OxKYAI-hnAH75%MxoZopV=yR=sEXy(4}+m(^#u9`ZU%_e<0v| zUL?c)DSbfZt9>wl#Hg~LtRxw(<vITY{|<Nu)Wz{4*-&A%<GeYJ@l+u=ofxU5q>!+5 zwp06hs7IN&la6;}+~~ii_>l)k381h$oh|v@w1(P=bX@3CM{Ddj2C5tz|J9xyVoNbs z&+YjhAf2rhFm(#7qV}|=qj&}+OHGm`I=uItGxoEJLO18;b-{lBh+a(l1oc(9$iI$e zr3zD1O!k@)@0OM+R6>(RIzRRSwN2WI0dHsHSQ2MKGxYWRdBW-&yH`^;o>qgggIhw2 z#SqTk=i8JCB<}vl+@+-f=N`;gQ(K+itVGF5qmGn32gdBUw<e-;?n!-Z^{bg|aoynS zkcQn_zOqEp%_s}CXok>$S(*%i)d>?PBez*xIxN<YPu538kVE}~6NyV4brYcLgGWs0 zMuL$_s46&DEO?vWsuk%qT?4J;T_;2`Q2WVOsX?pKW$PxMKfztNFg({4B!to@i!5xt z)GDp`QrSk?amMUN^T285M3)r$#6EH@EZvi^@=SyqV&68}Rh&_3z2)qX1%4VRfb-oL z@5VNE#gdX&D*Td}edW)3=uE!47f~jELnHnrTNXKAJ-+hdl&vt}MLMvC$i6$9z28t& zaHLOdiKFK{QB4V^nvj;&=2zuAk4b!G_LGbp=>Gx|7{;u>2fF_t2K|=<nPW0$xc03z zYicR|7;h4pP$~K-%s9To3+-bP)7zWdhq8rrK2mo}-@rF2NCx_GR}aOgUt^Hs4Gp`T z=e^COr7}$TW%Sbp@8jrlVcPhdep6~f?-l9&JhIkn`6XSJeKcB_I2Wm*{{Y@rU083K z+xe<>pRLdKu&HX<5iR*5pR%z=&lmVSa~XZ>zL6HL@8u#Os_t?p)Lu^=dC<`O^6P$m ziJzHQp#AIExfcKBRW8v&ksa=Yhdw4F+&LCVH_&&NTf;rDqFp5>C9M+hrXD$dbZ;=6 z=WD4rb&|(c-FRPogeP7Yy0JI=1H}K@i>@sxu_rb6gxTNcd$*8zLo%N_cJ}j>!CaBM zLbiLh#HRC-3Zuo?y<>d|lY*{#G!~$sH5Ps5;+gVtVQHN1rJ7Sd7fK(`ytEmh)X@AT zN;03Sc8W#%DB~^;W_S#GBD6W|sNh5AbdsH2eS_da(pWx1X&L2k=fps&08zx#MKRoS z<fF&Ov_IXkK;2MvNyOoRyL&{!ug}+)WZ05J2VZF-$yDcu&K~Qa!s3=MlqXbbL7~nk ze}Yp<K?U?g<aAPC;mcR@3ie3><c~V0JBjxb=mu(T5W+ofZ?@?XpWgL#GzDev$hNU; ztjAewvs~qXXvnK+*{7-Nv>InaClpaoE0lNGj+aX;I3wXbBk0|z>kH`hWZieqbK5nb zAA@MQ7o!8bi9EQD%39mZ-svRkQe@Z__MdJou{;HIivKYPOtT4Mhj;f;Jz+L8ayd64 ztte5okCx3JY|lh#cdEU7VjqC@5U-Bq98%DB$F{ap^DdhvROS|7_noPXXpO%Dtht(= zt}N;i$`1q_3VtH9>uc5nultZKoKm~l+37L`z#YcSP*-cxqu_;}9SVhH$xODUc9MI@ z19%~J?3${Jl~2zVLdRLuftvJn%o5uH1BYBQ?n&$5&<Tu&Q_W_4$K&!N+YosoJ$(YH zX9R+mtMPf!+PNbCmIfKCQy~?zp>m}8k)Zxufq>sH3%IL4-f4JFQ@d~ep#gkb#8Q`; zD@S_g_n>T0{7q$esl>1PmyH=?6l&%5bFmD6PH_;KJ7()jz#=L<d)j|1c@0cRue>;U za5HY+FLQr7kF0}=w%BqtsoxOQnEn_$&z|xBQ{=9>p}v;(9)W5c+7|kn%U=0`Y#6fv z<22ywg+@|^tEBSvmNEWNSWUqm(~ejiJ3Uu_TOsE(LZk?DPshf`-j^?GmoI32Mj#11 z_c(Z!Pk5OFQ(%*JzvH1~u5k&jzydW&Y&<hCuxDLXG%r=>#xlyiX%gvKqxRdSGhds~ zlIx$!LrgGpRS=fr1kExl=mq8+)9nHi&gstC20a8veL{&hDJLovDXU&i{|JGprk#Hk z`@G5jp6Uxt>O<AYxxposA<J8!e?nA0k6AfCtLWQ<8cou}`OGgrJO+6iVc{=xRx9um z{514@dXg;EAcQ6oewdk+*=0v{eOH$|4heqm-eNUU{^cdBd|LY*y(1M~STJst+7zAv zSxb(UdK&($1UxBglk)n=?pWYSuM$W%$MyBfQzsKF4*oXgrz$UdSdx(8v99l~{Q5|4 z>zJ(UZ11x4M>?ng1^I~~;&anyC!xzSvz?sTNve|RCbe?3NbX!ZkwUyv$fYr%CLt8T zh=($)jACh9Th*wQV|vW%Xy@5V4T=74M?KF^ioR-pD@7ZsTn0|=jHI?zd$$Z!kB!y5 zf!Hax%NL$faWpWlMQQ4yeoOED()>E?`Ivu~J^vv!Vq3(DDnYkEC}G)n5`ymAyafyt z)}WaiJ7~mP^QolSm#zDYk7^pAbWFzFE{uh!1^{cGUA>>^JS(8U&HseS(BB&ofwyi2 zs;`|xmm{PNm&DF@T|x;Y2$U(+YMz=awZ`8J`$QlecOl61R()>>fZ&qqC6u|&4Ebk- zI}va=c32%LbE3TBRXL;T96s5(djk-f$W|rvppRdRjeSD<zZ6R$OB}mxSe10Z6`s?U zn?#3?3w%|7%K!GaD##^!!-hO$=VqA)o{5vfSg`K?^e1pp@95anfH?9?Y0)xAv$`-` zACK}ISYiL+e~FMweO@WAfSh_iGm&mJti2?^{~ujom13GG{?$%&?f%FK<r}lBcpM)z zl*jj>Q+F<u_n-cR7fOl+#w$7IJ0uCaaQo_LM{XCReV|a@Y|h?;zk}<GH>G<}pXfTk zvSL@v-#(M!KUJN$yqH@Eq*-8a^X~vo4CX6e;TQh4Lf_pX@fEY5E)@0J+j^yofk#;- zbN4MU0(O{M^y{~|8_XJToXJoZ!I-2EB`o;}JpHaa3#suI_4*yVy8QuZ46F8`RmvqL zc9OetKt|KEN7~=#8UK94`FuD0`sC}8EZ=4$jZ~nh=RYXz)xxOPKH4Hl(3OX9Os~1= zM)%tGHGeUxEsf1X#axV($=~%iZ~K=meE!Qt$3I#<{VR+_!>^0xIpbX1Jdf@UuKj-p zSF;`%r=@ieBOk`Wkom#Lc5Sru6u1K1uxe!1@B&S-7t*~Ci(%+kr5Y#3sTkcx__m;r znHmGjO+Vh}a0M6FF+&W^4!r8(7jP90E{K;Zn8tfmPRDe^)a$kbU_wuwk$7sbraRfV z`IAq5nyca7?qW<vkl*m|+dHhUt?AtcY)v%(h@dU0GGVe(I63pDHg@w^UfCqblO))t z+!=bO;yPkzPO~#^?pRntLy6IUc$%ONVDB*a9-QMb>v><(i7qX^p<f?G7Pi0ugy89G zLtR?8QS%3%yK%byXsYJvTP;PvvYNB}uxZM=7VjAJt0?M{O_C!zAe`{NF4?HL*(X9P z?f%&miV$3XKZ2;A$~6MN?BChk8WtD-CJqAo^YUBpFQWr4-3z01PW49|q#~B&+hS&r z3V0+CZkwCHa0?8SNy}r5da;GaDk6xf=&~kAtHBYz_ap9I2N-8c9gkwQ7Vk*T6cz&s z1HSJB8Id~M&&C;~8v8HM^+$aIw3=J%_ORNE)nIk2qM8smQ4qNDG7g!!5;9&uYfC30 zb^=!1egr=v5V9a<!Q8wiNm#qqDkGbWGsXj0_=iIa;E0-BnA~koBUGdL@LLV?F(OhD zB-sGq8EPOD;!h4=Kr60sOiO~UyoGH6ke_>o)-(`<;Iz~?tgC}WjTD=48(@5Q00%hq z9h_ir83qz^$mr9VsTze53ZRtPuo`rijrg)pkBcWDQB5%;FU)2>n163pDhh?g^Z-$r z(zFz~7^>h8j_!x3{}A8!`?5cW^>0h}Gdn9aI2BRs)iPDjfcgq3F051vhpNOtu$;MG zV}DjSH}N3nf_H^p7!ZUC*`)nH$>i<?W2@6_Em=TY)jfInoay}MaNmvL>Xo)KGC2UI zUj?x<<7i02`W$Whfq7Ni9K~KQQ?>J(d67fyiF^Q2Bhq&ORD+`!h=veY4sDSN$kkc2 z4Ot)wZk%-iBWJGKB7N}TV>=y@;6<H?n|X>4+^+gGWk|YBJR+2A2^%FMle~mPi}rTD zyU_9P8yQH%BW;z)N|?K;W%Onpthf@%zb*)w8xSv`BR0fE`r_+&EsRCSPZnkF=aSnV zQ4%8?QdukT{yO*(+~4)_U536T%Ja>tU%~Z3!zg@_t<W{$JfEpEX~YcEGfkjh@wa~d zyC>=Hz*(q!bCY_6m;SDI_Tr?E>|=PYE0eyNg^ver<k1N)WOGL{UCnsGEP}iI7m8ig z`_Q7MkWa~-Sz>;U%k|GaekiPH0n5qJZ{sZy0yW|>3WB$rWgaG(U1bI!TsNLy7b#1r zZ_zds>1m-oFPk>aV}}E2;|q~=p)GBElLK^_Z2MVPd9*aQ$@?w3q+qbhZ~@4vTjrt& zTgx_4QmE;ipne%2?CkbAcI@0JgpUpBeQldrBDd^qnlifuU7`e_UXD3fAriMatkCq} zZ@{>{MViD{CQ?hmTKR$zYA115g1o4|-V*MhA4(tq-2H<{Z*-Rqt-+OYgfbu;^b^K< zAEs1tr}>(;=3xY^pq-poeld^b33&B~{<kw9B$TXBYWGyrX!!o?Z0Q`i&0K?<6bj_i z{LKGRt^{O<T7akPo$ho+QDQ8t7*8*L%=T4{TVgG}=Z6=37^oJ`?(t~EI7ua9*6%B{ zEIZNoFz0IrIi*1t$^l*p=x}}`P%0FA5K@BYu3d486ambM3S?zWbr57H>LAC`Qq24? zQ~Id&NrUV@IPSjM4#ikfb?2S1W8y&bECQ)@WH;&zXHEdyoX(?<0;?QFZ=r{n?Ar~A zTB4(-(#=j97hf|@so1NcmY5yr3~g^=lRKb4uq-+6fTCfnzTqY7+4u*fVf;wsv{~nH z<QzAB)z%>k14d@V;3*ZZGNMv+#UiUlc-I}9kd8p1(lh6KvR0Cv&5moPJw6LnVp{CI zA8}{`Q)pp<8dAr<&dv_~2=FFq>dJDY1^~pgNd~;=E<l|uf2(%$RyekO-<7aupMnU4 zw9$`4kZ#}Luq!Ly8KSl!c(>~tYUiKG#cBZpt6N7nh#HF{JBfL_9=Z_@)@}O6r7Vt_ zA0Yupg_%6*T=wS5#o<U1<0SPgk+6<!GK(>ZBYg~V$`FNa`iR0jZil$>EAISqOc{2H z5dV$HS$J-Dnx)Ul7TLN4xQ=P<MyM@;ltn%6e*NJ%@`KLy(v?ZAK~KU`RcQ@hhsM~{ zM2x!f`dRwK6EQcK2EScF-zJK^s2oeu0;rU#od87KHTuufG8dWN4Wq`W=+)M^GnpX9 zoS*u99Ad=l^KCa8Nx9Q(!Y&sb?|)8*T(VgK%`YOsoehV*m5~$A0J3qeQ=|o=*TqF= z0qz-8)#Y2D?tR>;mY;3bR=6BUiCxV=89)9Z+YO$RXyRyK_In!$Mt3!XMJnlIk&f)R zXor26G|#dcG^4v1g2oe;76Vz<!}ae17C3HTq+TRm9TOL@>HnuVyfA6N?R?o1^NPhF zKMVjm?|+Q{ATKSLYX#ocV#*;}!$x+ch7cfXa<?pYDa9~&r*N$lq8`?F&GsyT6dY}F z@bax%-u54C9QSF6L(USH28ta1sITLxR~kfod&&MexE&}MOA0Z=g-u#VlP+FA95SR# zzejy)0u~xJ^k=aoQ0xd=?)tJ&^8ZJ)!E95RR3Zeqlil|K285m@D<cDV=vvUu{{SiQ z-!~HeTnR>(N_apQGZNj4z?3oviPAJgSj^0{TY<VcO>3VM{e)9M82!Lwu8+=COu`Fh zSbn1&PyHCRQGP%PJkw!q1(sPyHJdYh^ka3erkovmcRmFz{MLpMO?Vm19e(TAGAL{h zHo%#Rr`S{jv!TF&R4OnYyKGbb#N4Y*)@#lK(E|W#g>CW490>cWoWA-rFitt@YP+L~ z+*2+ImDB;J3`0BIY9d6I#i^Ryb?~i$o{hK#_-oa(D2qdk@$;t6Ibc2kE&`|{Q|V*_ z3AUCP4e}_tj}6P}74@47!%U4AJ65-TW0MYU^Vh*hXc}Y-@b<~%Y;Vr<iI^A*1o$y| zePG$8{Zkzi<V<tJ!N#8;-BqOkbGG&2D^p+wZ}_ir?KG@Wf+;W3L_Ps}sPhYy4b`wr z3ATH|^Ux{wv7`;4@fmIK0aq+c{YF<?OvXaNDvl}2fw#R`V0`MjKSJC<j&PrpF@BZs z;(yqz$D;=THwRV<cCHQ&=0+%^buRW=GQQt>;8x7$Rx8ZTR}Xvu87BG){Zl@#cAcNw zJYDsYMVL3%qHe|iVh$Dpck{AGCXWlbC40N^@4MHs4a%uTi}irYeXWf*n9+-m<mN)i zKQ<KZT(MPcZ;X!<Apy`(9J^@Ix~tO~?y>=p6ZrW~eXjPakuz`_X(|O`o$f?$C*7)N zaqvhR>d4EI6gJ9PMM6~7h92IfiV5y{yH(Fzm5ps>%J=&EN<y})UZd5N%w)6cAm@ey zY(f$+d&{+@6;a{-9KHsvb$<FxWGH`?1NMD*XRI32j&ZN&=X5-en{H!(et`GR5(#Z5 zkxKQ)e8kOu{ju!8Xo@q}xYvOmdLvlH@Y*K(U}hp~!W$ndsFFpTR8)r_WX!f|AUIK? zmoZV_9uaQ5DghtgDOE25sH4vd)KTN3M*+8-MxLqev>2tJhXeFO=sux{YuB!wtlTP1 z8RA&0{H_^pVyhAn$+lL>jgg`i(e+Q-Xn9lyJ+Md0KEdaaU*VLsTtAIzRZ3qr^&^9* zVRbi>10MX;b%}8-`2Wfk{jFPqYP3rJb-n^`kgPHi8O4wl*D6Rx&+U-+pGC4}X0&zM z<>O|18Cyz<+)Bo7Gln$OR2Ai-1@lkv?}i_CJCqVhjZ|svtbVYOuYF*<mqGH|vELju zG!<?K0(4R0<~6R(m9>lB`r=;56-~K#(W*U4YpoTcYHAM6y6ql9L0g*jCr;Yo#lS6! zd;P^?*=_ZfHO^<~G)QtF;hlfKUY{4LleQi6^TVkEVwlI?1CIkM#_TKPNvjs$jke39 zkDeRuNlBf%sD_+6Dtr5BWbL5vnCPj-8G>we(8D-|;`Gkl*G=3@?KdVRQS;{KpJJS5 z{NuFK1@PW5LITR%O{SLTGtV}WLX!EVD-xTY(;c=^G;gG8;j}YMQ3KOyJP1rz2X)sJ zRqw4SFY~(Rkr!jC03e5|zJ5lYV(Aw(OysgW>u8;7AMZhs>2MtcK|$gD>{9j|6qYEw zaRk1r6d<L=NAM5fWBwa=CS53d$M8I!B%8l9@kdVR`<xWCK6=Qi+JK5Iu1H4?<`EJ< zT)Wj>EUW)T*LdHTkKX1nea%YVokP980k<lG=Ml`_06xpSZY;-Y$JNU6iLhQRJiU<~ zzC$WWY>m&kXvL?s`1Q+mXqRAxiYpriXU_;BH&nMZC*W>|d9*g^qKYpQUO*%_w8c>_ zSByRO(fgWZ9Jev4J-l$J2oPuOn$HQ_2!T<I*yVoB+T;h#p%Y_VP{gq7;r!ahwsspG z`6!QHN_1uJB}=~!c0EqoxFDimfySQ->F00Eh|#Jv#9If}H<%u=YPw>)+*rMEJ$Q@E zx^90H;zE855I0U5WOSluG+A;<7w>;dpMs69ofD=DbU7d+JgRk+%GLC?Omg@V2r~Zb zYyWC)AJXmY##7ch94h+B1c<?Z7?ydBz}GDFqe-jx&Op4_^E~w**j*3@)P3{Me=eFj zm9EvW%B)eq>h_mOPYSrU>^m+yy$pPWQN69XeRIWHop;oq<74`gytBTAD;FP3obnu? zM`>+Jd@txJ@upww2jnWOm_YiS{y3M{zJ9$AtlIrQZ0%fIC5RCYzCxzWR$_}5V*YA! z7bJPzn6X#KD%nr6Q0%oy#zW<j?7Y6YFGC?eZJJDSeXULR_?BPZU$*1<Y%P*(FdMEX zm(wPmYL-;+U!}?15;E;3n+z^2BpgmuEa@;uWWGE`?fTG=>ua;u6YpuWKkqx2DIEFU zVR@x>D%U&1$9}z$e}vca-MY%&?S{j7vYl&XE+tNqhZghDeWNQUuQk{!<Y~yf+1Zbz zEx!7DeLp<>9ABn((Mslzv!(dBZ!z)9!~NBp1I>UgEzj|js(gE$-|Y|o-F!0Sn%R<7 zHY|zJVlK=`4qx_5WZ&%PkkQEx{$=fUuBm!g0!t@P9x1V3Emg56c{R~x9qpgDiG3II zsHLv#f#2j`k6o(B%Qk0~_SeZkh`$GvWNP*-tMRl=&<gyp{v{9LXWwHl!OkW%6*gTB zx*#zc-B?jDNS*e8F5OdhR$!#`txF#MUJbl#g^7wi6R$ZEk#q5Vc%j;-k&x*9J~ln} zh(XuzhfV2gfSnnGFf}G8o|wk{=?OkB7Qu7$8y~1B6TFn~3#j|-ud4tg^)98H8Q;C% zp307HFkE9$xwS&jx1zll@ql_c1EGIa8xJlVKMy&CF-Ib`i<k?H*y}|`tfb8Uby{Kd zhmb8$`MZtj+q$o8cQClZ^A8^i>z=}F(=HVWxXcqaP}OeOCfkdoyeHVaYUlB|PG(ZF z*^$%Ax}4G|iuVv)2luS&VJl4@=_2y~h*rb(O)=*Km9eV)bp4M_OKkc*OZxBTz5a5) zp5a;aRk*U`)^}eJ55!{}%ePicG*%B@yL{#aVfEc+h@HZikC}h4-$VVKm;YE7IU1{0 z*Y(+RXsK|YSgc?A&V$f*Hw?>}t-aS1*6*2!Cvtnu#mq-6>7-BcP^Ya_oHMjL;-u+L zYc<U}*!~(~PPsQ<xIDM~fmf*;P`{74d}J$n!N2=mNX2GXqSwVlFX{MMxkz)2)5nhr zuYaV?^ga!RJcGthFZHuQEaxuSV`F@+L@pB8=rKfjI)DCZ&6WX#(sB;F!!Nj<X4&6C z37iU!Fn=;5eu5pid~fAhE!lIyRtUaR2q1$(DsADkfK**b#D$aJ9IFW7-O&ALPw2tn zX_n_m<<_vTV>O)$FJnm&KBrCnbDmuPtWt?LRUMzxq_K64ycq7u0g4|>CT1?3K@3mQ zsYv^4)xWR=V-$*tQ+kkn`R;*ikpS3Y^K#6z?6?;c7|7!$@kE8G8oF@%vLmM=;f2+` z8`NOoB`#=mIr~aNhs9ZmUK}DT&zazarp?oXO}8+HB9iP)89E{AncUZe)m`$8Twtvl z+(HUV8{DuS<l0tXGVJgM!`ypUARC?!rAw}>Y^NM48PQ%Z`%WOFUGkj~?%>=y=KM1= zvaRjX%v^Q#ta-Okfvzv<znet~cHIHJo}Lvx`C_Tpi=DtSH=8+zo#GC&_dKTn&d9i7 z8hnltOLEhgi;XZ3P;8Gl!HP$8LKJcKoTl-bjT(`M=H{w3b}XyOU}4mSfm&jmMcBcW z=s1gmT#Bx=^clGca&v;QNZJWZYIbXVe>uDjhR074IIHf7+DGkZ4H=`Gi&)~ErI_?= zHUV0<!wnnK-Fyl;jADjQqGbE7=+!sOK@-P(&Ezc1nei7Df4-B>`0z*+R>aFud!@;U zcL)|<lQ~oWJ_VB@z{!Db0MWDtHsnE`Rv?6?FWFXe{t0*zZpy3?7gZ@@UnR(xSELSx zd@nOReC7XG`qD>-2T2y3c@D^Aq-(i_T<fx(0J61Swm(+>)dGvx=ILT$1_+!fV>_U~ zhMNbTnvF-OsHbP|l9L~-djO~`vEpS*ABzfRYv#)_8IRr04NFhNvZ33gsp;eWO=w?H z*%x9V;iK$DoL#1cbp#tjkg0FjwV}ck<HV#jT!S1_8JG2kLf>mAkpn(TG(I!oxAE8^ zh@0SCmg@C%!#*#+s#qHr!a7uXhG}#sz0|>~_wcNnwM<jN53xJs_2!YtN&)$RD-m%_ zRbjWbD^+?*l1c(bd0Aw~&DeorYfrz1iMGaA(z`k3w6PE~Pi4+m6qEGZ4d#!TA*?Sx zTWy&p^(3MNvO^pdFvmp=ZR^1A2%EpoZza_j;0&RLcf60HrP$IiW$~|q++rFes<&<! zjm=L@13Y-wQBFdk94_e>#}z+>?xH&HhMF3OX|k!Uf~bz|wobNYwCT>!V{WLbk76Qv z4_gOyK%%#9LUm<|;GE*@-D;Y?ICOkv?`1;m!*Vz@FZg}Q`&mHj{SWiUPn&XoOcHWn zlBoWN39rTmZ3T!?I+_%Ik`b)sHTg)(cP=cqzJ{94gay|xZ*n2zMn11hlmCGT{EdM# znk3sE`XLL|H-vPJj)5R~H@UJ-p%Q`HB(sP53K}OIdWDV?j+|W$rkO+Zp+{_>96P6v zaWeCmon6O}brAh}Q8X1pOjO^Uy>R(ir7fGkzZ`w}n<22VONziU5l~MqtP<PaJ^JH! zATt5$Nt@%}I}o|%H=qN+3h|uY_Xx^(9T|4<Z7%hY!fQ~w9}qg)=;@8P5N5Vy--CrX zFHlnmLk|?z-=Y@ZdGk23PkSJ&<rx0`!`=aGu^{B98~WcZiC(6zW5k<SaWp1;s$zRv zcj3z-fs5|vg=@VJ{deXpZ-pNg9d=VW&3HZBwySPpn-_9g<y!w-ao!=IUg)x1?DGGH z74W}kVg0W#TcCv*p63j8GeNMV6MzRCnRVTI&G~>z^^-Fp#n5MqnP{qpl|+#~0pX7$ zG1J#l?1xsm6FeMM>n$&S0p+`ZRJP4^k{=UgVF8rZi6HgT4chPlbXHl5-o9CD8rVj| z>MFpnZpx}z8qoQ5<Ew99P5|i4ows}emNBwO*Bvz6OS`sw5m?!-rfL+-bprXZ049#9 zi9U=5sK&PbKzeHB)Suc;{r;Wy02<VG_iT#!&@m;~cEj{~JH6&ypMY3h4}fU|xQ_5j zZOSU!%cgX#ypD6pM1<hVoN0NaTF7>xDcG_wTGuV*_z*$K^`l|Y+-%vFKj%#WXz0BP z01c^guGyMOwQ!raOCo-s*K7wU%?#)Du5E@7>J?uGUA6JSO#p;CfVA1#uDredQx+() z-no9H17QKcoUDiJrUzN)?t?ek`O*%A;DK}?^Nn=>=k>WDigsLjQxT*IyFE7m5BOdU z=JN|}<ko%3TG7HI?QDJu2&{oS3M$JF6zm=1S^-St34jGYkzz=SgCf(?LPmFh?cM5< z_cmwwpkj-zrr5<yyQ9CgxkxI|xB3sI)*$F|ZRH)qqI$42FOUcL;DhRU9c2n(n7s$0 z!P&1(-?}gZ=<wQwaaaKgt~>u;aD7e>6kOYbg6qY>(o|a?H9}W4y6(g{1+uI+&aML? zuX?*;q6LVN0T1(vaoMh3`)AM_*P7RYj=FxqQNzTOw*d6tC6+XQ=-=XH=aS%Ss6Veu z0wweL@{DmM*K+`E{=Whw`_JCx8@v6c2WE0d5Zd2&6IFEOHvQu0^*wgZ*(2s3sUf?R zjfd`s^Fyn*?UYYC)P!(Sd!?Vc8ck!C3{xDxI+l*UYnz?vt8hb0?rsxOj6xaW2%dp! zc8>fo<(_#v^QZia-wgt#xEnS<x1=`Q1s+Er-3BPRsIl$$nISvt-(AN1e8Wp#&Geqv ztHFqItX<$pYG78FP#`?4{4IApo^Sum9eg~<T9sadQR(28kbU02%nUy=@emG(utU9? z(F&PMCxhniN@gk`O92ex2=O{0g2$v9_~dILq{D_vfDrqdHuOylC3vc|HQn^6iuD7> z8MXtiWAuyrH2Zx5UfL+OsJXWzkDi=Y#u1<3ygcUM+B+7iu!p!*Rz5?MQm#`Wp76GU z&R5Cq3|Eh^EJp}xHGpj!0pDx?-6+}Lxe8nX+3Ax*9<+Qk=~VeeqrDySr16U{&6$?s zS)f}ewux7Zth~H@W63bt*Ay3Re$DyXNOaBAR9G|s_enK}njmKdU9+|#;R&I%AAm{L zc6!$^--Yzo@u&f>g|h4t3S>{am$i(^v6LO&rL3&huR*{L!K8}GIFm_8#pGxX<peEG zwF!CouWljdW0u-zNe2<4J42#9r$i6Q^VMiTd;KU+qLG>=Ipoq)U4XlA5y1E+0_;y? zMYZX$^!=xx&{<-#%HH0iJosr4%p2II?V2~{)ibe8H`sp3xD#_fH!iR|UFRU<U3b#A z1=t2_1<%YSx1m3wFqcO+`vkpuf_U!S_jRbdJ4<!v7ziVN3Mk8?N~>xiZm$TVLI`X+ zj`TXOETZ@QR{;bliq;|K3W%{N%bC2uik!~PYrX-<=Z~4aST7p^YOIH3ajbnhv+;&l zaujm*k7&*&h(ZUaI$);skeBQ6k}(FC+qoW!^d}H1n>o&BkS=9JQrng7ayRA?^3t#o zC`=a}_~`oU+1{pM|6lUk>)3xL&>BJqrqwV`sQQN6w1#=lx+R-zO*)RNAoNR*K_IFk zjh+228(ydCRXm@c?@3o$JLI|-RUgS2eDoUkxnF|GxDGwJBjQje{B${*rLfnfV)6j< zx_gpc`EwRmCg34AeG9lB(?Z(EONV`X8+Pj(uiLBI_2%n`;=mb=zQlqxO7igDxvF|B zO17a~;CY4AYd16zf(>n!FECJ`XJdP{kYP`P!e)0IdY@EM;oZw*U*L!CVbZBOO4k#| zc1Y&|r@bj)-t|U?FEJ`ly9!;JUsIdhrkzjR9THsMU_&5nsDVypB3oA;kCglRpjT1m zU53b3h?@$BzH7es3;rbq-gYGu5W;9AWM)5iQd!geo0qH19$jf`O~E1U7KmLBWQW;q zKoa;hzQN|2$<iB%8y4S8aEHnNXW0L-K*sP>zxkWqS)n}W5wv79tnJuBq2^<9Ke2b< z6Eoy?#;i9<$bG-=Tin>?_0Fe80+4bcuM6$af3NHS3c|oRuh40?Qu)&1ke|-seUK_V zTG2p~ckzNdGuA4@?p(H~#VRqX1c0ik*<QtOXs!de5f*@oYQ@}LJm!Pl-z(l-V~9Mb zPjsLjoxj6-W#-Q;Hh==?lMmIjDU9#3FhpAr1#q1mY53)rTFt#cF}B7c<n>>`m;T?^ z2mb?rSiq-QzYC>|+<sQ+M}E%C5}W#+VwKqM@Yp_}60uWo_c7}aIAlDQTcp(6U%1Pw z?D7<@jB>PwH;O>X+n0ofHz5-8dhMm>2`Y{i&)ZsBze6=SzUGyGQ!|ff7kvbzg85#Z z)`UNb@?P!6yV;22NR3G(xh&0P<Ry+~KQ;}c$1Bk1@6L?+Y99j>1CnTxpzBG6XjUQH zESwk$Y&C^ezPo#&6Mnn@%N)*7wHZAy39jr&a9qM;(U(!7RUB!2qK@{3on&@jhsljl zs<-49f;w&k92VR6Im}CwT7htElxi_4dJf1SI^)#ix7xpT-SjG(DE51=*SU9t_k%-p z*H?h1X@Tk5JI0GpSvs_v<!LJ~AGtRDu`?mx4_MZmlLFLyIng0e;U<F_TW>j6+-m)5 znYSt-o?$;kb`5rNGQ4{E+)9K6ODBg6!-v>T_}Wk_d#Fd5J6ur9_ptubVuwatIQAXj zaR30GbY(!dfebxcGxz~w=Ra#cnT-^)8k?B+2V4jqvHoRgqnHfD_5=K|XKb_@j1OqD z6$lopT;2pIheq6o4mLOsJqhX^zV)=cVul~th{pI^E?Jj`<-VPf@TmB`2N~oc|Dw^^ zl_d|q&sW$$e3AL3xmyccffuy(kre1vWtiMhM$o9uDQ1-sRvKj7HDMb^cfH<M+o?05 z^US-KRr3Vf&`-tVOF#d<qHVSljW%jPeHW1A=%TK61_wOoLwuSDxvBz7T#A*HVjmuZ z!uT+`SuQVimP9HYUrlUf7RQnXI}^g5GbvkvO`JV-b`&6Uq``!yHM@68RDs}DZ&@Vq zYGA@!_v|`Pvk)^4PdX%ewV-#(-<#zTYrcHtSu<8AH!g2f$jq$yIuRZ|7Fo!HR(guc zb{|JiH=jlfqmIk=y8$rG*?LR;6HT4`&&;><OXtyJ0cLtYhEh}Pp1+2aLKNdtT6<jp z>RZCL0kV~{keftJ(W6M3uL1k<76?$cPrY(Rq3bZFKW~%12>Arpc^cB-5h5L}>iWtu z8M5#>qC|Em_U%x3eTx6EtaXXO`B-?N*n(MVZ*@m@E~`d5&jes7`~~L*l_QbdjnAk} zr%I}U&CTZ%wR{0}H;~n|OC;AP=+2){a()3sDiidzj;H<`I8e#hQ+{js;O5GptJcgt z=wPX63azxFyVn9*7CKeHzrd}*mE*XpZ_5FjaE!Rb3P$mK&s8GfB1sy1?o<=?sOTr* zl-X5`y7a=!`_yGOx@Tv7UnqPp`2?>wD@0b;R^v|cIIW`Vd^g(({7(*mKhg~1NLfVZ zp3Mf)H4`8>=3H-iY44H7^dRx`vDp`C`buz_rkDRMMCiE&=I3+vKLGc+L}hMAjU#ho z<A@>*NQBJ}16TU~5NKyAptX?3z^)I4k)^I&PZlW9_D)CcCx4uSz<kQ?iDDFr+uL6f zNY8<N-8t?*kO{kS=4xtl_oc(HLq2QctkMl3Hs~~!jfwQJTTM?yzXt=W11{y!6}IE& z4qD@rl9h;J79Hc-wE?5Pj2X+n_TIhHGfx|+eE*xY1%P>gry)4tR>^!I|6d@Rg}e!D zN!o({^~Tv%KLAF1Q1^{iod$&5AfyBwu+S)(*^Qf;<t$xtgI_1U)(54DulFG-(F>7a z0ene=zbRA%;GG;w_A2BQ!|F355{=DOcQabJoYJ=H*Y7UCh>!!bL=&JV$R~XdCGuO> z0l^;FNt%E4TYY!mDB&c~fp9=M{_H!^xS_>teCUXacy~y{qFCJ87D(3Jqhr6y^ehD4 zR$kCoAr}AvK%57lkrp-M?#ue;z7%}~QtylJmcCFXGFC<Q1xF*@h)cct;#~N>W&kJE z?x*VKHt_Gw9Z)&OusSjnzountlFJT|ElVD`F;-mSzx%q`k}A}{Leub{E!O~H&i^6> z#y`>97=J|=jR<YgVn^bo72pzC6VQ?PMChUP^8tvcHfk*k(65}JV#OA*fF8-_d`jfd zxApYc9@IY)n&%8x%L274U?a9D7p}7iPy%Q`wiOv%03B5@o!VE*Z`O7p#;;2U^-lX! z!WE#1lvF#=a2F!N9FW2S{&Rrywc+g@jdtK<l_E{vf2=q!&Sj`5Edn%p&Ch&XVi&YL zL1)wfu@Qi`{`qRn5I?{tv%V2K(`r#PG6+hTyGOtS<NyTe@Q{a+YlmS@eez2Ref^Hw z5jg6+#}~*BKqnko#^48XR_x~(tgA&QZv!<}Ifi%YyZ1Ifsk1JM{u^>qdO7}Jfj%g3 zI{VZxd(P;<Zwolqz}~tx@LV>Vr|$tdQ2to}-H-`b11iq`CEBdfq(JWQVNfQuVnL@2 z9%dt6*cSe;|1Ez#X1L?2HLD|#ssZ%ixkGr-)po^zRsg^OrM3|bPuZDw!nfsNLHy}g zXV-QHw)9sJCUOLrv;gK8+d>dUyUKL^m{l~s1<?L^)Im76z*F&TUNUlf{O;PT1CZBq z2zVk=+q2Ha&r26hLIQN$3n%|&NZgH^v~GjabMUk*MOf;>)u*L;sm>dL9V}G~=fe?5 zCxBz_&Y!jtkIZ~t3Y;hPuB#+Y@8Vr`H|Ev9n)eIF@L|CrUsgC6`BFk!9@RGiT)fS3 z*X~0Ls&VzF?iOt{`V8GbKF-ZdT1d<cx6-o*Y<&E|MiFp=oOFC+Taj{vMa2k}WzD*& z7ST}AnMO|IXSM9D+%1@Y;E?R#GjX%N<URf7j4YDZ=*QA{FtF`#Z_&3=0G?p4`$Tv~ z)2gV|oOc_`^}@;rJ(*wBU}WrAZRg8Y<{4d-`b7Et=E4}@cpFE8Wt-`7sCvKJYW}fO zzdZ-FR98k7FO?p^437*XO{!LS8SW`Hi@r>-><RvBP%?rasHmrs@2@xCybQ&mCYI1n z?$DYRRXaY7B~i+?D=yE>4L)S)qn_2cT&_JcK)pn$?Tu-<P<HWfkNgi-etEVse3GbM zy9!dto?3mIWBoD$=4gr-)mDgX3_93>*3yHco)HP}_M!?m>qv|-9eZ&n4xb<Tq3b`r z*FymW*WNYtHBKi3f<Mw>Pfd@zUv_+9dOT<5rE{X%rDSKqnacX@mCZe!n-7mUwA%%c z00#r-^C7U1M!_Ck@<^arwzG*IhN$SKMue;Xupdycrt8j9x*?<&?|+z`6?>;4PtC+T za%Rpvk7(TkM_q+IY=<bG!Bg#Mmf4TC9(KR@qj}(uHSPJ&BE?_mzbcw3-Nsk8j=V)r z>Yzr+WyT)dmUctbvg3q|rK|zUI_a*%z3G2V;ER30u`fY;A4~S;JkeRXGsy@d1OK@Z zdPgo?G!ahZ&ws|4#FF-Rk3eIiu{YL{H4xqaRmnDaA__*YBKvab=C?n+{=u3h{V@9V zApV$kNb6MmfS}=)x|{P4jvvDtHkay)W2WgTh|f=t-hNU1*Bk+F)1vzWn{A|j4LtBl z)mv&T917Wi|I5dLcL)Q>NWt?hN2!0kl}5qO_`iXNeB8D7vGH7dWvT%T!+ODhjUFbW z?4>d+`$TM>6EPkLJZ@(jo3rZpe%D;SU+h98UD<01Sjaf*z7{<F#t(=d;B9)`7DT_m zZ>OdI)Ncve>_?GmS4Ajr-_8B!h8L7!yQ7;zxo<Vv(b8G80S*T0WZ&DQJRc%>5<E6( zu|Z}6;6PXx=mMKLId_2z*mBe+<>?T3Y>1(|GRzu0)WixrtjieOaRqGGF*RN|jqlvw zE}|uep6U%DV0mTq_Z#|PMAO^$c@_%~*d49wmy$VjOcl_mfZMh>u~C4ql*mvH8t*Fb z8*U(tZ}gG}65nJQyK?3wC2aQ?aO?%pgWKF_-|H#KL*pv0Uk#7az-?G{)-MPoxenRG zxvywYylLnaR;vZ{edQzY>iaRezA33gEA35dp0sRU1MJlKmAQY7f<~Rep0uG2RKMwO z^4a^R|7MeCcJK|b9SPVo#VIe|UKz!C4cJllyqJ<2<LgH^SN9OY*DxN~tRsU0-P0wF zuB^%lPz5Uk?0x~V*SX*Rsh`n_DliSJG%zW?cn^dw;FkZB=h<bd>Y^41k1$>+I4&-p z*Y0{5W3+pKy;|v;uaAbZh95?G=K<ejL=_hK`rros*k7m%EdJj&QKJ?bXd;gqq`utf zMkA~y-U8F+^x2fm2hBY(FMQP$7fzf#dE9jZ$O2&3{hzUND=ZgJQ$3*vG<&;{V*XEY zS02{X)#mN=dtkmP7`MtMM1?9!AwVH0BB`PwQ~^N&0U;{;W)J}pNb<GxV-1EN5=AAo zAwi%4Q8pEbHV{NANP>n%NZARphCmjw%)NnWho|$*Gk?rH^Ji}EeeZeC@_T>h-1GiU zPZ|B`3J}9UgZA&^KLnbnd$(t45nv~nfMOWB6P3$O0t3izy~g~AhOb>b`A4O_thZv; z_{aUHntIkAiTrdA>cSNL;6o4V?1#yj9G`m@?)g1vzVd{<>ZG>#)pkXk>;ay?u$UjZ zUXY%L83^eIk(>>^a#nU1U#wilwi&=q<@W@kZ=jP;auu;oWZaYC(XZZ~<NBtM2wTg7 zAb6oFKd@)qosXMf2<REfx_kQ|z4dgWT~o}vKZ8|_a&rknav1UWD~5+Z9O-z=0{coT zfHZSNb;r!beVoLywW_djVx*O@wzMN#kcfBL6NbjFh&%W>tYApCY75Bc`YDR#e8-}p zg;UIez&Q48!Pzf}Bwf9<`g-MX=MO<8%7nybbfI^}S_N_lu7)NL09_@PQYzrsJ)nTW zGQFPc7fv{bm>b3Dr(z!%0V&xg3|t@9FOh$wp~^p=kSb)Pt+v%~PG@U4?Tz~0Y8!>R zQhje}s;)-5-bNGQm-FJWk>2vh*$8bjW&O&^BBa-c?xTe}<c)tkj!!1r?y?DJL#?D) zs#3QjHkr-yZII=Z`sJ;LF8yP&UB*{^7iA;(4vc|g{sVj}{Cv6idjo!$PJ+a#IC={< zH2y~Gs<$Iv8pdu>q|RRJv4E}0`jwkbPoH0_^@z&!>vAe|o1rS+4EI<Izq_T)PJX~w zka22xT)vd+=&l&|)CM-Zd|$xCBt9D_4#X0)GG0%OC!yWV^J>P}88ff2yyHP8bECpl zrhF43*<aC3=<fiEK#pv1FE)KKGtDCh1PYXJV9!ioal>!@*y{@66R|kMWx8~|YA=ij z{Uq7Lv-!7u*~BvC@A@hiFYMp64yqnUNG`#x4rV_Qn`2`<1e*OVZC(~HhBf`hueA&) zzP(lR5zrw_TWwfW#75lF%I@;O+Uyw${HUt^7)I_$KPFg~o_T$64n3N18!=U;IQDKT zK{`p1T+kK|)*=oS$;G6JiuIo2!#bkOf|?rC4x>y}d1g$!l0_fZ>|g^677a6$3i6Q- z-S(k+rR^%$*5y=Xm6dh#ec7rFA@_|Uz5|>1ETW3Ix~$!XQZ&N@$#~c8<UT+{Nap)h z?fUR3ssIFH#wg#lh7{l*zsD`y#`m^B3i}~X-GYM8C={Va#<(OGziPJeh#iNil$i@g zD5ir@_fID$X?!!4Gvprf*YMq1^Iw!AtT}O%fU;pM70B9G-Qj@l46-wwkv-09P*C!$ zD1lIb&&)Mb#lFTh6ylP!@Vz?`(dmdgYy>JDW``Tff_m0=1?a(Bna<1Oi;$PYlLu7a zHj2$~cU=6gi~`E9BDo#*pdoH-Sd^=2)ZgITeD)cEjfg%lh!4fU2FaVzMtt&>R7!x^ z3qC`s^(a-DzL?k4gp*Rq72>z7Dh3?6Z%(`)ui>)vr~7P_BIC^?_9e?1jyoH2j{~Wj z$p~ItdG%=&WE?U`w{S9x=Y{ARgY*nTnnpflqc6hHbtW+hz{a5EpPzDbIx|&sC`Qhe z)94t9gpLT;gE!)Tk?-+P9tH+tm<GlSI^{q2^pn>di^^FAL?j;R>iO2zlleQ*m{bNJ zgM1C+O7@=n)CM&(_gwG!okn~WhSORl-_JTC1Le7=tFo-D8Fa+o`v2~#XXgoBAEG-2 zWf|Q4_|;rNf~x;4*(9PuU!~J)H#K8NH&gPAbD_-HZ;&-ve}Hbko1Srh%R0aUz&pJT zZ~#iXJczW9g5|3x1!ZUd8}tT1pLDCVh^Y>#@XAALkzmrn8X(MIBnTn=#s~I1Ao(ZM z#KvXtO=oAT^hPZG3SgfDgqZGdknjM+!&P^0_sz8c;BBS`f6o6*y_I&`z!+5I9Mw_h z1E+i$rUDY7z&(YsPfX<}HtZZ=pR;nXQ(664p(7GZH3mQIH!m|VA?Pz)9W%h+h!nMA zXq!f+`QsY3wkhJMLc|q-^Z4pEqopZuR#o%%Kh#5aX1ZEd1h&1t&RiXg-UH?Y_rabf z{ix<+fvtLoPTAE7BL1fKW094ogO^$J%b>QKG-KzR!OVAYl7-=TK2}Vt!p=tdYC??E zaed#HlafQ+wm!#B$<+@;P@^=bG~7If@S|*Z)@_kwlo$pXbdXI^`*c8s_=ux9-(c_0 zjuOxgpGT7RYy;5cp#y4UxJdFZqlbeRPno+PT?WmT*qV2WuGSGjsZ<@qy$^X-+p>>s z>oUk0$ssVOL6X8r)(Kl3xzC*1^7kepX$$(CM=A-poL}cW{#5xh99R<Gw5bN%xBXwK zz=C-&|KHcccNseyrCb2Z46mJVMk?hPwO{l#-Fd(7)|dtjpb)@4|JOe`MJo^R%T$5V zrwITisc%~62Mq<4SWYY!cR%HHDZ48;P?dlPAKDl87Nk9Xtm0i-B;7q38k)0@1e+?a zx@tzf9YV-i!z#9^AP7h$1_~Y3s|ag;^RIUw${zaV=n(U42H|09(&Wd=c0O6Od8p_Y zfh9wl<BS^VCea5bzE%&SsPo+K{kc*0XQCF1uH1X7_MdUdRr88#m0&lcHR^dxr+RqT zq}v)c*f!DAYIar$>JFa*>x-lRA^!IdqN2?lzsA29ME$QD6c1o%^-u|#qmmNu4b@>c zmd$R4hq&+NptL)1RC!xO!8gh3Fv<#5o}20|zl13zLf!daH{q6LNq}+#y>w_uRF@lN zj}r4RG%-SUBH5lM5@o6Kh7@70^IQy5@vghzCa!TY#^0A4bFC0m?=P|aMewr8gD>M6 zr%~f7ZBXe>CU~qYF<BUM3z{OCy&j@D`zx37B2kE~EAiT8Ji5m^-g@vFMmo!*54h7s z@6*P4+V)BO-vj2qV+P;`wE(3Zs5{zKOf%5u*Cn~uzx7p9-w%)JpNrEKBS*N^thBRN zFIl3BC9yX$@1N$cj*3e(r=eoftB23vn~V^5IAz3wp|B3WS}W_rCz@roe7CCdMxxad zk3U-H3d0eFq-&987Wmc<k;EbbU)(S12}&DYAPEQNPZ50_aY@pDF18h-(MC{z2c+Y2 zr>J_r8+|)pS`X;EmNT1x<q;rhE{Q@FtfXD1VJ68t`4!Xu$n@|yRMebY14oVsks9QL zuHO^H1u)D{LaC6aeL6Mfo1XZA`)W1q2<<5Q*z1v&sOF{L1#(?|w^DAsoi;EjfA<KI z8JBi-p*KK)QVL03+M8cf$w34yi{=%f<Uk<nl@;#B!b%r5RV3@S%&NK+ujhXRsl+(5 z_peOv7TBNoxiZMaB2<oQ*G|KXCq<88C@XP<n;grs)Mz;B4J%Yq&Bsmk%g0-d4o7V0 z#V^h&3`rMQu-dQ?_ij+eshmI_mY5>S^K);fSsl`VwS|z=e*<<MEIRs1jlb^O)Yoq% zEQbx=Hj*kA{CA|M1sCqw1~lGn@d09H*0FA(4MP~hL%;(qa*Ivb9gW1B|7qwIZT=YJ zmGQb=B<hxoE??m8j=%;7pO<fLKVNU<ske{zgy(*~Q#T8zgf*WxG~pi!G~BC+uUH&q zn_DA=rT$(+*L%lw^#a+iYpk}B->cWzJSPF82Fov@A8n-_)7zOnN}8w_R*0xvDJaX* zFZQ(U(2Yn64(><k)h!2^lp~H?_k?6><v1I$-E;K44Y!*U3BkZpkg0~3W3$7BY%w3G zg7mk0ZU4jzwf%Rh)r<O9Nd2%1vSz!Ws&u~v1NSi<f6sfi%$wzmvUhYfgIbUC^=`<G z7rSnKKJ|K_gBkV&eB<W)IVTe{gYC5HJe9R9DRqn(*~4y^j1RB+;Jbq4EA&fe0r8El zqp2w&y9Te#ejF{?fG9%^Ib37BgcdJ{@DBqXrX3Tu=rk7;OJ;K_s$g$4T-q<5(bD`i zHg<;_)`WeWXJu`gViGbVX!tl2!#d`f2~w@l(fOj9p7^}tS|6;Si_3C{y5kRbY-#V% zaB^8D<;zJVDs6rV$UqOF{v3;bzDL6?<`*sPbZ0r^0?irm1RdVBgP1p#MvIMGkaeHG z%lIq2Rk=xZ?=Feqg&P5aA+R+p@!21wKI6oX3e;p#Aoo~uf;DmtL&^m&)wk4c9PssY zUVPq%k&SHtKIxak+c1)%l3g_;%mX)o(q9d-U<fnA$V2fJ&j7%ln1?Ed`vf<jM=KWp zK<-4<-70Hj=p(_mj8<76BH3&7515;22Vzs2)5=2kR%%HTomCSG1LldUT<4QYi95aq zv_Z9s8$PL1$_t3S^n7XrNWL@$@bUfh5kR^@RS{@=D4Jq>RpMO>M53iHjZKWU3W73E zsFU0`=*ZhOQ-OGFvg`}$60Zedb9KDSuPFd)3&=@coAv+YCo*V^hnwZC-Q*8^l5Skg z#n`A94q{xu7pWs+ex1!mf=KJu&B9CGqZRLmb)PNi<<6_m(P^^j-PNj5Mj-8Pj`vv7 z1POpAq;*0!m(-LZrb{rnCsbXk)d2&<x4=L7GE=y7H6pP|;EMUK6(41i?$T(L@?*={ zI<+g^7yVn<nT)OA$vn|{(S#k4TNjcAG-_!y=#D4ly<J-+Uy{pz{lUfI^fqR<5hj&o zFqCJ}EEy5WcuYri8cIS{N`U=*;}Rz-aH%LBRCPit$I)(+_piChXlNNtl*5$dP;tXL zxQEpgm6W2EA`Z2EFiRC`WV&t{*bP4({m)*lYQxJ;Erpq`TL<>Sk<q!myVfNBm+tZJ zXO~8{9)C9Tq=WMn`9gl;{LoP=RN!hq&yA3O`Oc0}kf3r_Di5i2Qhstce)*f83{-SZ zuWq&N`nf`%D2k`}!f62LwDZ4!HCjHvE2Z11C8o{)h-=jWKjlOyDk$O(fAzyHiQ)Qt z$DL0C5(lzLm7G!v(2t}c??x-!LldLp2O#-57SF>)rY@;J2rUm}!;Y`LyYaK^&$fL@ vOm9gvg^<=xOKO?OoL!u-V;)whK6`#yBrl6?>jHS^CYO_LCn}F${NdjLLRYb( literal 0 HcmV?d00001 diff --git a/img/squads_list.png b/img/squads_list.png new file mode 100644 index 0000000000000000000000000000000000000000..13dbbf827cb58a2de1922e4514b1716b01c11e7d GIT binary patch literal 184199 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 K%fI|v@c#m+?WV^7 literal 0 HcmV?d00001 diff --git a/img/squads_sidebar.png b/img/squads_sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..838046626cf9be90d3990e8fa03dcfd592eecc3c GIT binary patch literal 4105 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 literal 0 HcmV?d00001 diff --git a/img/squads_tile.png b/img/squads_tile.png new file mode 100644 index 0000000000000000000000000000000000000000..8b73d19cca14547afc105f8f1a440cabb63d7059 GIT binary patch literal 71903 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 CSSbzw literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 00000000..16ed2d0e --- /dev/null +++ b/index.html @@ -0,0 +1,1434 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/"> + + + + <link rel="next" href="installation/requirements/"> + + <link rel="icon" href="assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>SeAT Documentation</title> + + + + <link rel="stylesheet" href="assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="css/extra_footer.css"> + + <link rel="stylesheet" href="css/extra_typo.css"> + + <script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#home" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Home + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Home + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="." class="md-nav__link md-nav__link--active"> + Home + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#quick-start" class="md-nav__link"> + Quick Start + </a> + + <nav class="md-nav" aria-label="Quick Start"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#installation-options" class="md-nav__link"> + Installation Options + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrades-updates" class="md-nav__link"> + Upgrades / Updates + </a> + +</li> + + <li class="md-nav__item"> + <a href="#contact" class="md-nav__link"> + Contact + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#quick-start" class="md-nav__link"> + Quick Start + </a> + + <nav class="md-nav" aria-label="Quick Start"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#installation-options" class="md-nav__link"> + Installation Options + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrades-updates" class="md-nav__link"> + Upgrades / Updates + </a> + +</li> + + <li class="md-nav__item"> + <a href="#contact" class="md-nav__link"> + Contact + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="home">Home<a class="headerlink" href="#home" title="Permanent link">¶</a></h1> +<p>Welcome to the <a href="https://github.com/eveseat/seat">SeAT</a> documentation pages!</p> +<p>This site aims to provide you with useful, technical information about SeAT. Please refer to the index on the side for detailed installation instructions, documentation about SeAT internals and/or development guidelines!</p> +<div class="admonition info"> +<p class="admonition-title">Contributing to Documentation</p> +<p>Great software is coupled with even greater documentation. If you would like to contribute to making this documentation even better, please don't hesitate to fork the <a href="https://github.com/eveseat/docs">documentation repository</a> and submit a pull request with your contribution. We are always looking for better information.</p> +</div> +<h2 id="quick-start">Quick Start<a class="headerlink" href="#quick-start" title="Permanent link">¶</a></h2> +<p>There are many ways to install SeAT. In all cases you will need a dedicated server as a minimum. +Using the docker installation you are free to choose <em>any</em> Docker capable host (yes, even Windows!). +However, if you choose to install SeAT on bare metal, you'll need a linux distribution. +We suggest you choose an LTS version of Ubuntu, Debian or CentOS.</p> +<h3 id="installation-options">Installation Options<a class="headerlink" href="#installation-options" title="Permanent link">¶</a></h3> +<p>Ignoring the details, to get SeAT installed quickly you have a few options. +All of them will get you SeAT installed, but you still have to manually configure an SSO application on the <a href="https://developers.eveonline.com">EVE Online Developers Portal</a>.</p> +<table> +<thead> +<tr> +<th>Method</th> +<th>Comments</th> +</tr> +</thead> +<tbody> +<tr> +<td>Docker</td> +<td>Follow our <a href="installation/docker_installation/">docker installation</a> guide. This is the recommended way to install SeAT as it will handle near everything for you.</td> +</tr> +<tr> +<td>Manually</td> +<td>You can always install SeAT by following our <a href="installation/manual_installation/">manual installation guide</a>. All you need is PHP, MariaDB, Redis and a web server and some Linux experience.</td> +</tr> +</tbody> +</table> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>While installing SeAT - choose one method, and stick to it. Otherwise, you'll get SeAT installed multiple times.</p> +</div> +<h2 id="upgrades-updates">Upgrades / Updates<a class="headerlink" href="#upgrades-updates" title="Permanent link">¶</a></h2> +<p>SeAT is being worked on continuously. New features are added, performance improvements are made and bugs are fixed. If you wish to upgrade to the latest version of SeAT refer to the <a href="upgrading/general/">upgrade section</a>.</p> +<h2 id="contact">Contact<a class="headerlink" href="#contact" title="Permanent link">¶</a></h2> +<p>Want to get in touch with developers, or just other users of SeAT? Refer to the <a href="about/contact/">contact</a> section to find out how!</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": ".", "features": ["content.code.copy"], "search": "assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/installation/docker_installation/index.html b/installation/docker_installation/index.html new file mode 100644 index 00000000..039d026d --- /dev/null +++ b/installation/docker_installation/index.html @@ -0,0 +1,1728 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/installation/docker_installation/"> + + + <link rel="prev" href="../requirements/"> + + + <link rel="next" href="../manual_installation/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Docker Installation (5.x) - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#docker" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Docker Installation (5.x) + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Docker Installation (5.x) + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Docker Installation (5.x) + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#internal-container-setup-overview" class="md-nav__link"> + Internal Container Setup Overview + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-installation" class="md-nav__link"> + SeAT Docker Installation + </a> + + <nav class="md-nav" aria-label="SeAT Docker Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automated-setup-script" class="md-nav__link"> + Automated Setup Script + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual-deployment" class="md-nav__link"> + Manual Deployment + </a> + + <nav class="md-nav" aria-label="Manual Deployment"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-download" class="md-nav__link"> + Docker Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-download" class="md-nav__link"> + Docker-compose Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-working-directory" class="md-nav__link"> + Docker compose working directory + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-composeyml-and-env-file" class="md-nav__link"> + SeAT docker-compose.yml and .env File + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-configuration" class="md-nav__link"> + SeAT docker configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#monitoring-the-stack" class="md-nav__link"> + Monitoring the Stack + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#internal-container-setup-overview" class="md-nav__link"> + Internal Container Setup Overview + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-installation" class="md-nav__link"> + SeAT Docker Installation + </a> + + <nav class="md-nav" aria-label="SeAT Docker Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automated-setup-script" class="md-nav__link"> + Automated Setup Script + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual-deployment" class="md-nav__link"> + Manual Deployment + </a> + + <nav class="md-nav" aria-label="Manual Deployment"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-download" class="md-nav__link"> + Docker Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-download" class="md-nav__link"> + Docker-compose Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-working-directory" class="md-nav__link"> + Docker compose working directory + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-composeyml-and-env-file" class="md-nav__link"> + SeAT docker-compose.yml and .env File + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-configuration" class="md-nav__link"> + SeAT docker configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#monitoring-the-stack" class="md-nav__link"> + Monitoring the Stack + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="docker">Docker<a class="headerlink" href="#docker" title="Permanent link">¶</a></h1> +<p>Docker is ideally the installation route you want to go. Docker enables us to run SeAT on any platform capable of running docker itself (which includes Windows!). Additionally, upgrades and service maintenance are really low effort as you don't have to care about any dependencies. All of it is maintained within a docker stack, DockerHub and the GitHub Container Registry.</p> +<div class="admonition info"> +<p class="admonition-title">Windows owner recommendation</p> +<p>If you plan on running Docker on Windows, for the best performance it is suggested that you run Docker using the Windows Subsystem for Linux 2 (WSL2) backend, available starting in Windows 10/Windows Server 20H1 (build 2004) releases.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Windows owner special installation path</p> +<p>If you are using Docker on Windows, you will need to use the <a href="#manual-deployment">Manual Deployment</a> option below.</p> +</div> +<div class="admonition tip"> +<p class="admonition-title">Tip</p> +<p>Before starting the installation process, be sure you read this complete document first. It will help you understand all the steps from an installation process.</p> +<p>If you feel like docker might not be your cup of tea, checkout some of the other <a href="https://docs.docker.com/get-started/">getting started</a> guides that are available.</p> +</div> +<div class="admonition abstract"> +<p class="admonition-title">Eve Application and ESI</p> +<p>SeAT uses CCP's <a href="https://esi.evetech.net/">ESI</a> service in order to retrieve EVE Online-related information. Before you can make any authenticated calls to ESI, you have to register a third-party EVE application on the <a href="developers.eveonline.com/">developers portal</a>. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p> +</div> +<h2 id="internal-container-setup-overview">Internal Container Setup Overview<a class="headerlink" href="#internal-container-setup-overview" title="Permanent link">¶</a></h2> +<p>The setup for SeAT's docker installation orchestrated using <a href="https://docs.docker.com/compose/">docker-compose</a>. With docker-compose, we can use <code>YAML</code> files to define the entire stack complete with all the dependencies required to run SeAT. A pre-built and recommended compose file (which is also used by the bootstrapping script) is hosted in the seat-docker repository <a href="https://github.com/eveseat/seat-docker">here</a>.</p> +<p>The official SeAT repository for Docker is shipped with a total of 4 <code>YAML</code> files, allowing you both flexibility and understandability of the overall stack. A high-level overview of its contents is:</p> +<ul> +<li>A main <code>docker-compose.yml</code> file in which are listed SeAT services (<code>front</code> to serve web ui, <code>worker</code> to process jobs, <code>scheduler</code> to manage repetitive tasks and <code>cache</code> to store jobs queue)</li> +<li>A database <code>docker-compose.mariadb.yml</code> file in which is listed a <code>mariadb</code> service - this way, you can replace mariadb by another supported database engine</li> +<li>A Traefik <code>docker-compose.traefik.yml</code> file in which is listed a <code>traefik</code> service - this way you can simply and safely server your SeAT frontend to the rest of the world</li> +<li>An alternative to Traefik <code>docker-compose.proxy.yml</code> file in which is adapted <code>front</code> SeAT container to be server behind a reverse proxy of your choice</li> +<li>A volume called <code>mariadb-data</code> and <code>seat-storage</code> is defined. These are the <em>most important</em> volumes as they contain all SeAT data. You should configure a backup solution for them!</li> +<li>The environment is configured using a top-level <code>.env</code> file.</li> +<li>Only one port is exposed by default. This is <code>tcp/8080</code>. It can be connected to in order to access the SeAT web interface.</li> +<li>When using the stack with Traefik (which is the easier and recommended approach), ports <code>tcp/80</code> and <code>tcp/443</code> are exposed and <code>tcp/8080</code> remain unbound.</li> +<li>All containers are configured to restart on failure, so if your server reboots or a container dies for whatever reason it should automatically start up again.</li> +</ul> +<p>The table bellow is listed overall consumed Docker image, including SeAT custom one - together with their source repository.</p> +<table> +<thead> +<tr> +<th>Image Name</th> +<th>Image Repository</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>mariadb:10.11</code></td> +<td><a href="https://hub.docker.com/_/mariadb/">https://hub.docker.com/_/mariadb/</a></td> +</tr> +<tr> +<td><code>redis:5-alpine</code></td> +<td><a href="https://hub.docker.com/_/redis/">https://hub.docker.com/_/redis/</a></td> +</tr> +<tr> +<td><code>traefik:2.10</code></td> +<td><a href="https://hub.docker.com/_/traefik">https://hub.docker.com/_/traefik</a></td> +</tr> +<tr> +<td><code>ghcr.io/eveseat/seat:5</code></td> +<td><a href="https://github.com/eveseat/seat-docker/pkgs/container/seat">https://github.com/eveseat/seat-docker/pkgs/container/seat</a></td> +</tr> +</tbody> +</table> +<h2 id="seat-docker-installation">SeAT Docker Installation<a class="headerlink" href="#seat-docker-installation" title="Permanent link">¶</a></h2> +<p>Depending on whether you already have <code>docker</code> and <code>docker compose</code> already installed, you may choose how to start the installation. If you already have the required tooling installed and running their latest versions, all you need to do is download the latest <strong>SeAT Docker template archive</strong> to get started.</p> +<h3 id="automated-setup-script">Automated Setup Script<a class="headerlink" href="#automated-setup-script" title="Permanent link">¶</a></h3> +<p>If you do not have the required software installed yet, consider running the <a href="https://github.com/eveseat/seat-docker/blob/master/bootstrap.sh">bootstrap script</a> that will check for <code>docker</code> and <code>docker compose</code>, install it and start the SeAT stack up for you. The script can be run with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>bash<span class="w"> </span><<span class="o">(</span>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/bootstrap.sh<span class="o">)</span> +</span></code></pre></div> +<p>Once the script is finished, you can skip to the <a href="#monitoring-the-stack">monitoring the stack</a> section of this guide.</p> +<p>If you don't want to run this script, follow along in the next section of this guide.</p> +<h3 id="manual-deployment">Manual Deployment<a class="headerlink" href="#manual-deployment" title="Permanent link">¶</a></h3> +<h4 id="docker-download">Docker Download<a class="headerlink" href="#docker-download" title="Permanent link">¶</a></h4> +<p>If you do not have <code>docker</code>, install it now.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Linux</label><label for="__tabbed_1_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>Under Linux, you can achieve this action by using the following command as <code>root</code>:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>sh<span class="w"> </span><<span class="o">(</span>curl<span class="w"> </span>-fsSL<span class="w"> </span>get.docker.com<span class="o">)</span> +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<p>Under Windows, you can achieve this action by downloading and installing <a href="https://www.docker.com/products/docker-desktop">Docker Desktop</a>.</p> +</div> +</div> +</div> +<h4 id="docker-compose-download">Docker-compose Download<a class="headerlink" href="#docker-compose-download" title="Permanent link">¶</a></h4> +<p>If you do not have <code>docker compose</code>, install it now with the following command as <code>root</code> (Docker Compose is included with Docker Desktop on Windows):</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span> +<span class="normal"><a href="#__codelineno-2-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="c1"># Downloads and install docker compose from Docker repository</span> +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>sudo<span class="w"> </span>apt-get<span class="w"> </span>update +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a>sudo<span class="w"> </span>apt-get<span class="w"> </span>install<span class="w"> </span>docker-compose-plugin +</span></code></pre></div></td></tr></table></div> +<h4 id="docker-compose-working-directory">Docker compose working directory<a class="headerlink" href="#docker-compose-working-directory" title="Permanent link">¶</a></h4> +<p>With <code>docker</code> and <code>docker compose</code> ready, create yourself a directory in <code>/opt</code> with <code>mkdir -p /opt/seat-docker</code> and <code>cd</code> to it. Remember this directory as you will need to come back to it often.</p> +<p>On Windows, create the <code>C:\seat-docker</code> directory with <code>mkdir C:\seat-docker</code> and <code>cd</code> to it.</p> +<h4 id="seat-docker-composeyml-and-env-file">SeAT docker-compose.yml and .env File<a class="headerlink" href="#seat-docker-composeyml-and-env-file" title="Permanent link">¶</a></h4> +<p>Then, download the <strong>SeAT Docker template archive</strong> with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Linux</label><label for="__tabbed_2_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://github.com/eveseat/seat-docker/archive/refs/heads/master.zip<span class="w"> </span>-o<span class="w"> </span>seat-docker.zip +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nb">Invoke-WebRequest</span> <span class="n">-Uri</span> <span class="n">https</span><span class="p">://</span><span class="n">github</span><span class="p">.</span><span class="n">com</span><span class="p">/</span><span class="n">eveseat</span><span class="p">/</span><span class="n">seat-docker</span><span class="p">/</span><span class="n">archive</span><span class="p">/</span><span class="n">refs</span><span class="p">/</span><span class="n">heads</span><span class="p">/</span><span class="n">master</span><span class="p">.</span><span class="n">zip</span> <span class="n">-OutFile</span> <span class="n">seat-docker</span><span class="p">.</span><span class="n">zip</span> +</span></code></pre></div> +</div> +</div> +</div> +<p>Next, decompress the template archive:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Linux</label><label for="__tabbed_3_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>unzip<span class="w"> </span>seat-docker.zip<span class="w"> </span>-d<span class="w"> </span>/opt/seat-docker<span class="w"> </span>-j +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nb">Expand-Archive</span> <span class="n">-Path</span> <span class="n">c</span><span class="p">:\</span><span class="n">seat-docker</span><span class="p">\</span><span class="n">seat-docker</span><span class="p">.</span><span class="n">zip</span> <span class="n">-DestinationPath</span> <span class="n">c</span><span class="p">:\</span><span class="n">seat-docker</span> +</span></code></pre></div> +</div> +</div> +</div> +<p>Next, we will generate a unique application key - this is used internally for encryption:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">Linux</label><label for="__tabbed_4_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>sed<span class="w"> </span>-i<span class="w"> </span>--<span class="w"> </span><span class="s1">'s/APP_KEY=insecure/APP_KEY='</span><span class="k">$(</span>head<span class="w"> </span>/dev/urandom<span class="w"> </span><span class="p">|</span><span class="w"> </span>tr<span class="w"> </span>-dc<span class="w"> </span>A-Za-z0-9<span class="w"> </span><span class="p">|</span><span class="w"> </span>head<span class="w"> </span>-c32<span class="w"> </span><span class="p">;</span><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s1">''</span><span class="k">)</span><span class="s1">'/g'</span><span class="w"> </span>.env +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="nv">$appkey</span> <span class="p">=</span> <span class="p">(</span><span class="n">-join</span> <span class="p">((</span><span class="n">65</span><span class="p">..</span><span class="n">90</span><span class="p">)</span> <span class="p">+</span> <span class="p">(</span><span class="n">97</span><span class="p">..</span><span class="n">122</span><span class="p">)</span> <span class="p">|</span> <span class="nb">Get-Random</span> <span class="n">-Count</span> <span class="n">32</span> <span class="p">|</span> <span class="p">%</span> <span class="p">{</span><span class="no">[char]</span><span class="nv">$_</span><span class="p">}));</span> <span class="p">(</span><span class="nb">Get-Content</span> <span class="p">.</span><span class="n">env</span> <span class="n">-Raw</span><span class="p">)</span> <span class="o">-replace</span> <span class="s2">"APP_KEY=insecure"</span><span class="p">,</span> <span class="s2">"APP_KEY=$appkey"</span> <span class="p">|</span> <span class="nb">Set-Content</span> <span class="p">.</span><span class="n">env</span> +</span></code></pre></div> +</div> +</div> +</div> +<h4 id="seat-docker-configuration">SeAT docker configuration<a class="headerlink" href="#seat-docker-configuration" title="Permanent link">¶</a></h4> +<p>Open up the <code>.env</code> file in a text editor and fill in a few of the configuration items needed.</p> +<ul> +<li><code>PROXY_BACKEND_HTTP_PORT</code> adapt to any integer of your convenience between 1 and 65535 in case you plan to serve SeAT behind a reverse proxy.</li> +<li><code>TRAEFIK_ACME_EMAIL</code> adapt with your own e-mail address in case you plan to serve SeAT behind Traefik.</li> +<li><code>SEAT_DOMAIN</code> should be set to the domain your installation lives on and on which SeAT UI will be served. </li> +<li><code>DB_PASSWORD</code> must be adapt with a strong password of your own - it will be used as SeAT credential for its database.</li> +</ul> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>The <code>DB_PASSWORD</code> value have to and must be changed only once - before any start of the overall stack. +As soon as the database container is created, SeAT user account is initialized with the <code>DB_PASSWORD</code> value. +Changing it after the initial startup will prevent the stack to boot.</p> +<p>Also, at the initial startup, the root password from the database container will be shown in logs. +You should consider taking a note of it - otherwise you will no longer have a way to recovery of a critical outage (ie: misconfiguration, etc...)</p> +</div> +<p>Finally, in case you plan to serve SeAT using Traefik, create an ACME configuration file with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span> +<span class="normal"><a href="#__codelineno-9-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>mkdir<span class="w"> </span>acme +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>touch<span class="w"> </span>acme/acme.json +</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3"></a>chmod<span class="w"> </span><span class="m">600</span><span class="w"> </span>acme/acme.json +</span></code></pre></div></td></tr></table></div> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>SeAT docker template is shipped with <a href="https://containo.us/traefik/">Traefik</a> to hide your container behind a proxy and securing traffic up to it. In case you want to manage traffic proxying and certification on your own, you must use <code>docker-compose.proxy.yml</code> file on startup.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>The location of the <code>docker-compose.yml</code> and <code>.env</code> files are important. You need to <code>cd</code> back to the directory where these are stored in order to be able to execute commands for this stack at a later stage.</p> +<p>Also, be sure you provide a valid e-mail address as it will be used to register your account against <a href="https://letsencrypt.org">Let's Encrypt</a> in case you plan to serve SeAT with Traefik. For those unfamiliar with this, it's CA that provides valid certificates for free.</p> +</div> +<h3 id="esi-configuration">ESI Configuration<a class="headerlink" href="#esi-configuration" title="Permanent link">¶</a></h3> +<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions on how to do this, please refer to the <a href="../../configuration/esi_configuration/">ESI Setup Guide</a>.</p> +<p>With the configuration files ready, start up the stack with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">Using Traefik</label><label for="__tabbed_5_2">Using proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up +</span></code></pre></div> +</div> +</div> +</div> +<h2 id="monitoring-the-stack">Monitoring the Stack<a class="headerlink" href="#monitoring-the-stack" title="Permanent link">¶</a></h2> +<p>Knowing what is going on inside your containers is crucial to understanding how everything is running as well as useful when debugging any problems that may occur. While the containers are starting up or have been running for a while, you can always <code>cd</code> to the directory where your <code>docker-compose.yml</code> file lives and run the <code>logs</code> command to see the output of all the containers in the stack. For example:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span> +<span class="normal"><a href="#__codelineno-12-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="nb">cd</span><span class="w"> </span>/opt/seat-docker +</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div></td></tr></table></div> +<p>These commands will <code>cd</code> to the directory containing the stacks <code>docker-compose.yml</code> file and run the <code>logs</code> command, showing the last <em>10</em> log entries and then printing new ones as they arrive. If you leave away the <code>--tail 10</code>part, you can view all logs since the container startup.</p> +<h2 id="configuration-changes">Configuration Changes<a class="headerlink" href="#configuration-changes" title="Permanent link">¶</a></h2> +<p>All the relevant configuration lives inside the <code>.env</code> file, next to your <code>docker-compose.yml</code> file. Modify their values by opening it in a text editor, making the appropriate changes, and saving it again. +Once that is done, restart the container environment:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">Using Traefik</label><label for="__tabbed_6_2">Using proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +</div> +</div> +<div class="admonition success"> +<p class="admonition-title">Success</p> +<p>You made it! Use a browser and browse to the domain / subdomain of your server to access SeAT!</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/installation/manual_installation/index.html b/installation/manual_installation/index.html new file mode 100644 index 00000000..ed3cf524 --- /dev/null +++ b/installation/manual_installation/index.html @@ -0,0 +1,2194 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/installation/manual_installation/"> + + + <link rel="prev" href="../docker_installation/"> + + + <link rel="next" href="../old_versions/docker_installation_seat_4/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Manual Installation (5.x) - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#manual-installation" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Manual Installation (5.x) + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Manual Installation (5.x) + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Manual Installation (5.x) + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#os-installation" class="md-nav__link"> + OS Installation + </a> + + <nav class="md-nav" aria-label="OS Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#operating-system" class="md-nav__link"> + Operating System + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#redis" class="md-nav__link"> + Redis + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-installation" class="md-nav__link"> + SeAT Installation + </a> + + <nav class="md-nav" aria-label="SeAT Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#prerequisites" class="md-nav__link"> + Prerequisites + </a> + + <nav class="md-nav" aria-label="Prerequisites"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#git" class="md-nav__link"> + Git + </a> + +</li> + + <li class="md-nav__item"> + <a href="#composer" class="md-nav__link"> + Composer + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-download" class="md-nav__link"> + SeAT Download + </a> + + <nav class="md-nav" aria-label="SeAT Download"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-setup" class="md-nav__link"> + SeAT Setup + </a> + + <nav class="md-nav" aria-label="SeAT Setup"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#env-setup" class="md-nav__link"> + .env setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-migrations-and-seeds" class="md-nav__link"> + Database Migrations and Seeds + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eve-sde-update" class="md-nav__link"> + EVE Sde Update + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#supervisor" class="md-nav__link"> + Supervisor + </a> + +</li> + + <li class="md-nav__item"> + <a href="#crontab" class="md-nav__link"> + Crontab + </a> + +</li> + + <li class="md-nav__item"> + <a href="#web-server" class="md-nav__link"> + Web Server + </a> + + <nav class="md-nav" aria-label="Web Server"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#nginx-install" class="md-nav__link"> + Nginx Install + </a> + +</li> + + <li class="md-nav__item"> + <a href="#nginx-configuration" class="md-nav__link"> + Nginx Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#os-installation" class="md-nav__link"> + OS Installation + </a> + + <nav class="md-nav" aria-label="OS Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#operating-system" class="md-nav__link"> + Operating System + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#redis" class="md-nav__link"> + Redis + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-installation" class="md-nav__link"> + SeAT Installation + </a> + + <nav class="md-nav" aria-label="SeAT Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#prerequisites" class="md-nav__link"> + Prerequisites + </a> + + <nav class="md-nav" aria-label="Prerequisites"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#git" class="md-nav__link"> + Git + </a> + +</li> + + <li class="md-nav__item"> + <a href="#composer" class="md-nav__link"> + Composer + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-download" class="md-nav__link"> + SeAT Download + </a> + + <nav class="md-nav" aria-label="SeAT Download"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-setup" class="md-nav__link"> + SeAT Setup + </a> + + <nav class="md-nav" aria-label="SeAT Setup"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#env-setup" class="md-nav__link"> + .env setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-migrations-and-seeds" class="md-nav__link"> + Database Migrations and Seeds + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eve-sde-update" class="md-nav__link"> + EVE Sde Update + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#supervisor" class="md-nav__link"> + Supervisor + </a> + +</li> + + <li class="md-nav__item"> + <a href="#crontab" class="md-nav__link"> + Crontab + </a> + +</li> + + <li class="md-nav__item"> + <a href="#web-server" class="md-nav__link"> + Web Server + </a> + + <nav class="md-nav" aria-label="Web Server"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#nginx-install" class="md-nav__link"> + Nginx Install + </a> + +</li> + + <li class="md-nav__item"> + <a href="#nginx-configuration" class="md-nav__link"> + Nginx Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="manual-installation">Manual Installation<a class="headerlink" href="#manual-installation" title="Permanent link">¶</a></h1> +<p>This guide attempts to explain how to manually install SeAT onto an <strong>Ubuntu</strong> Server. +A small amount of Linux experience is preferred when it comes to this guide, although it is not entirely mandatory.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>This guide has been written targetting Ubuntu. However, you can use it to deploy SeAT on any linux distribution. +Just be sure you adapt commands to targetted distribution (mostly those related to the package manager).</p> +</div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Before starting to do anything, be sure you read the complete workflow once. +It will help you to understand all steps from the installation process.</p> +</div> +<div class="admonition note"> +<p class="admonition-title">Eve Application and ESI</p> +<p>SeAT consumes CCP's <a href="https://esi.evetech.net/">ESI</a> service in order to retrieve EVE Online related information. +Before you can make any authenticated calls to ESI, you have to register a third party EVE application on the <a href="developers.eveonline.com/">developers portal</a>. +This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p> +</div> +<h2 id="getting-started">Getting started<a class="headerlink" href="#getting-started" title="Permanent link">¶</a></h2> +<p>We are going to assume you have root access to a fresh Ubuntu Server. +Typically access is gained via SSH. +All of the below commands are to be entered in the SSH terminal session for the installation & configuration of SeAT. +If the server you want to install SeAT on is being used for other things too (such as hosting MySQL databases and or websites), then please keep that in mind while following this guide.</p> +<p>Packages are installed using the <code>aptitude</code> package manager as the <code>root</code> user.</p> +<h2 id="os-installation">OS Installation<a class="headerlink" href="#os-installation" title="Permanent link">¶</a></h2> +<h3 id="operating-system">Operating System<a class="headerlink" href="#operating-system" title="Permanent link">¶</a></h3> +<p>Before we get to installing SeAT, lets ensure that your operating system is up to date. We can do that with basics :</p> +<ul> +<li><code>apt-get update</code> to refresh the repositories cache.</li> +<li><code>apt-get full-upgrade</code> to update any installed packages.</li> +<li><code>reboot</code> in order to ensure any updated software is the current running version.</li> +<li><code>apt-get autoremove</code> (after the reboot) to cleanup any unneeded packages.</li> +</ul> +<h3 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h3> +<p>SeAT relies <strong>heavily</strong> on a database to function. Everything it learns is stored here, along with things such as user accounts for your users. +It comes without saying that database security is a very important aspect too. So, ensure that you choose very strong passwords for your installation where required.</p> +<p>SeAT officially supports just MariaDB. Using MySQL or PostreSQL might appear to work on the surface, however it is likely that you will run into issues due to differences between the databases later down the line, and almost no testing with them is done during development.</p> +<p>We need to ensure that we have the latest MariaDB installed. To help with this, MariaDB provides an official repository to get the latest versions.</p> +<p>To download and install the repo, you need <code>curl</code>. Install it with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>curl +</span></code></pre></div> +<p>Let's add this repository with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>curl<span class="w"> </span>-sS<span class="w"> </span>https://downloads.mariadb.com/MariaDB/mariadb_repo_setup<span class="w"> </span><span class="p">|</span><span class="w"> </span>bash +</span></code></pre></div> +<p>With the repository now setup, lets install the database server:</p> +<div class="admonition warning"> +<p class="admonition-title">Warning<p>During the installation, you may be asked to set a password for the <code>root</code> MariaDB user account. +Make sure you set a long, strong password and remember it. It will be needed for the next step.</p> +</p> +</div> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>mariadb-server +</span></code></pre></div> +<p>Before we can configure the database, we have to start it:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>mariadb.service +</span></code></pre></div> +<p>Next, we are going to secure the database server by removing anonymous access and setting a <code>root</code> password (if you have not been prompted for it yet).</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>The database <code>root</code> password should not be confused with the operating systems <code>root</code> passwords. They are both completely different. +They should also not have the same password.</p> +</div> +<p>To secure the database, run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>mariadb-secure-installation +</span></code></pre></div> +<p>This will ask you a series of questions where you should generally just answer yes to. If you already set a <code>root</code> password in the previous step then you dont have to set it again, otherwise, make sure you choose a long, strong password for the <code>root</code> account. An example run is shown below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-5-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-5-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-5-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-5-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-5-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-5-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-5-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-5-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-5-10">10</a></span> +<span class="normal"><a href="#__codelineno-5-11">11</a></span> +<span class="normal"><a href="#__codelineno-5-12">12</a></span> +<span class="normal"><a href="#__codelineno-5-13">13</a></span> +<span class="normal"><a href="#__codelineno-5-14">14</a></span> +<span class="normal"><a href="#__codelineno-5-15">15</a></span> +<span class="normal"><a href="#__codelineno-5-16">16</a></span> +<span class="normal"><a href="#__codelineno-5-17">17</a></span> +<span class="normal"><a href="#__codelineno-5-18">18</a></span> +<span class="normal"><a href="#__codelineno-5-19">19</a></span> +<span class="normal"><a href="#__codelineno-5-20">20</a></span> +<span class="normal"><a href="#__codelineno-5-21">21</a></span> +<span class="normal"><a href="#__codelineno-5-22">22</a></span> +<span class="normal"><a href="#__codelineno-5-23">23</a></span> +<span class="normal"><a href="#__codelineno-5-24">24</a></span> +<span class="normal"><a href="#__codelineno-5-25">25</a></span> +<span class="normal"><a href="#__codelineno-5-26">26</a></span> +<span class="normal"><a href="#__codelineno-5-27">27</a></span> +<span class="normal"><a href="#__codelineno-5-28">28</a></span> +<span class="normal"><a href="#__codelineno-5-29">29</a></span> +<span class="normal"><a href="#__codelineno-5-30">30</a></span> +<span class="normal"><a href="#__codelineno-5-31">31</a></span> +<span class="normal"><a href="#__codelineno-5-32">32</a></span> +<span class="normal"><a href="#__codelineno-5-33">33</a></span> +<span class="normal"><a href="#__codelineno-5-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a> +</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a>Enter<span class="w"> </span>current<span class="w"> </span>password<span class="w"> </span><span class="k">for</span><span class="w"> </span>root<span class="w"> </span><span class="o">(</span>enter<span class="w"> </span><span class="k">for</span><span class="w"> </span>none<span class="o">)</span>:<span class="w"> </span>IF<span class="w"> </span>ONE<span class="w"> </span>WAS<span class="w"> </span>SET,<span class="w"> </span>IGNORE<span class="w"> </span>THIS +</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a>OK,<span class="w"> </span>successfully<span class="w"> </span>used<span class="w"> </span>password,<span class="w"> </span>moving<span class="w"> </span>on... +</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a> +</span><span id="__span-5-6"><a id="__codelineno-5-6" name="__codelineno-5-6"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-7"><a id="__codelineno-5-7" name="__codelineno-5-7"></a> +</span><span id="__span-5-8"><a id="__codelineno-5-8" name="__codelineno-5-8"></a>Set<span class="w"> </span>root<span class="w"> </span>password?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-5-9"><a id="__codelineno-5-9" name="__codelineno-5-9"></a>New<span class="w"> </span>password:<span class="w"> </span>SET<span class="w"> </span>A<span class="w"> </span>STRONG<span class="w"> </span>PASSWORD<span class="w"> </span>HERE +</span><span id="__span-5-10"><a id="__codelineno-5-10" name="__codelineno-5-10"></a>Re-enter<span class="w"> </span>new<span class="w"> </span>password:<span class="w"> </span>SET<span class="w"> </span>A<span class="w"> </span>STRONG<span class="w"> </span>PASSWORD<span class="w"> </span>HERE +</span><span id="__span-5-11"><a id="__codelineno-5-11" name="__codelineno-5-11"></a>Password<span class="w"> </span>updated<span class="w"> </span>successfully! +</span><span id="__span-5-12"><a id="__codelineno-5-12" name="__codelineno-5-12"></a>Reloading<span class="w"> </span>privilege<span class="w"> </span>tables.. +</span><span id="__span-5-13"><a id="__codelineno-5-13" name="__codelineno-5-13"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-5-14"><a id="__codelineno-5-14" name="__codelineno-5-14"></a> +</span><span id="__span-5-15"><a id="__codelineno-5-15" name="__codelineno-5-15"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-16"><a id="__codelineno-5-16" name="__codelineno-5-16"></a> +</span><span id="__span-5-17"><a id="__codelineno-5-17" name="__codelineno-5-17"></a>Remove<span class="w"> </span>anonymous<span class="w"> </span>users?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-5-18"><a id="__codelineno-5-18" name="__codelineno-5-18"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-5-19"><a id="__codelineno-5-19" name="__codelineno-5-19"></a> +</span><span id="__span-5-20"><a id="__codelineno-5-20" name="__codelineno-5-20"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-21"><a id="__codelineno-5-21" name="__codelineno-5-21"></a> +</span><span id="__span-5-22"><a id="__codelineno-5-22" name="__codelineno-5-22"></a>Disallow<span class="w"> </span>root<span class="w"> </span>login<span class="w"> </span>remotely?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-5-23"><a id="__codelineno-5-23" name="__codelineno-5-23"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-5-24"><a id="__codelineno-5-24" name="__codelineno-5-24"></a> +</span><span id="__span-5-25"><a id="__codelineno-5-25" name="__codelineno-5-25"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-26"><a id="__codelineno-5-26" name="__codelineno-5-26"></a> +</span><span id="__span-5-27"><a id="__codelineno-5-27" name="__codelineno-5-27"></a>Remove<span class="w"> </span><span class="nb">test</span><span class="w"> </span>database<span class="w"> </span>and<span class="w"> </span>access<span class="w"> </span>to<span class="w"> </span>it?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-5-28"><a id="__codelineno-5-28" name="__codelineno-5-28"></a> +</span><span id="__span-5-29"><a id="__codelineno-5-29" name="__codelineno-5-29"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-5-30"><a id="__codelineno-5-30" name="__codelineno-5-30"></a> +</span><span id="__span-5-31"><a id="__codelineno-5-31" name="__codelineno-5-31"></a>Reload<span class="w"> </span>privilege<span class="w"> </span>tables<span class="w"> </span>now?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-5-32"><a id="__codelineno-5-32" name="__codelineno-5-32"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-5-33"><a id="__codelineno-5-33" name="__codelineno-5-33"></a> +</span><span id="__span-5-34"><a id="__codelineno-5-34" name="__codelineno-5-34"></a><span class="o">[</span>...<span class="o">]</span> +</span></code></pre></div></td></tr></table></div> +<p>That concludes the installation of the database server and securing it.</p> +<p>Next, we need to create an actual user and database for SeAT to use on the newly installed server. To do this we use the <code>mariadb</code> command line client and enter a few commands as the <code>root</code> user to create the database and the user that will be accessing the server. Let get to it.</p> +<p>Fire up the <code>mariadb</code> client as root by running:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>mariadb<span class="w"> </span>-uroot<span class="w"> </span>-p +</span></code></pre></div> +<p>This will prompt you for a password. Use the password you configured for the <code>root</code> account when we ran <code>mysql_secure_installation</code>. This will most probably be the last time you need to use this password :)</p> +<p>If the password was correct, you should see a prompt similar to the one below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1">1</a></span> +<span class="normal"><a href="#__codelineno-7-2">2</a></span> +<span class="normal"><a href="#__codelineno-7-3">3</a></span> +<span class="normal"><a href="#__codelineno-7-4">4</a></span> +<span class="normal"><a href="#__codelineno-7-5">5</a></span> +<span class="normal"><a href="#__codelineno-7-6">6</a></span> +<span class="normal"><a href="#__codelineno-7-7">7</a></span> +<span class="normal"><a href="#__codelineno-7-8">8</a></span> +<span class="normal"><a href="#__codelineno-7-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a>root@ubuntu:~#<span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p +</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2"></a>Enter<span class="w"> </span>password: +</span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3"></a>Welcome<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>MariaDB<span class="w"> </span>monitor.<span class="w"> </span>Commands<span class="w"> </span>end<span class="w"> </span>with<span class="w"> </span><span class="p">;</span><span class="w"> </span>or<span class="w"> </span><span class="se">\g</span>. +</span><span id="__span-7-4"><a id="__codelineno-7-4" name="__codelineno-7-4"></a>Your<span class="w"> </span>MariaDB<span class="w"> </span>connection<span class="w"> </span>id<span class="w"> </span>is<span class="w"> </span><span class="m">16</span> +</span><span id="__span-7-5"><a id="__codelineno-7-5" name="__codelineno-7-5"></a>Copyright<span class="w"> </span><span class="o">(</span>c<span class="o">)</span><span class="w"> </span><span class="m">2000</span>,<span class="w"> </span><span class="m">2018</span>,<span class="w"> </span>Oracle,<span class="w"> </span>MariaDB<span class="w"> </span>Corporation<span class="w"> </span>Ab<span class="w"> </span>and<span class="w"> </span>others. +</span><span id="__span-7-6"><a id="__codelineno-7-6" name="__codelineno-7-6"></a> +</span><span id="__span-7-7"><a id="__codelineno-7-7" name="__codelineno-7-7"></a>Type<span class="w"> </span><span class="s1">'help;'</span><span class="w"> </span>or<span class="w"> </span><span class="s1">'\h'</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>help.<span class="w"> </span>Type<span class="w"> </span><span class="s1">'\c'</span><span class="w"> </span>to<span class="w"> </span>clear<span class="w"> </span>the<span class="w"> </span>current<span class="w"> </span>input<span class="w"> </span>statement. +</span><span id="__span-7-8"><a id="__codelineno-7-8" name="__codelineno-7-8"></a> +</span><span id="__span-7-9"><a id="__codelineno-7-9" name="__codelineno-7-9"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>> +</span></code></pre></div></td></tr></table></div> +<p>Create a new database for SeAT to use with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>create<span class="w"> </span>database<span class="w"> </span>seat<span class="p">;</span> +</span></code></pre></div> +<p>The output should be similar to the below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>><span class="w"> </span>create<span class="w"> </span>database<span class="w"> </span>seat<span class="p">;</span> +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>Query<span class="w"> </span>OK,<span class="w"> </span><span class="m">1</span><span class="w"> </span>row<span class="w"> </span>affected<span class="w"> </span><span class="o">(</span><span class="m">0</span>.00<span class="w"> </span>sec<span class="o">)</span> +</span></code></pre></div></td></tr></table></div> +<p>Next, we need to create the user that SeAT itself will use to connect and use the new <code>seat</code> database:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>GRANT<span class="w"> </span>ALL<span class="w"> </span>ON<span class="w"> </span>seat.*<span class="w"> </span>to<span class="w"> </span>seat@localhost<span class="w"> </span>IDENTIFIED<span class="w"> </span>BY<span class="w"> </span><span class="s1">'s_p3rs3c3r3tp455w0rd'</span><span class="p">;</span> +</span></code></pre></div> +<p>Of course, you need to replace <code>s_p3rs3c3r3tp455w0rd</code> with your own unique and strong password. +Successfully running this should present you with output similar to the below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span> +<span class="normal"><a href="#__codelineno-11-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>><span class="w"> </span>GRANT<span class="w"> </span>ALL<span class="w"> </span>ON<span class="w"> </span>seat.*<span class="w"> </span>to<span class="w"> </span>seat@localhost<span class="w"> </span>IDENTIFIED<span class="w"> </span>BY<span class="w"> </span><span class="s1">'s_p3rs3c3r3tp455w0rd'</span><span class="p">;</span> +</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2"></a>Query<span class="w"> </span>OK,<span class="w"> </span><span class="m">0</span><span class="w"> </span>rows<span class="w"> </span>affected<span class="w"> </span><span class="o">(</span><span class="m">0</span>.00<span class="w"> </span>sec<span class="o">)</span> +</span></code></pre></div></td></tr></table></div> +<p>In the example above, we have effectively declared that SeAT will be using the database as <code>seat:s_p3rs3c3r3tp455w0rd@localhost/seat</code>.</p> +<p>Finally, we will flush the database server privileges:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>FLUSH<span class="w"> </span>PRIVILEGES<span class="p">;</span> +</span></code></pre></div> +<p>That concludes the database server setup. You can exit the prompt with <code>exit</code>;</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Remember the password for the <code>seat</code> database user as we will need it later to configure SeAT.</p> +</div> +<h3 id="php">PHP<a class="headerlink" href="#php" title="Permanent link">¶</a></h3> +<p>Since SeAT is written primarily in PHP, we will need to install PHP packages. Ubuntu based systems can make use of the <a href="https://launchpad.net/~ondrej/+archive/ubuntu/php">ondrej PPA</a> which is a very popular repository used for specific PHP versions.</p> +<p>Depending on the version of Ubuntu you are using, a release specific repository URL should be used for the PPA. Select the tab applicable to your Ubuntu version and run the commands within.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Jammy 22.04</label><label for="__tabbed_1_2">Focal 20.04</label><label for="__tabbed_1_3">Bionic 18.04</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span> +<span class="normal"><a href="#__codelineno-13-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb http://ppa.launchpad.net/ondrej/php/ubuntu jammy main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jammy main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1">1</a></span> +<span class="normal"><a href="#__codelineno-14-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu focal main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-15-1">1</a></span> +<span class="normal"><a href="#__codelineno-15-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span><span id="__span-15-2"><a id="__codelineno-15-2" name="__codelineno-15-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu bionic main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> +<p>Next, we will have to download the new repositories GPG signing key and add it into our keychain</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>apt-key<span class="w"> </span>adv<span class="w"> </span>--recv-keys<span class="w"> </span>--keyserver<span class="w"> </span>keyserver.ubuntu.com<span class="w"> </span>4F4EA0AAE5267A6C +</span></code></pre></div> +<p>With the new repository configured, update the package lists with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>apt-get<span class="w"> </span>update +</span></code></pre></div> +<p>Finally, install the required PHP packages with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-18-1">1</a></span> +<span class="normal"><a href="#__codelineno-18-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>libpng-dev<span class="w"> </span>libfreetype6-dev<span class="w"> </span>libjpeg-dev +</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2"></a>apt-get<span class="w"> </span>install<span class="w"> </span>openssl<span class="w"> </span>zip<span class="w"> </span>php8.2-bz2<span class="w"> </span>php8.2-cli<span class="w"> </span>php8.2-curl<span class="w"> </span>php8.2-dom<span class="w"> </span>php8.2-gd<span class="w"> </span>php8.2-gmp<span class="w"> </span>php8.2-intl<span class="w"> </span>php8.2-mbstring<span class="w"> </span>php8.2-mysql<span class="w"> </span>php8.2-opcache<span class="w"> </span>php8.2-redis<span class="w"> </span>php8.2-zip +</span></code></pre></div></td></tr></table></div> +<h3 id="redis">Redis<a class="headerlink" href="#redis" title="Permanent link">¶</a></h3> +<p>SeAT makes use of <a href="http://redis.io/">Redis</a> as a cache and message broker for the Queue back end. Installing it is really easy. Do it with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>redis-server +</span></code></pre></div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>By default, redis is making backup from its database - so it ensure integrity in case of failure. +However, in certain condition, like power outage, this backup might be unprocessable and avoid redis to run.</p> +<p>Since we don't store anything critical in it, you may want to disable this. To do so, edit the configuration file +using <code>nano /etc/redis/redis.conf</code> and search line <code>appendonly no</code>, change it for <code>appendonly yes</code></p> +<p>If you are on a small server, You may also want to limit the part of memory used by redis (by default, it will consume all available memory). +To do so, into the redis configuration file, search line <code># maxmemory <bytes></code> and change it for <code>maxmemory xGB</code> where <code>x</code> is the memory limit you want to set.</p> +</div> +<p>You might also need to start redis: +<div class="language-bash highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>redis-server.service +</span></code></pre></div></p> +<h2 id="seat-installation">SeAT Installation<a class="headerlink" href="#seat-installation" title="Permanent link">¶</a></h2> +<h3 id="prerequisites">Prerequisites<a class="headerlink" href="#prerequisites" title="Permanent link">¶</a></h3> +<p>Excellent progress! All of the operating system level requirements are now met and we are almost ready to install SeAT itself. The only thing that is outstanding is the package manager called <code>composer</code> as well as the <code>git</code> client. The combination of <code>composer</code> and <code>git</code> will let us download the SeAT source code from Github and install it locally.</p> +<h4 id="git">Git<a class="headerlink" href="#git" title="Permanent link">¶</a></h4> +<p>Install <code>git</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>git +</span></code></pre></div> +<h4 id="composer">Composer<a class="headerlink" href="#composer" title="Permanent link">¶</a></h4> +<p>Next, install <code>composer</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>curl<span class="w"> </span>-sS<span class="w"> </span>https://getcomposer.org/installer<span class="w"> </span><span class="p">|</span><span class="w"> </span>php<span class="w"> </span>--<span class="w"> </span>--install-dir<span class="o">=</span>/usr/local/bin<span class="w"> </span>--filename<span class="o">=</span>composer<span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">hash</span><span class="w"> </span>-r +</span></code></pre></div> +<p>Thats it. Lets install SeAT! By default, we suggest you run SeAT from within <code>/var/www/seat</code>. As part of the installation, the <code>seat</code> directory will be created for us, but we will need to create <code>/var/www</code> for now as we have not yet configured the web server.</p> +<p>Create the <code>www</code> directory with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-23-1"><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>mkdir<span class="w"> </span>-p<span class="w"> </span>/var/www +</span></code></pre></div> +<p>Next, <code>cd</code> to the new <code>/var/www</code> directory with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="nb">cd</span><span class="w"> </span>/var/www +</span></code></pre></div> +<h3 id="seat-download">SeAT Download<a class="headerlink" href="#seat-download" title="Permanent link">¶</a></h3> +<p>With all of the prerequisites installed as well as our <code>www</code> directory ready we can finally download SeAT. Do that with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>composer<span class="w"> </span>create-project<span class="w"> </span>eveseat/seat:5.0<span class="w"> </span>--no-dev<span class="w"> </span>--no-interaction +</span></code></pre></div> +<p>Once the download is done, you should have seen output such as:</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>Writing lock file +</span><span id="__span-26-2"><a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a>Generating optimized autoload files +</span><span id="__span-26-3"><a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a>> Illuminate\Foundation\ComposerScripts::postAutoloadDump +</span><span id="__span-26-4"><a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a>> @php artisan package:discover +</span><span id="__span-26-5"><a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a>Discovered Package: darkaonline/l5-swagger +</span><span id="__span-26-6"><a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a>Discovered Package: eveseat/api +</span><span id="__span-26-7"><a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a>Discovered Package: eveseat/console +</span><span id="__span-26-8"><a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a>Discovered Package: eveseat/eveapi +</span><span id="__span-26-9"><a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a>Discovered Package: eveseat/notifications +</span><span id="__span-26-10"><a id="__codelineno-26-10" name="__codelineno-26-10" href="#__codelineno-26-10"></a>Discovered Package: eveseat/services +</span><span id="__span-26-11"><a id="__codelineno-26-11" name="__codelineno-26-11" href="#__codelineno-26-11"></a>Discovered Package: eveseat/web +</span><span id="__span-26-12"><a id="__codelineno-26-12" name="__codelineno-26-12" href="#__codelineno-26-12"></a>Package manifest generated successfully. +</span><span id="__span-26-13"><a id="__codelineno-26-13" name="__codelineno-26-13" href="#__codelineno-26-13"></a>> @php artisan key:generate +</span><span id="__span-26-14"><a id="__codelineno-26-14" name="__codelineno-26-14" href="#__codelineno-26-14"></a>Application key [base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k=] set successfully. +</span></code></pre></div> +<h4 id="permissions">Permissions<a class="headerlink" href="#permissions" title="Permanent link">¶</a></h4> +<p>You may have noticed a warning about <code>composer</code> running as <code>root</code>. For now this can be safely ignored. Post the installation of the SeAT source code, we need to fix up the permissions of the downloaded files. Do that with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-27-1">1</a></span> +<span class="normal"><a href="#__codelineno-27-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-27-1"><a id="__codelineno-27-1" name="__codelineno-27-1"></a>chown<span class="w"> </span>-R<span class="w"> </span>www-data:www-data<span class="w"> </span>/var/www/seat +</span><span id="__span-27-2"><a id="__codelineno-27-2" name="__codelineno-27-2"></a>chmod<span class="w"> </span>-R<span class="w"> </span>guo+w<span class="w"> </span>/var/www/seat/storage/ +</span></code></pre></div></td></tr></table></div> +<p>This will ensure that the web server, cron jobs and workers have access to the source code as well as logs.</p> +<h3 id="seat-setup">SeAT Setup<a class="headerlink" href="#seat-setup" title="Permanent link">¶</a></h3> +<p>With SeAT downloaded, we need to configure it. There are a number of configuration tasks needed. These include editing the applications <code>.env</code> file as well as running some commands that setup and seed the database. A configuration value reference can be found <a href="../../configuration/env_file_reference/">here</a>.</p> +<h4 id="env-setup">.env setup<a class="headerlink" href="#env-setup" title="Permanent link">¶</a></h4> +<p>The first task would be to configure the applications database connection. Open the file located at <code>/var/www/seat/.env</code> with something like <code>vi</code> or <code>nano</code> and update the database options with your values. Typically, only the password would really need to be updated. If you are making use of an existing database somewhere else over the network, update the applicable fields such as <code>DB_HOST</code> accordingly.</p> +<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-28-1">1</a></span> +<span class="normal"><a href="#__codelineno-28-2">2</a></span> +<span class="normal"><a href="#__codelineno-28-3">3</a></span> +<span class="normal"><a href="#__codelineno-28-4">4</a></span> +<span class="normal"><a href="#__codelineno-28-5">5</a></span> +<span class="normal"><a href="#__codelineno-28-6">6</a></span> +<span class="normal"><a href="#__codelineno-28-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1"></a><span class="l l-Scalar l-Scalar-Plain">DB_CONNECTION=mysql</span> +</span><span id="__span-28-2"><a id="__codelineno-28-2" name="__codelineno-28-2"></a><span class="l l-Scalar l-Scalar-Plain">DB_HOST=127.0.0.1</span> +</span><span id="__span-28-3"><a id="__codelineno-28-3" name="__codelineno-28-3"></a><span class="l l-Scalar l-Scalar-Plain">DB_PORT=3306</span> +</span><span id="__span-28-4"><a id="__codelineno-28-4" name="__codelineno-28-4"></a><span class="l l-Scalar l-Scalar-Plain">DB_DATABASE=seat</span> +</span><span id="__span-28-5"><a id="__codelineno-28-5" name="__codelineno-28-5"></a><span class="l l-Scalar l-Scalar-Plain">DB_USERNAME=seat</span> +</span><span id="__span-28-6"><a id="__codelineno-28-6" name="__codelineno-28-6"></a><span class="l l-Scalar l-Scalar-Plain">DB_PASSWORD=s_p3rs3c3r3tp455w0rd</span><span class="w"> </span><span class="c1"># <-- this is the value you probably need to edit.</span> +</span><span id="__span-28-7"><a id="__codelineno-28-7" name="__codelineno-28-7"></a><span class="l l-Scalar l-Scalar-Plain">DB_DEBUG=false</span> +</span></code></pre></div></td></tr></table></div> +<h4 id="database-migrations-and-seeds">Database Migrations and Seeds<a class="headerlink" href="#database-migrations-and-seeds" title="Permanent link">¶</a></h4> +<p>Next we need to publish the database migrations and web assets (such as JavaScript scripts and CSS Style sheets), run those migrations and finally seed the SeAT job schedule.</p> +<p>Publish the assets and database migrations with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan vendor:publish --force --all'</span> +</span></code></pre></div> +<p>Run the database migrations with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan migrate'</span> +</span></code></pre></div> +<p>Seed the SeAT schedule with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan db:seed --class=Seat\\Services\\Database\\Seeders\\PluginDatabaseSeeder'</span> +</span></code></pre></div> +<h4 id="eve-sde-update">EVE Sde Update<a class="headerlink" href="#eve-sde-update" title="Permanent link">¶</a></h4> +<p>SeAT makes use of a number of tables from the EVE <a href="https://developers.eveonline.com/resource/resources">Static Data Exports</a>. MariaDB conversions of this data is available at <a href="https://www.fuzzwork.co.uk/dump/">https://www.fuzzwork.co.uk/dump/</a> and used in SeAT.</p> +<p>To update to the <a href="https://github.com/eveseat/resources/blob/master/tools/generate_sde_json.php#L22">latest SDE</a> within SeAT, run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan eve:update:sde'</span> +</span></code></pre></div> +<h3 id="supervisor">Supervisor<a class="headerlink" href="#supervisor" title="Permanent link">¶</a></h3> +<p>The jobs ecosystem within SeAT requires a process supervisor to ensure that the job runner stays alive. The job runner itself is implemented using <a href="https://horizon.laravel.com/">Laravel Horizon</a> and is monitored using <a href="http://supervisord.org/">supervisord</a>.</p> +<p>To configure the Horizon process monitor, first install <code>supervisor</code>:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>supervisor +</span></code></pre></div> +<p>Next, we will create a dedicated configuration file which will ask supervisor to keep an eye on Horizon. This file will live in <code>/etc/supervisor/conf.d/seat.conf</code>. Create this file with its recommended configuration with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-34-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-34-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-34-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-34-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-34-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-34-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-34-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-34-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-34-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-34-10">10</a></span> +<span class="normal"><a href="#__codelineno-34-11">11</a></span> +<span class="normal"><a href="#__codelineno-34-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1"></a>cat<span class="w"> </span>><span class="w"> </span>/etc/supervisor/conf.d/seat.conf<span class="w"> </span><span class="s"><< EOL</span> +</span><span id="__span-34-2"><a id="__codelineno-34-2" name="__codelineno-34-2"></a><span class="s">[program:seat]</span> +</span><span id="__span-34-3"><a id="__codelineno-34-3" name="__codelineno-34-3"></a><span class="s">command=/usr/bin/php /var/www/seat/artisan horizon</span> +</span><span id="__span-34-4"><a id="__codelineno-34-4" name="__codelineno-34-4"></a><span class="s">process_name = %(program_name)s-80%(process_num)02d</span> +</span><span id="__span-34-5"><a id="__codelineno-34-5" name="__codelineno-34-5"></a><span class="s">stdout_logfile = /var/log/seat-80%(process_num)02d.log</span> +</span><span id="__span-34-6"><a id="__codelineno-34-6" name="__codelineno-34-6"></a><span class="s">stdout_logfile_maxbytes=100MB</span> +</span><span id="__span-34-7"><a id="__codelineno-34-7" name="__codelineno-34-7"></a><span class="s">stdout_logfile_backups=10</span> +</span><span id="__span-34-8"><a id="__codelineno-34-8" name="__codelineno-34-8"></a><span class="s">numprocs=1</span> +</span><span id="__span-34-9"><a id="__codelineno-34-9" name="__codelineno-34-9"></a><span class="s">directory=/var/www/seat</span> +</span><span id="__span-34-10"><a id="__codelineno-34-10" name="__codelineno-34-10"></a><span class="s">stopwaitsecs=600</span> +</span><span id="__span-34-11"><a id="__codelineno-34-11" name="__codelineno-34-11"></a><span class="s">user=www-data</span> +</span><span id="__span-34-12"><a id="__codelineno-34-12" name="__codelineno-34-12"></a><span class="s">EOL</span> +</span></code></pre></div></td></tr></table></div> +<p>Finally, reload supervisor to apply the new configuration with the following command:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-35-1"><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>supervisor.service +</span></code></pre></div> +<h3 id="crontab">Crontab<a class="headerlink" href="#crontab" title="Permanent link">¶</a></h3> +<p>A crontab entry is needed for SeAT. While simple in implementation, this crontab entry simply helps the application invoke a job checker very minute. The <em>actual</em> schedule is stored within SeAT itself and managed entirely via the Web Interface.</p> +<p>To configure the crontab entry required for SeAT, run the following commands:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-36-1"><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s1">'* * * * * php /var/www/seat/artisan schedule:run >> /dev/null 2>&1'</span><span class="w"> </span>><span class="w"> </span>/tmp/seat-crontab.tmp +</span></code></pre></div> +<p>Next, add this crontab for the <code>www-data</code> user with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-37-1"><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a>crontab<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>/tmp/seat-crontab.tmp +</span></code></pre></div> +<p>If you want to confirm that the crontab successfully installed, you can check it with <code>crontab -u www-data -l</code>.</p> +<h3 id="web-server">Web Server<a class="headerlink" href="#web-server" title="Permanent link">¶</a></h3> +<div class="admonition note"> +<p class="admonition-title">Almost there!<p>You almost made it to the end! Just one more step.</p> +</p> +</div> +<p>The SeAT web interface requires a web server to serve the HTML goodies it has. We highly recommend you to use <code>nginx</code> and will be covered in this document. You don't <strong>have</strong> to use it, so if you prefer something else, feel free.</p> +<h4 id="nginx-install">Nginx Install<a class="headerlink" href="#nginx-install" title="Permanent link">¶</a></h4> +<p>Together with an <code>nginx</code> installation we also need to install <code>php-fpm</code> to handle the PHP execution for us. Let's install <code>nginx</code> and <code>php-fpm</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-38-1"><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>nginx<span class="w"> </span>php8.2-fpm +</span></code></pre></div> +<h4 id="nginx-configuration">Nginx Configuration<a class="headerlink" href="#nginx-configuration" title="Permanent link">¶</a></h4> +<p>With the webserver installed, we need to configure <code>nginx</code> to serve SeAT. For that, a configuration file needs to be created that will tell <code>nginx</code> where to find <code>php-fpm</code> as well as where the assets are for SeAT.</p> +<p>The configuration file will live at <code>/etc/nginx/sites-available/seat</code>. It can be created with the following command:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-39-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-39-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-39-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-39-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-39-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-39-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-39-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-39-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-39-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-39-10">10</a></span> +<span class="normal"><a href="#__codelineno-39-11">11</a></span> +<span class="normal"><a href="#__codelineno-39-12">12</a></span> +<span class="normal"><a href="#__codelineno-39-13">13</a></span> +<span class="normal"><a href="#__codelineno-39-14">14</a></span> +<span class="normal"><a href="#__codelineno-39-15">15</a></span> +<span class="normal"><a href="#__codelineno-39-16">16</a></span> +<span class="normal"><a href="#__codelineno-39-17">17</a></span> +<span class="normal"><a href="#__codelineno-39-18">18</a></span> +<span class="normal"><a href="#__codelineno-39-19">19</a></span> +<span class="normal"><a href="#__codelineno-39-20">20</a></span> +<span class="normal"><a href="#__codelineno-39-21">21</a></span> +<span class="normal"><a href="#__codelineno-39-22">22</a></span> +<span class="normal"><a href="#__codelineno-39-23">23</a></span> +<span class="normal"><a href="#__codelineno-39-24">24</a></span> +<span class="normal"><a href="#__codelineno-39-25">25</a></span> +<span class="normal"><a href="#__codelineno-39-26">26</a></span> +<span class="normal"><a href="#__codelineno-39-27">27</a></span> +<span class="normal"><a href="#__codelineno-39-28">28</a></span> +<span class="normal"><a href="#__codelineno-39-29">29</a></span> +<span class="normal"><a href="#__codelineno-39-30">30</a></span> +<span class="normal"><a href="#__codelineno-39-31">31</a></span> +<span class="normal"><a href="#__codelineno-39-32">32</a></span> +<span class="normal"><a href="#__codelineno-39-33">33</a></span> +<span class="normal"><a href="#__codelineno-39-34">34</a></span> +<span class="normal"><a href="#__codelineno-39-35">35</a></span> +<span class="normal"><a href="#__codelineno-39-36">36</a></span> +<span class="normal"><a href="#__codelineno-39-37">37</a></span> +<span class="normal"><a href="#__codelineno-39-38">38</a></span> +<span class="normal"><a href="#__codelineno-39-39">39</a></span> +<span class="normal"><a href="#__codelineno-39-40">40</a></span> +<span class="normal"><a href="#__codelineno-39-41">41</a></span> +<span class="normal"><a href="#__codelineno-39-42">42</a></span> +<span class="normal"><a href="#__codelineno-39-43">43</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-39-1"><a id="__codelineno-39-1" name="__codelineno-39-1"></a>cat<span class="w"> </span>><span class="w"> </span>/etc/nginx/sites-available/seat<span class="w"> </span><span class="s"><< EOL</span> +</span><span id="__span-39-2"><a id="__codelineno-39-2" name="__codelineno-39-2"></a><span class="s">server {</span> +</span><span id="__span-39-3"><a id="__codelineno-39-3" name="__codelineno-39-3"></a> +</span><span id="__span-39-4"><a id="__codelineno-39-4" name="__codelineno-39-4"></a><span class="s"> listen 80;</span> +</span><span id="__span-39-5"><a id="__codelineno-39-5" name="__codelineno-39-5"></a><span class="s"> listen [::]:80;</span> +</span><span id="__span-39-6"><a id="__codelineno-39-6" name="__codelineno-39-6"></a> +</span><span id="__span-39-7"><a id="__codelineno-39-7" name="__codelineno-39-7"></a><span class="s"> # If you are hosting this instance on a domain, set that</span> +</span><span id="__span-39-8"><a id="__codelineno-39-8" name="__codelineno-39-8"></a><span class="s"> # name here.</span> +</span><span id="__span-39-9"><a id="__codelineno-39-9" name="__codelineno-39-9"></a><span class="s"> #server_name seat.yourdomain.com;</span> +</span><span id="__span-39-10"><a id="__codelineno-39-10" name="__codelineno-39-10"></a> +</span><span id="__span-39-11"><a id="__codelineno-39-11" name="__codelineno-39-11"></a><span class="s"> # SeAT public directory. This is the only directory that</span> +</span><span id="__span-39-12"><a id="__codelineno-39-12" name="__codelineno-39-12"></a><span class="s"> # should be exposed by the webserver. If one has to expose</span> +</span><span id="__span-39-13"><a id="__codelineno-39-13" name="__codelineno-39-13"></a><span class="s"> # the parent directory then things like the .env file will</span> +</span><span id="__span-39-14"><a id="__codelineno-39-14" name="__codelineno-39-14"></a><span class="s"> # be available for anyone to download.</span> +</span><span id="__span-39-15"><a id="__codelineno-39-15" name="__codelineno-39-15"></a><span class="s"> root /var/www/seat/public;</span> +</span><span id="__span-39-16"><a id="__codelineno-39-16" name="__codelineno-39-16"></a> +</span><span id="__span-39-17"><a id="__codelineno-39-17" name="__codelineno-39-17"></a><span class="s"> index index.php;</span> +</span><span id="__span-39-18"><a id="__codelineno-39-18" name="__codelineno-39-18"></a> +</span><span id="__span-39-19"><a id="__codelineno-39-19" name="__codelineno-39-19"></a><span class="s"> location / {</span> +</span><span id="__span-39-20"><a id="__codelineno-39-20" name="__codelineno-39-20"></a><span class="s"> try_files \$uri \$uri/ /index.php?\$query_string;</span> +</span><span id="__span-39-21"><a id="__codelineno-39-21" name="__codelineno-39-21"></a><span class="s"> }</span> +</span><span id="__span-39-22"><a id="__codelineno-39-22" name="__codelineno-39-22"></a> +</span><span id="__span-39-23"><a id="__codelineno-39-23" name="__codelineno-39-23"></a><span class="s"> # PHP-FPM configuration.</span> +</span><span id="__span-39-24"><a id="__codelineno-39-24" name="__codelineno-39-24"></a><span class="s"> location ~ \.php\$ {</span> +</span><span id="__span-39-25"><a id="__codelineno-39-25" name="__codelineno-39-25"></a><span class="s"> try_files \$uri /index.php =404;</span> +</span><span id="__span-39-26"><a id="__codelineno-39-26" name="__codelineno-39-26"></a><span class="s"> fastcgi_pass unix:/run/php/php8.2-fpm.sock;</span> +</span><span id="__span-39-27"><a id="__codelineno-39-27" name="__codelineno-39-27"></a><span class="s"> fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;</span> +</span><span id="__span-39-28"><a id="__codelineno-39-28" name="__codelineno-39-28"></a><span class="s"> include fastcgi_params;</span> +</span><span id="__span-39-29"><a id="__codelineno-39-29" name="__codelineno-39-29"></a><span class="s"> }</span> +</span><span id="__span-39-30"><a id="__codelineno-39-30" name="__codelineno-39-30"></a> +</span><span id="__span-39-31"><a id="__codelineno-39-31" name="__codelineno-39-31"></a><span class="s"> # Even though .htaccess rules mean nothing in the nginx</span> +</span><span id="__span-39-32"><a id="__codelineno-39-32" name="__codelineno-39-32"></a><span class="s"> # world, prevent those from being downloaded anyways.</span> +</span><span id="__span-39-33"><a id="__codelineno-39-33" name="__codelineno-39-33"></a><span class="s"> location ~ /\.ht {</span> +</span><span id="__span-39-34"><a id="__codelineno-39-34" name="__codelineno-39-34"></a><span class="s"> deny all;</span> +</span><span id="__span-39-35"><a id="__codelineno-39-35" name="__codelineno-39-35"></a><span class="s"> }</span> +</span><span id="__span-39-36"><a id="__codelineno-39-36" name="__codelineno-39-36"></a> +</span><span id="__span-39-37"><a id="__codelineno-39-37" name="__codelineno-39-37"></a><span class="s"> # In case someone messes up, prevent .env files from</span> +</span><span id="__span-39-38"><a id="__codelineno-39-38" name="__codelineno-39-38"></a><span class="s"> # being downloaded as well.</span> +</span><span id="__span-39-39"><a id="__codelineno-39-39" name="__codelineno-39-39"></a><span class="s"> location ~ /\.env {</span> +</span><span id="__span-39-40"><a id="__codelineno-39-40" name="__codelineno-39-40"></a><span class="s"> deny all;</span> +</span><span id="__span-39-41"><a id="__codelineno-39-41" name="__codelineno-39-41"></a><span class="s"> }</span> +</span><span id="__span-39-42"><a id="__codelineno-39-42" name="__codelineno-39-42"></a><span class="s">}</span> +</span><span id="__span-39-43"><a id="__codelineno-39-43" name="__codelineno-39-43"></a><span class="s">EOL</span> +</span></code></pre></div></td></tr></table></div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>The code block above should not be copied directly into a file. It is a script and should be pasted directly into the linux terminal. It will create the nginx config for you. If you create the file yourself with the above content then the file will not be valid and you will receive errors from nginx.</p> +</div> +<p>The configuration file as is at <code>/etc/nginx/sites-available/seat</code> itself won't be loaded by <code>nginx</code> yet. Storing configuration files in a <code>*sites-available*</code> directory is simply a convention used to allow administrators to quickly add & remove sites if needed. To <em>apply</em> the changes made by the new configuration file it needs to be symlinked to a <code>*sites-enabled*</code> directory.</p> +<p>Let's symlink to the new configuration and drop the default one as a hardening exercise at the same time:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-40-1">1</a></span> +<span class="normal"><a href="#__codelineno-40-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-40-1"><a id="__codelineno-40-1" name="__codelineno-40-1"></a>ln<span class="w"> </span>-s<span class="w"> </span>/etc/nginx/sites-available/seat<span class="w"> </span>/etc/nginx/sites-enabled/seat +</span><span id="__span-40-2"><a id="__codelineno-40-2" name="__codelineno-40-2"></a>rm<span class="w"> </span>/etc/nginx/sites-enabled/default +</span></code></pre></div></td></tr></table></div> +<p>Finally, reload <code>nginx</code> and <code>php-fpm</code> for the new changes to take affect:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-41-1">1</a></span> +<span class="normal"><a href="#__codelineno-41-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-41-1"><a id="__codelineno-41-1" name="__codelineno-41-1"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>nginx.service +</span><span id="__span-41-2"><a id="__codelineno-41-2" name="__codelineno-41-2"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>php8.2-fpm.service +</span></code></pre></div></td></tr></table></div> +<h2 id="esi-configuration">ESI Configuration<a class="headerlink" href="#esi-configuration" title="Permanent link">¶</a></h2> +<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. +For instructions how to do this, please refer to the <a href="../../configuration/esi_configuration/">ESI Setup Guide</a>.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>You may want to serve your SeAT installation over SSL (using HTTPS) - which is a recommanded behavior. +There are many way to do it, you can have a look on Let's Encrypt which provide you valid certificates for free. +Put an eye to their <a href="https://certbot.eff.org">Certbot Documentation</a>.</p> +</div> +<div class="admonition success"> +<p class="admonition-title">Success</p> +<p>You made it! Use a browser and browse to the IP address / hostname of your server to access SeAT!</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/installation/old_versions/docker_installation_seat_4/index.html b/installation/old_versions/docker_installation_seat_4/index.html new file mode 100644 index 00000000..8555f3e1 --- /dev/null +++ b/installation/old_versions/docker_installation_seat_4/index.html @@ -0,0 +1,1688 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/installation/old_versions/docker_installation_seat_4/"> + + + <link rel="prev" href="../../manual_installation/"> + + + <link rel="next" href="../manual_installation_seat_4/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Docker Installation (4.x) - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#docker" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Docker Installation (4.x) + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" checked> + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="true"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Docker Installation (4.x) + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Docker Installation (4.x) + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#internal-container-setup-overview" class="md-nav__link"> + Internal Container Setup Overview + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-installation" class="md-nav__link"> + SeAT Docker Installation + </a> + + <nav class="md-nav" aria-label="SeAT Docker Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automated-setup-script" class="md-nav__link"> + Automated Setup Script + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual-deployment" class="md-nav__link"> + Manual Deployment + </a> + + <nav class="md-nav" aria-label="Manual Deployment"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-download" class="md-nav__link"> + Docker Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-download" class="md-nav__link"> + Docker-compose Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-working-directory" class="md-nav__link"> + Docker compose working directory + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-composeyml-and-env-file" class="md-nav__link"> + SeAT docker-compose.yml and .env File + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-configuration" class="md-nav__link"> + SeAT docker configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#monitoring-the-stack" class="md-nav__link"> + Monitoring the Stack + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#internal-container-setup-overview" class="md-nav__link"> + Internal Container Setup Overview + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-installation" class="md-nav__link"> + SeAT Docker Installation + </a> + + <nav class="md-nav" aria-label="SeAT Docker Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#automated-setup-script" class="md-nav__link"> + Automated Setup Script + </a> + +</li> + + <li class="md-nav__item"> + <a href="#manual-deployment" class="md-nav__link"> + Manual Deployment + </a> + + <nav class="md-nav" aria-label="Manual Deployment"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-download" class="md-nav__link"> + Docker Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-download" class="md-nav__link"> + Docker-compose Download + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-compose-working-directory" class="md-nav__link"> + Docker compose working directory + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-composeyml-and-env-file" class="md-nav__link"> + SeAT docker-compose.yml and .env File + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat-docker-configuration" class="md-nav__link"> + SeAT docker configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#monitoring-the-stack" class="md-nav__link"> + Monitoring the Stack + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configuration-changes" class="md-nav__link"> + Configuration Changes + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="docker">Docker<a class="headerlink" href="#docker" title="Permanent link">¶</a></h1> +<p>Docker is ideally the installation route you want to go. Docker enables us to run SeAT on any platform capable of running docker itself (which includes Windows!). Additionally, upgrades and service maintenance are really low effort as you don't have to care about any dependencies. All of it is maintained within a docker stack and dockerhub.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>If you plan on running Docker on Windows, for the best performance it is suggested that you run Docker using the Windows Subsystem for Linux 2 (WSL2) backend, available starting in Windows 10/Windows Server 20H1 (build 2004) releases.</p> +</div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Before starting the installation process, be sure you read this complete document first. It will help you understand all of the steps from an installation process.</p> +<p>If you feel like docker might not be your cup of tea, checkout some of the other <a href="https://docs.docker.com/get-started/">getting started</a> guides that are available.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>If you are using Docker on Windows, you will need to use the <a href="#manual-deployment">Manual Deployment</a> option below.</p> +</div> +<div class="admonition note"> +<p class="admonition-title">Eve Application and ESI</p> +<p>SeAT used CCP's <a href="https://esi.evetech.net/">ESI</a> service in order to retrieve EVE Online-related information. Before you can make any authenticated calls to ESI, you have to register a third-party EVE application on the <a href="developers.eveonline.com/">developers portal</a>. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p> +</div> +<h2 id="internal-container-setup-overview">Internal Container Setup Overview<a class="headerlink" href="#internal-container-setup-overview" title="Permanent link">¶</a></h2> +<p>The setup for SeAT's docker installation orchestrated using <a href="https://docs.docker.com/compose/">docker-compose</a>. With docker-compose, we can use a single <code>docker-compose.yml</code> file to define the entire stack complete with all of the dependencies required to run SeAT. A pre-built and recommended compose file (which is also used by the bootstrapping script) is hosted in the seat-docker repository <a href="https://github.com/eveseat/seat-docker">here</a>.</p> +<p>The previously mentioned compose file is really simple. A high-level overview of its contents is:</p> +<ul> +<li>A single docker network called <code>seat-network</code> is defined. All containers are connected to this network and is used as the primary means for inter-container communications.</li> +<li>A single volume called <code>mariadb-data</code> is defined. This is the <em>most important</em> volume as it contains all of the database data. This is the one volume that you should configure a backup solution for!</li> +<li>Six services (or containers) are used within the SeAT docker stack. Three services use basic images pulled directly from <a href="https://hub.docker.com/">Dockerhub</a> and three others use a custom-built image, also hosted on DockerHub. The container images used are:</li> +</ul> +<table> +<thead> +<tr> +<th>Image Name</th> +<th>Image Repository</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>mariadb:10</code></td> +<td><a href="https://hub.docker.com/_/mariadb/">https://hub.docker.com/_/mariadb/</a></td> +</tr> +<tr> +<td><code>redis:5-alpine</code></td> +<td><a href="https://hub.docker.com/_/redis/">https://hub.docker.com/_/redis/</a></td> +</tr> +<tr> +<td><code>traefik:2.2</code></td> +<td><a href="https://hub.docker.com/_/traefik">https://hub.docker.com/_/traefik</a></td> +</tr> +<tr> +<td><code>eveseat/seat</code></td> +<td><a href="https://hub.docker.com/r/eveseat/seat">https://hub.docker.com/r/eveseat/seat</a></td> +</tr> +</tbody> +</table> +<ul> +<li>The environment is configured using a top-level <code>.env</code> file (not to be confused with the SeAT specific <code>.env</code> file.</li> +<li>Only two ports are exposed by default. Those are <code>tcp/80</code> and <code>tcp/443</code>. These can be connected to in order to access the SeAT web interface.</li> +<li>All containers are configured to restart on failure, so if your server reboots or a container dies for whatever reason it should automatically start up again.</li> +</ul> +<h2 id="seat-docker-installation">SeAT Docker Installation<a class="headerlink" href="#seat-docker-installation" title="Permanent link">¶</a></h2> +<p>Depending on whether you already have <code>docker</code> and <code>docker-compose</code> already installed, you may choose how to start the installation. If you already have the required tooling installed and running their latest versions, all you need to do is download the latest <code>docker-compose.yml</code> and <code>.env</code> files to get started.</p> +<h3 id="automated-setup-script">Automated Setup Script<a class="headerlink" href="#automated-setup-script" title="Permanent link">¶</a></h3> +<p>If you do not have the required software installed yet, consider running the <a href="https://github.com/eveseat/seat-docker/blob/4.x/bootstrap.sh">bootstrap script</a> that will check for <code>docker</code> and <code>docker-compose</code>, install it and start the SeAT stack up for you. The script can be run with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>bash<span class="w"> </span><<span class="o">(</span>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://git.io/get-seat<span class="o">)</span> +</span></code></pre></div> +<p>Once the script is finished, you can skip to the <a href="#monitoring-the-stack">monitoring the stack</a> section of this guide.</p> +<p>If you don't want to run this script, follow along in the next section of this guide.</p> +<h3 id="manual-deployment">Manual Deployment<a class="headerlink" href="#manual-deployment" title="Permanent link">¶</a></h3> +<h4 id="docker-download">Docker Download<a class="headerlink" href="#docker-download" title="Permanent link">¶</a></h4> +<p>If you do not have <code>docker</code>, install it now with the following command as <code>root</code>:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>sh<span class="w"> </span><<span class="o">(</span>curl<span class="w"> </span>-fsSL<span class="w"> </span>get.docker.com<span class="o">)</span> +</span></code></pre></div> +<p>If you are on Windows, download and install <a href="https://www.docker.com/products/docker-desktop">Docker Desktop</a>.</p> +<h4 id="docker-compose-download">Docker-compose Download<a class="headerlink" href="#docker-compose-download" title="Permanent link">¶</a></h4> +<p>If you do not have <code>docker-compose</code>, install it now with the following command as <code>root</code> (Docker Compose is included with Docker Desktop on Windows):</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span> +<span class="normal"><a href="#__codelineno-2-3">3</a></span> +<span class="normal"><a href="#__codelineno-2-4">4</a></span> +<span class="normal"><a href="#__codelineno-2-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="c1"># Downloads docker-compose</span> +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://github.com/docker/compose/releases/download/1.26.2/docker-compose-<span class="k">$(</span>uname<span class="w"> </span>-s<span class="k">)</span>-<span class="k">$(</span>uname<span class="w"> </span>-m<span class="k">)</span><span class="w"> </span>-o<span class="w"> </span>/usr/local/bin/docker-compose +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a> +</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="c1"># Makes docker-compose executable</span> +</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a>chmod<span class="w"> </span>+x<span class="w"> </span>/usr/local/bin/docker-compose +</span></code></pre></div></td></tr></table></div> +<h4 id="docker-compose-working-directory">Docker compose working directory<a class="headerlink" href="#docker-compose-working-directory" title="Permanent link">¶</a></h4> +<p>With <code>docker</code> and <code>docker-compose</code> ready, create yourself a directory in <code>/opt</code> with <code>mkdir -p /opt/seat-docker</code> and <code>cd</code> to it. Remember this directory as you will need to come back to it often.</p> +<p>On Windows, create the <code>C:\seat-docker</code> directory with <code>mkdir C:\seat-docker</code> and <code>cd</code> to it.</p> +<h4 id="seat-docker-composeyml-and-env-file">SeAT docker-compose.yml and .env File<a class="headerlink" href="#seat-docker-composeyml-and-env-file" title="Permanent link">¶</a></h4> +<p>Then, download the <code>docker-compose.yml</code> file with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Linux</label><label for="__tabbed_1_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.yml +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="nb">Invoke-WebRequest</span> <span class="n">-Uri</span> <span class="n">https</span><span class="p">://</span><span class="n">raw</span><span class="p">.</span><span class="n">githubusercontent</span><span class="p">.</span><span class="n">com</span><span class="p">/</span><span class="n">eveseat</span><span class="p">/</span><span class="n">seat-docker</span><span class="p">/</span><span class="n">4</span><span class="p">.</span><span class="n">x</span><span class="p">/</span><span class="n">docker-compose</span><span class="p">.</span><span class="n">yml</span> <span class="n">-OutFile</span> <span class="n">docker-compose</span><span class="p">.</span><span class="n">yml</span> +</span></code></pre></div> +</div> +</div> +</div> +<p>Next, download the docker <code>.env</code> file with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Linux</label><label for="__tabbed_2_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env<span class="w"> </span>-o<span class="w"> </span>.env +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="nb">Invoke-WebRequest</span> <span class="n">-Uri</span> <span class="n">https</span><span class="p">://</span><span class="n">raw</span><span class="p">.</span><span class="n">githubusercontent</span><span class="p">.</span><span class="n">com</span><span class="p">/</span><span class="n">eveseat</span><span class="p">/</span><span class="n">seat-docker</span><span class="p">/</span><span class="n">4</span><span class="p">.</span><span class="n">x</span><span class="p">/.</span><span class="n">env</span> <span class="n">-OutFile</span> <span class="p">.</span><span class="n">env</span> +</span></code></pre></div> +</div> +</div> +</div> +<p>Next, we will generate a unique application key - this is used internally for encryption:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Linux</label><label for="__tabbed_3_2">Windows</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>sed<span class="w"> </span>-i<span class="w"> </span>--<span class="w"> </span><span class="s1">'s/APP_KEY=insecure/APP_KEY='</span><span class="k">$(</span>head<span class="w"> </span>/dev/urandom<span class="w"> </span><span class="p">|</span><span class="w"> </span>tr<span class="w"> </span>-dc<span class="w"> </span>A-Za-z0-9<span class="w"> </span><span class="p">|</span><span class="w"> </span>head<span class="w"> </span>-c32<span class="w"> </span><span class="p">;</span><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s1">''</span><span class="k">)</span><span class="s1">'/g'</span><span class="w"> </span>.env +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-powershell highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="nv">$appkey</span> <span class="p">=</span> <span class="p">(</span><span class="n">-join</span> <span class="p">((</span><span class="n">65</span><span class="p">..</span><span class="n">90</span><span class="p">)</span> <span class="p">+</span> <span class="p">(</span><span class="n">97</span><span class="p">..</span><span class="n">122</span><span class="p">)</span> <span class="p">|</span> <span class="nb">Get-Random</span> <span class="n">-Count</span> <span class="n">32</span> <span class="p">|</span> <span class="p">%</span> <span class="p">{</span><span class="no">[char]</span><span class="nv">$_</span><span class="p">}));</span> <span class="p">(</span><span class="nb">Get-Content</span> <span class="p">.</span><span class="n">env</span> <span class="n">-Raw</span><span class="p">)</span> <span class="o">-replace</span> <span class="s2">"APP_KEY=insecure"</span><span class="p">,</span> <span class="s2">"APP_KEY=$appkey"</span> <span class="p">|</span> <span class="nb">Set-Content</span> <span class="p">.</span><span class="n">env</span> +</span></code></pre></div> +</div> +</div> +</div> +<h4 id="seat-docker-configuration">SeAT docker configuration<a class="headerlink" href="#seat-docker-configuration" title="Permanent link">¶</a></h4> +<p>Open up the <code>.env</code> file in a text editor and fill in a few of the configuration items needed.</p> +<p><code>TRAEFIK_DOMAIN</code> should be set to the base domain your installation lives on.<br /> +<code>SEAT_SUBDOMAIN</code> sould be the subdomain for the SeAT web UI. eg: seat.domain.local</p> +<p>For TLS configuration, you need to set the <code>TRAEFIK_ACME_EMAIL</code> value, and then in the <code>docker-compose.yml</code> file uncomment the labels that relating to <code>certResolver</code>. They typically look like this: <code>traefik.http.routers.api.tls.certResolver=primary</code>. Finally, create an ACME configuration file with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span> +<span class="normal"><a href="#__codelineno-9-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>mkdir<span class="w"> </span>acme +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>touch<span class="w"> </span>acme/acme.json +</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3"></a>chmod<span class="w"> </span><span class="m">600</span><span class="w"> </span>acme/acme.json +</span></code></pre></div></td></tr></table></div> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>SeAT docker template is shipped with <a href="https://containo.us/traefik/">Traefik</a> to hide your container behind a proxy and securing traffic up to it. In case you want to manage traffic proxying and certification on your own, you can disable traefik container from the stack by adding <code>#</code> [front of lines] from the <code>docker-compose.yml</code> file.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>The location of the <code>docker-compose.yml</code> and <code>.env</code> files are important. You need to <code>cd</code> back to the directory where these are stored in order to be able to execute commands for this stack at a later stage.</p> +<p>Also, be sure you provide a valid e-mail address as it will be used to register your account against <a href="https://letsencrypt.org">Let's Encrypt</a>. For those unfamiliar with this, it's CA that provides valid certificates for free.</p> +</div> +<h3 id="esi-configuration">ESI Configuration<a class="headerlink" href="#esi-configuration" title="Permanent link">¶</a></h3> +<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions on how to do this, please refer to the <a href="../../../configuration/esi_configuration/">ESI Setup Guide</a>.</p> +<p>With the configuration files ready, start up the stack with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +<h2 id="monitoring-the-stack">Monitoring the Stack<a class="headerlink" href="#monitoring-the-stack" title="Permanent link">¶</a></h2> +<p>Knowing what is going on inside of your containers is crucial to understanding how everything is running as well as useful when debugging any problems that may occur. While the containers are starting up or have been running for a while, you can always <code>cd</code> to the directory where your <code>docker-compose.yml</code> file lives and run the <code>logs</code> command to see the output of all of the containers in the stack. For example:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span> +<span class="normal"><a href="#__codelineno-11-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="nb">cd</span><span class="w"> </span>/opt/seat-docker +</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2"></a>docker-compose<span class="w"> </span>logs<span class="w"> </span>--tail<span class="w"> </span><span class="m">10</span><span class="w"> </span>-f +</span></code></pre></div></td></tr></table></div> +<p>These commands will <code>cd</code> to the directory containing the stacks <code>docker-compose.yml</code> file and run the <code>logs</code> command, showing the last <em>10</em> log entries and then printing new ones as they arrive.</p> +<h2 id="configuration-changes">Configuration Changes<a class="headerlink" href="#configuration-changes" title="Permanent link">¶</a></h2> +<p>All of the relevant configuration lives inside the <code>.env</code> file, next to your <code>docker-compose.yml</code> file. Modify their values by opening it in a text editor, making the appropriate changes, and saving it again. Once that is done, run <code>docker-compose up -d</code> again to restart the container environment.</p> +<div class="admonition success"> +<p class="admonition-title">Success</p> +<p>You made it! Use a browser and browse to the domain / subdomain of your server to access SeAT!</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/installation/old_versions/manual_installation_seat_4/index.html b/installation/old_versions/manual_installation_seat_4/index.html new file mode 100644 index 00000000..77c6f555 --- /dev/null +++ b/installation/old_versions/manual_installation_seat_4/index.html @@ -0,0 +1,2181 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/installation/old_versions/manual_installation_seat_4/"> + + + <link rel="prev" href="../docker_installation_seat_4/"> + + + <link rel="next" href="../../../upgrading/general/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Manual Installation (4.x) - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#manual-installation" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Manual Installation (4.x) + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" checked> + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="true"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Manual Installation (4.x) + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Manual Installation (4.x) + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#os-installation" class="md-nav__link"> + OS Installation + </a> + + <nav class="md-nav" aria-label="OS Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#operating-system" class="md-nav__link"> + Operating System + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#redis" class="md-nav__link"> + Redis + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-installation" class="md-nav__link"> + SeAT Installation + </a> + + <nav class="md-nav" aria-label="SeAT Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#prerequisites" class="md-nav__link"> + Prerequisites + </a> + + <nav class="md-nav" aria-label="Prerequisites"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#git" class="md-nav__link"> + Git + </a> + +</li> + + <li class="md-nav__item"> + <a href="#composer" class="md-nav__link"> + Composer + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-download" class="md-nav__link"> + SeAT Download + </a> + + <nav class="md-nav" aria-label="SeAT Download"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-setup" class="md-nav__link"> + SeAT Setup + </a> + + <nav class="md-nav" aria-label="SeAT Setup"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#env-setup" class="md-nav__link"> + .env setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-migrations-and-seeds" class="md-nav__link"> + Database Migrations and Seeds + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eve-sde-update" class="md-nav__link"> + EVE Sde Update + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#supervisor" class="md-nav__link"> + Supervisor + </a> + +</li> + + <li class="md-nav__item"> + <a href="#crontab" class="md-nav__link"> + Crontab + </a> + +</li> + + <li class="md-nav__item"> + <a href="#web-server" class="md-nav__link"> + Web Server + </a> + + <nav class="md-nav" aria-label="Web Server"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#nginx-install" class="md-nav__link"> + Nginx Install + </a> + +</li> + + <li class="md-nav__item"> + <a href="#nginx-configuration" class="md-nav__link"> + Nginx Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#getting-started" class="md-nav__link"> + Getting started + </a> + +</li> + + <li class="md-nav__item"> + <a href="#os-installation" class="md-nav__link"> + OS Installation + </a> + + <nav class="md-nav" aria-label="OS Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#operating-system" class="md-nav__link"> + Operating System + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#redis" class="md-nav__link"> + Redis + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-installation" class="md-nav__link"> + SeAT Installation + </a> + + <nav class="md-nav" aria-label="SeAT Installation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#prerequisites" class="md-nav__link"> + Prerequisites + </a> + + <nav class="md-nav" aria-label="Prerequisites"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#git" class="md-nav__link"> + Git + </a> + +</li> + + <li class="md-nav__item"> + <a href="#composer" class="md-nav__link"> + Composer + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-download" class="md-nav__link"> + SeAT Download + </a> + + <nav class="md-nav" aria-label="SeAT Download"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#permissions" class="md-nav__link"> + Permissions + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#seat-setup" class="md-nav__link"> + SeAT Setup + </a> + + <nav class="md-nav" aria-label="SeAT Setup"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#env-setup" class="md-nav__link"> + .env setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-migrations-and-seeds" class="md-nav__link"> + Database Migrations and Seeds + </a> + +</li> + + <li class="md-nav__item"> + <a href="#eve-sde-update" class="md-nav__link"> + EVE Sde Update + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#supervisor" class="md-nav__link"> + Supervisor + </a> + +</li> + + <li class="md-nav__item"> + <a href="#crontab" class="md-nav__link"> + Crontab + </a> + +</li> + + <li class="md-nav__item"> + <a href="#web-server" class="md-nav__link"> + Web Server + </a> + + <nav class="md-nav" aria-label="Web Server"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#nginx-install" class="md-nav__link"> + Nginx Install + </a> + +</li> + + <li class="md-nav__item"> + <a href="#nginx-configuration" class="md-nav__link"> + Nginx Configuration + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#esi-configuration" class="md-nav__link"> + ESI Configuration + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="manual-installation">Manual Installation<a class="headerlink" href="#manual-installation" title="Permanent link">¶</a></h1> +<p>This guide attempts to explain how to manually install SeAT onto an <strong>Ubuntu</strong> Server. +A small amount of Linux experience is preferred when it comes to this guide, although it is not entirely mandatory.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>This guide has been written targetting Ubuntu. However, you can use it to deploy SeAT on any linux distribution. +Just be sure you adapt commands to targetted distribution (mostly those related to the package manager).</p> +</div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>Before starting to do anything, be sure you read the complete workflow once. +It will help you to understand all steps from the installation process.</p> +</div> +<div class="admonition note"> +<p class="admonition-title">Eve Application and ESI</p> +<p>SeAT consumes CCP's <a href="https://esi.evetech.net/">ESI</a> service in order to retrieve EVE Online related information. +Before you can make any authenticated calls to ESI, you have to register a third party EVE application on the <a href="developers.eveonline.com/">developers portal</a>. +This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p> +</div> +<h2 id="getting-started">Getting started<a class="headerlink" href="#getting-started" title="Permanent link">¶</a></h2> +<p>We are going to assume you have root access to a fresh Ubuntu Server. +Typically access is gained via SSH. +All of the below commands are to be entered in the SSH terminal session for the installation & configuration of SeAT. +If the server you want to install SeAT on is being used for other things too (such as hosting MySQL databases and or websites), then please keep that in mind while following this guide.</p> +<p>Packages are installed using the <code>aptitude</code> package manager as the <code>root</code> user.</p> +<h2 id="os-installation">OS Installation<a class="headerlink" href="#os-installation" title="Permanent link">¶</a></h2> +<h3 id="operating-system">Operating System<a class="headerlink" href="#operating-system" title="Permanent link">¶</a></h3> +<p>Before we get to installing SeAT, lets ensure that your operating system is up to date. We can do that with basics :</p> +<ul> +<li><code>apt-get update</code> to refresh the repositories cache.</li> +<li><code>apt-get full-upgrade</code> to update any installed packages.</li> +<li><code>reboot</code> in order to ensure any updated software is the current running version.</li> +<li><code>apt-get autoremove</code> (after the reboot) to cleanup any unneeded packages.</li> +</ul> +<h3 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h3> +<p>SeAT relies <strong>heavily</strong> on a database to function. Everything it learns is stored here, along with things such as user accounts for your users. +It comes without saying that database security is a very important aspect too. So, ensure that you choose very strong passwords for your installation where required.</p> +<p>This document describes using MariaDB, but you can use MySQL as well. Just double check the <a href="../../requirements/">requirements</a>.</p> +<p>We need to ensure that we have the latest MariaDB installed. To help with this, MariaDB provides an official repository to get the latest versions. +Let's add this repository with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>curl<span class="w"> </span>-sS<span class="w"> </span>https://downloads.mariadb.com/MariaDB/mariadb_repo_setup<span class="w"> </span><span class="p">|</span><span class="w"> </span>bash +</span></code></pre></div> +<p>With the repository now setup, lets install the database server:</p> +<div class="admonition warning"> +<p class="admonition-title">Warning<p>During the installation, you may be asked to set a password for the <code>root</code> MariaDB user account. +Make sure you set a long, strong password and remember it. It will be needed for the next step.</p> +</p> +</div> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>mariadb-server +</span></code></pre></div> +<p>Next, we are going to secure the database server by removing anonymous access and setting a <code>root</code> password (if you have not been prompted for it yet).</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>The database <code>root</code> password should not be confused with the operating systems <code>root</code> passwords. They are both completely different. +They should also not have the same password.</p> +</div> +<p>To secure the database, run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>mysql_secure_installation +</span></code></pre></div> +<p>This will ask you a series of questions where you should generally just answer yes to. If you already set a <code>root</code> password in the previous step then you dont have to set it again, otherwise, make sure you choose a long, strong password for the <code>root</code> account. An example run is shown below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-3-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-3-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-3-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-3-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-3-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-3-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-3-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-3-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-3-10">10</a></span> +<span class="normal"><a href="#__codelineno-3-11">11</a></span> +<span class="normal"><a href="#__codelineno-3-12">12</a></span> +<span class="normal"><a href="#__codelineno-3-13">13</a></span> +<span class="normal"><a href="#__codelineno-3-14">14</a></span> +<span class="normal"><a href="#__codelineno-3-15">15</a></span> +<span class="normal"><a href="#__codelineno-3-16">16</a></span> +<span class="normal"><a href="#__codelineno-3-17">17</a></span> +<span class="normal"><a href="#__codelineno-3-18">18</a></span> +<span class="normal"><a href="#__codelineno-3-19">19</a></span> +<span class="normal"><a href="#__codelineno-3-20">20</a></span> +<span class="normal"><a href="#__codelineno-3-21">21</a></span> +<span class="normal"><a href="#__codelineno-3-22">22</a></span> +<span class="normal"><a href="#__codelineno-3-23">23</a></span> +<span class="normal"><a href="#__codelineno-3-24">24</a></span> +<span class="normal"><a href="#__codelineno-3-25">25</a></span> +<span class="normal"><a href="#__codelineno-3-26">26</a></span> +<span class="normal"><a href="#__codelineno-3-27">27</a></span> +<span class="normal"><a href="#__codelineno-3-28">28</a></span> +<span class="normal"><a href="#__codelineno-3-29">29</a></span> +<span class="normal"><a href="#__codelineno-3-30">30</a></span> +<span class="normal"><a href="#__codelineno-3-31">31</a></span> +<span class="normal"><a href="#__codelineno-3-32">32</a></span> +<span class="normal"><a href="#__codelineno-3-33">33</a></span> +<span class="normal"><a href="#__codelineno-3-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a> +</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a>Enter<span class="w"> </span>current<span class="w"> </span>password<span class="w"> </span><span class="k">for</span><span class="w"> </span>root<span class="w"> </span><span class="o">(</span>enter<span class="w"> </span><span class="k">for</span><span class="w"> </span>none<span class="o">)</span>:<span class="w"> </span>IF<span class="w"> </span>ONE<span class="w"> </span>WAS<span class="w"> </span>SET,<span class="w"> </span>IGNORE<span class="w"> </span>THIS +</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a>OK,<span class="w"> </span>successfully<span class="w"> </span>used<span class="w"> </span>password,<span class="w"> </span>moving<span class="w"> </span>on... +</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a> +</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a> +</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a>Set<span class="w"> </span>root<span class="w"> </span>password?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9"></a>New<span class="w"> </span>password:<span class="w"> </span>SET<span class="w"> </span>A<span class="w"> </span>STRONG<span class="w"> </span>PASSWORD<span class="w"> </span>HERE +</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10"></a>Re-enter<span class="w"> </span>new<span class="w"> </span>password:<span class="w"> </span>SET<span class="w"> </span>A<span class="w"> </span>STRONG<span class="w"> </span>PASSWORD<span class="w"> </span>HERE +</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11"></a>Password<span class="w"> </span>updated<span class="w"> </span>successfully! +</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12"></a>Reloading<span class="w"> </span>privilege<span class="w"> </span>tables.. +</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14"></a> +</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16"></a> +</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17"></a>Remove<span class="w"> </span>anonymous<span class="w"> </span>users?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19"></a> +</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21"></a> +</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22"></a>Disallow<span class="w"> </span>root<span class="w"> </span>login<span class="w"> </span>remotely?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24"></a> +</span><span id="__span-3-25"><a id="__codelineno-3-25" name="__codelineno-3-25"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-26"><a id="__codelineno-3-26" name="__codelineno-3-26"></a> +</span><span id="__span-3-27"><a id="__codelineno-3-27" name="__codelineno-3-27"></a>Remove<span class="w"> </span><span class="nb">test</span><span class="w"> </span>database<span class="w"> </span>and<span class="w"> </span>access<span class="w"> </span>to<span class="w"> </span>it?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-3-28"><a id="__codelineno-3-28" name="__codelineno-3-28"></a> +</span><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29"></a><span class="o">[</span>...<span class="o">]</span> +</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30"></a> +</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31"></a>Reload<span class="w"> </span>privilege<span class="w"> </span>tables<span class="w"> </span>now?<span class="w"> </span><span class="o">[</span>Y/n<span class="o">]</span><span class="w"> </span>y +</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32"></a><span class="w"> </span>...<span class="w"> </span>Success! +</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33"></a> +</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34"></a><span class="o">[</span>...<span class="o">]</span> +</span></code></pre></div></td></tr></table></div> +<p>That concludes the installation of the database server and securing it.</p> +<p>Next, we need to create an actual user and database for SeAT to use on the newly installed server. To do this we use the <code>mysql</code> command line client and enter a few commands as the <code>root</code> user to create the database and the user that will be accessing the server. Let get to it.</p> +<p>Fire up the <code>mysql</code> client as root by running:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p +</span></code></pre></div> +<p>This will prompt you for a password. Use the password you configured for the <code>root</code> account when we ran <code>mysql_secure_installation</code>. This will most probably be the last time you need to use this password :)</p> +<p>If the password was correct, you should see a prompt similar to the one below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1">1</a></span> +<span class="normal"><a href="#__codelineno-5-2">2</a></span> +<span class="normal"><a href="#__codelineno-5-3">3</a></span> +<span class="normal"><a href="#__codelineno-5-4">4</a></span> +<span class="normal"><a href="#__codelineno-5-5">5</a></span> +<span class="normal"><a href="#__codelineno-5-6">6</a></span> +<span class="normal"><a href="#__codelineno-5-7">7</a></span> +<span class="normal"><a href="#__codelineno-5-8">8</a></span> +<span class="normal"><a href="#__codelineno-5-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a>root@ubuntu:~#<span class="w"> </span>mysql<span class="w"> </span>-uroot<span class="w"> </span>-p +</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a>Enter<span class="w"> </span>password: +</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a>Welcome<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>MariaDB<span class="w"> </span>monitor.<span class="w"> </span>Commands<span class="w"> </span>end<span class="w"> </span>with<span class="w"> </span><span class="p">;</span><span class="w"> </span>or<span class="w"> </span><span class="se">\g</span>. +</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a>Your<span class="w"> </span>MariaDB<span class="w"> </span>connection<span class="w"> </span>id<span class="w"> </span>is<span class="w"> </span><span class="m">16</span> +</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a>Copyright<span class="w"> </span><span class="o">(</span>c<span class="o">)</span><span class="w"> </span><span class="m">2000</span>,<span class="w"> </span><span class="m">2018</span>,<span class="w"> </span>Oracle,<span class="w"> </span>MariaDB<span class="w"> </span>Corporation<span class="w"> </span>Ab<span class="w"> </span>and<span class="w"> </span>others. +</span><span id="__span-5-6"><a id="__codelineno-5-6" name="__codelineno-5-6"></a> +</span><span id="__span-5-7"><a id="__codelineno-5-7" name="__codelineno-5-7"></a>Type<span class="w"> </span><span class="s1">'help;'</span><span class="w"> </span>or<span class="w"> </span><span class="s1">'\h'</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>help.<span class="w"> </span>Type<span class="w"> </span><span class="s1">'\c'</span><span class="w"> </span>to<span class="w"> </span>clear<span class="w"> </span>the<span class="w"> </span>current<span class="w"> </span>input<span class="w"> </span>statement. +</span><span id="__span-5-8"><a id="__codelineno-5-8" name="__codelineno-5-8"></a> +</span><span id="__span-5-9"><a id="__codelineno-5-9" name="__codelineno-5-9"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>> +</span></code></pre></div></td></tr></table></div> +<p>Create a new database for SeAT to use with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>create<span class="w"> </span>database<span class="w"> </span>seat<span class="p">;</span> +</span></code></pre></div> +<p>The output should be similar to the below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1">1</a></span> +<span class="normal"><a href="#__codelineno-7-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>><span class="w"> </span>create<span class="w"> </span>database<span class="w"> </span>seat<span class="p">;</span> +</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2"></a>Query<span class="w"> </span>OK,<span class="w"> </span><span class="m">1</span><span class="w"> </span>row<span class="w"> </span>affected<span class="w"> </span><span class="o">(</span><span class="m">0</span>.00<span class="w"> </span>sec<span class="o">)</span> +</span></code></pre></div></td></tr></table></div> +<p>Next, we need to create the user that SeAT itself will use to connect and use the new <code>seat</code> database:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>GRANT<span class="w"> </span>ALL<span class="w"> </span>ON<span class="w"> </span>seat.*<span class="w"> </span>to<span class="w"> </span>seat@localhost<span class="w"> </span>IDENTIFIED<span class="w"> </span>BY<span class="w"> </span><span class="s1">'s_p3rs3c3r3tp455w0rd'</span><span class="p">;</span> +</span></code></pre></div> +<p>Of course, you need to replace <code>s_p3rs3c3r3tp455w0rd</code> with your own unique and strong password. +Successfully running this should present you with output similar to the below:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>MariaDB<span class="w"> </span><span class="o">[(</span>none<span class="o">)]</span>><span class="w"> </span>GRANT<span class="w"> </span>ALL<span class="w"> </span>ON<span class="w"> </span>seat.*<span class="w"> </span>to<span class="w"> </span>seat@localhost<span class="w"> </span>IDENTIFIED<span class="w"> </span>BY<span class="w"> </span><span class="s1">'s_p3rs3c3r3tp455w0rd'</span><span class="p">;</span> +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>Query<span class="w"> </span>OK,<span class="w"> </span><span class="m">0</span><span class="w"> </span>rows<span class="w"> </span>affected<span class="w"> </span><span class="o">(</span><span class="m">0</span>.00<span class="w"> </span>sec<span class="o">)</span> +</span></code></pre></div></td></tr></table></div> +<p>In the example above, we have effectively declared that SeAT will be using the database as <code>seat:s_p3rs3c3r3tp455w0rd@localhost/seat</code>.</p> +<p>Finally, we will flush the database server privileges:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>FLUSH<span class="w"> </span>PRIVILEGES<span class="p">;</span> +</span></code></pre></div> +<p>That concludes the database server setup. You can exit the prompt with <code>exit</code>;</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Remember the password for the <code>seat</code> database user as we will need it later to configure SeAT.</p> +</div> +<h3 id="php">PHP<a class="headerlink" href="#php" title="Permanent link">¶</a></h3> +<p>Since SeAT is written primarily in PHP, we will need to install PHP packages. Ubuntu based systems can make use of the <a href="https://launchpad.net/~ondrej/+archive/ubuntu/php">ondrej PPA</a> which is a very popular repository used for specific PHP versions.</p> +<p>Depending on the version of Ubuntu you are using, a release specific repository URL should be used for the PPA. Select the tab applicable to your Ubuntu version and run the commands within.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Bionic 18.04</label><label for="__tabbed_1_2">Focal 20.04</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span> +<span class="normal"><a href="#__codelineno-11-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu bionic main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span> +<span class="normal"><a href="#__codelineno-12-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a><span class="nb">echo</span><span class="w"> </span><span class="s2">"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu focal main"</span><span class="w"> </span>>><span class="w"> </span>/etc/apt/sources.list.d/php.list +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> +<p>Next, we will have to download the new repositories GPG signing key and add it into our keychain</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>apt-key<span class="w"> </span>adv<span class="w"> </span>--recv-keys<span class="w"> </span>--keyserver<span class="w"> </span>keyserver.ubuntu.com<span class="w"> </span>4F4EA0AAE5267A6C +</span></code></pre></div> +<p>With the new repository configured, update the package lists with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>apt-get<span class="w"> </span>update +</span></code></pre></div> +<p>Finally, install the required PHP packages with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-15-1">1</a></span> +<span class="normal"><a href="#__codelineno-15-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>libpng-dev<span class="w"> </span>libfreetype6-dev<span class="w"> </span>libjpeg-dev +</span><span id="__span-15-2"><a id="__codelineno-15-2" name="__codelineno-15-2"></a>apt-get<span class="w"> </span>install<span class="w"> </span>curl<span class="w"> </span>openssl<span class="w"> </span>zip<span class="w"> </span>php7.3-bz2<span class="w"> </span>php7.3-cli<span class="w"> </span>php7.3-curl<span class="w"> </span>php7.3-dom<span class="w"> </span>php7.3-gd<span class="w"> </span>php7.3-gmp<span class="w"> </span>php7.3-intl<span class="w"> </span>php7.3-mbstring<span class="w"> </span>php7.3-mysql<span class="w"> </span>php7.3-opcache<span class="w"> </span>php7.3-redis<span class="w"> </span>php7.3-zip +</span></code></pre></div></td></tr></table></div> +<h3 id="redis">Redis<a class="headerlink" href="#redis" title="Permanent link">¶</a></h3> +<p>SeAT makes use of <a href="http://redis.io/">Redis</a> as a cache and message broker for the Queue back end. Installing it is really easy. Do it with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>redis-server +</span></code></pre></div> +<div class="admonition hint"> +<p class="admonition-title">Hint</p> +<p>By default, redis is making backup from its database - so it ensure integrity in case of failure. +However, in certain condition, like power outage, this backup might be unprocessable and avoid redis to run.</p> +<p>Since we don't store anything critical in it, you may want to disable this. To do so, edit the configuration file +using <code>nano /etc/redis/redis.conf</code> and search line <code>appendonly no</code>, change it for <code>appendonly yes</code></p> +<p>If you are on a small server, You may also want to limit the part of memory used by redis (by default, it will consume all available memory). +To do so, into the redis configuration file, search line <code># maxmemory <bytes></code> and change it for <code>maxmemory xGB</code> where <code>x</code> is the memory limit you want to set.</p> +</div> +<h2 id="seat-installation">SeAT Installation<a class="headerlink" href="#seat-installation" title="Permanent link">¶</a></h2> +<h3 id="prerequisites">Prerequisites<a class="headerlink" href="#prerequisites" title="Permanent link">¶</a></h3> +<p>Excellent progress! All of the operating system level requirements are now met and we are almost ready to install SeAT itself. The only thing that is outstanding is the package manager called <code>composer</code> as well as the <code>git</code> client. The combination of <code>composer</code> and <code>git</code> will let us download the SeAT source code from Github and install it locally.</p> +<h4 id="git">Git<a class="headerlink" href="#git" title="Permanent link">¶</a></h4> +<p>Install <code>git</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>git +</span></code></pre></div> +<h4 id="composer">Composer<a class="headerlink" href="#composer" title="Permanent link">¶</a></h4> +<p>Next, install <code>composer</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>curl<span class="w"> </span>-sS<span class="w"> </span>https://getcomposer.org/installer<span class="w"> </span><span class="p">|</span><span class="w"> </span>php<span class="w"> </span>--<span class="w"> </span>--install-dir<span class="o">=</span>/usr/local/bin<span class="w"> </span>--filename<span class="o">=</span>composer<span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="nb">hash</span><span class="w"> </span>-r +</span></code></pre></div> +<p>Thats it. Lets install SeAT! By default, we suggest you run SeAT from within <code>/var/www/seat</code>. As part of the installation, the <code>seat</code> directory will be created for us, but we will need to create <code>/var/www</code> for now as we have not yet configured the web server.</p> +<p>Create the <code>www</code> directory with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>mkdir<span class="w"> </span>-p<span class="w"> </span>/var/www +</span></code></pre></div> +<p>Next, <code>cd</code> to the new <code>/var/www</code> directory with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="nb">cd</span><span class="w"> </span>/var/www +</span></code></pre></div> +<h3 id="seat-download">SeAT Download<a class="headerlink" href="#seat-download" title="Permanent link">¶</a></h3> +<p>With all of the prerequisites installed as well as our <code>www</code> directory ready we can finally download SeAT. Do that with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>composer<span class="w"> </span>create-project<span class="w"> </span>eveseat/seat<span class="w"> </span>--no-dev<span class="w"> </span>--no-interaction +</span></code></pre></div> +<p>Once the download is done, you should have seen output such as:</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>Writing lock file +</span><span id="__span-22-2"><a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a>Generating optimized autoload files +</span><span id="__span-22-3"><a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a>> Illuminate\Foundation\ComposerScripts::postAutoloadDump +</span><span id="__span-22-4"><a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a>> @php artisan package:discover +</span><span id="__span-22-5"><a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a>Discovered Package: darkaonline/l5-swagger +</span><span id="__span-22-6"><a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a>Discovered Package: eveseat/api +</span><span id="__span-22-7"><a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a>Discovered Package: eveseat/console +</span><span id="__span-22-8"><a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a>Discovered Package: eveseat/eveapi +</span><span id="__span-22-9"><a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a>Discovered Package: eveseat/notifications +</span><span id="__span-22-10"><a id="__codelineno-22-10" name="__codelineno-22-10" href="#__codelineno-22-10"></a>Discovered Package: eveseat/services +</span><span id="__span-22-11"><a id="__codelineno-22-11" name="__codelineno-22-11" href="#__codelineno-22-11"></a>Discovered Package: eveseat/web +</span><span id="__span-22-12"><a id="__codelineno-22-12" name="__codelineno-22-12" href="#__codelineno-22-12"></a>Package manifest generated successfully. +</span><span id="__span-22-13"><a id="__codelineno-22-13" name="__codelineno-22-13" href="#__codelineno-22-13"></a>> @php artisan key:generate +</span><span id="__span-22-14"><a id="__codelineno-22-14" name="__codelineno-22-14" href="#__codelineno-22-14"></a>Application key [base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k=] set successfully. +</span></code></pre></div> +<h4 id="permissions">Permissions<a class="headerlink" href="#permissions" title="Permanent link">¶</a></h4> +<p>You may have noticed a warning about <code>composer</code> running as <code>root</code>. For now this can be safely ignored. Post the installation of the SeAT source code, we need to fix up the permissions of the downloaded files. Do that with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-23-1">1</a></span> +<span class="normal"><a href="#__codelineno-23-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-23-1"><a id="__codelineno-23-1" name="__codelineno-23-1"></a>chown<span class="w"> </span>-R<span class="w"> </span>www-data:www-data<span class="w"> </span>/var/www/seat +</span><span id="__span-23-2"><a id="__codelineno-23-2" name="__codelineno-23-2"></a>chmod<span class="w"> </span>-R<span class="w"> </span>guo+w<span class="w"> </span>/var/www/seat/storage/ +</span></code></pre></div></td></tr></table></div> +<p>This will ensure that the web server, cron jobs and workers have access to the source code as well as logs.</p> +<h3 id="seat-setup">SeAT Setup<a class="headerlink" href="#seat-setup" title="Permanent link">¶</a></h3> +<p>With SeAT downloaded, we need to configure it. There are a number of configuration tasks needed. These include editing the applications <code>.env</code> file as well as running some commands that setup and seed the database. A configuration value reference can be found <a href="../../../configuration/env_file_reference/">here</a>.</p> +<h4 id="env-setup">.env setup<a class="headerlink" href="#env-setup" title="Permanent link">¶</a></h4> +<p>The first task would be to configure the applications database connection. Open the file located at <code>/var/www/seat/.env</code> with something like <code>vi</code> or <code>nano</code> and update the database options with your values. Typically, only the password would really need to be updated. If you are making use of an existing database somewhere else over the network, update the applicable fields such as <code>DB_HOST</code> accordingly.</p> +<div class="language-yaml highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-24-1">1</a></span> +<span class="normal"><a href="#__codelineno-24-2">2</a></span> +<span class="normal"><a href="#__codelineno-24-3">3</a></span> +<span class="normal"><a href="#__codelineno-24-4">4</a></span> +<span class="normal"><a href="#__codelineno-24-5">5</a></span> +<span class="normal"><a href="#__codelineno-24-6">6</a></span> +<span class="normal"><a href="#__codelineno-24-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1"></a><span class="l l-Scalar l-Scalar-Plain">DB_CONNECTION=mysql</span> +</span><span id="__span-24-2"><a id="__codelineno-24-2" name="__codelineno-24-2"></a><span class="l l-Scalar l-Scalar-Plain">DB_HOST=127.0.0.1</span> +</span><span id="__span-24-3"><a id="__codelineno-24-3" name="__codelineno-24-3"></a><span class="l l-Scalar l-Scalar-Plain">DB_PORT=3306</span> +</span><span id="__span-24-4"><a id="__codelineno-24-4" name="__codelineno-24-4"></a><span class="l l-Scalar l-Scalar-Plain">DB_DATABASE=seat</span> +</span><span id="__span-24-5"><a id="__codelineno-24-5" name="__codelineno-24-5"></a><span class="l l-Scalar l-Scalar-Plain">DB_USERNAME=seat</span> +</span><span id="__span-24-6"><a id="__codelineno-24-6" name="__codelineno-24-6"></a><span class="l l-Scalar l-Scalar-Plain">DB_PASSWORD=s_p3rs3c3r3tp455w0rd</span><span class="w"> </span><span class="c1"># <-- this is the value you probably need to edit.</span> +</span><span id="__span-24-7"><a id="__codelineno-24-7" name="__codelineno-24-7"></a><span class="l l-Scalar l-Scalar-Plain">DB_DEBUG=false</span> +</span></code></pre></div></td></tr></table></div> +<h4 id="database-migrations-and-seeds">Database Migrations and Seeds<a class="headerlink" href="#database-migrations-and-seeds" title="Permanent link">¶</a></h4> +<p>Next we need to publish the database migrations and web assets (such as JavaScript scripts and CSS Style sheets), run those migrations and finally seed the SeAT job schedule.</p> +<p>Publish the assets and database migrations with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan vendor:publish --force --all'</span> +</span></code></pre></div> +<p>Run the database migrations with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan migrate'</span> +</span></code></pre></div> +<p>Seed the SeAT schedule with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-27-1"><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan db:seed --class=Seat\\Console\\database\\seeds\\ScheduleSeeder'</span> +</span></code></pre></div> +<h4 id="eve-sde-update">EVE Sde Update<a class="headerlink" href="#eve-sde-update" title="Permanent link">¶</a></h4> +<p>SeAT makes use of a number of tables from the EVE <a href="https://developers.eveonline.com/resource/resources">Static Data Exports</a>. MySQL conversions of this data is available at <a href="https://www.fuzzwork.co.uk/dump/">https://www.fuzzwork.co.uk/dump/</a> and used in SeAT.</p> +<p>To update to the <a href="https://github.com/eveseat/resources/blob/master/tools/generate_sde_json.php#L22">latest SDE</a> within SeAT, run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan eve:update:sde'</span> +</span></code></pre></div> +<h3 id="supervisor">Supervisor<a class="headerlink" href="#supervisor" title="Permanent link">¶</a></h3> +<p>The jobs ecosystem within SeAT requires a process supervisor to ensure that the job runner stays alive. The job runner itself is implemented using <a href="https://horizon.laravel.com/">Laravel Horizon</a> and is monitored using <a href="http://supervisord.org/">supervisord</a>.</p> +<p>To configure the Horizon process monitor, first install <code>supervisor</code>:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>supervisor +</span></code></pre></div> +<p>Next, we will create a dedicated configuration file which will ask supervisor to keep an eye on Horizon. This file will live in <code>/etc/supervisor/conf.d/seat.conf</code>. Create this file with its recommended configuration with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-30-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-30-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-30-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-30-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-30-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-30-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-30-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-30-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-30-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-30-10">10</a></span> +<span class="normal"><a href="#__codelineno-30-11">11</a></span> +<span class="normal"><a href="#__codelineno-30-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1"></a>cat<span class="w"> </span>><span class="w"> </span>/etc/supervisor/conf.d/seat.conf<span class="w"> </span><span class="s"><< EOL</span> +</span><span id="__span-30-2"><a id="__codelineno-30-2" name="__codelineno-30-2"></a><span class="s">[program:seat]</span> +</span><span id="__span-30-3"><a id="__codelineno-30-3" name="__codelineno-30-3"></a><span class="s">command=/usr/bin/php /var/www/seat/artisan horizon</span> +</span><span id="__span-30-4"><a id="__codelineno-30-4" name="__codelineno-30-4"></a><span class="s">process_name = %(program_name)s-80%(process_num)02d</span> +</span><span id="__span-30-5"><a id="__codelineno-30-5" name="__codelineno-30-5"></a><span class="s">stdout_logfile = /var/log/seat-80%(process_num)02d.log</span> +</span><span id="__span-30-6"><a id="__codelineno-30-6" name="__codelineno-30-6"></a><span class="s">stdout_logfile_maxbytes=100MB</span> +</span><span id="__span-30-7"><a id="__codelineno-30-7" name="__codelineno-30-7"></a><span class="s">stdout_logfile_backups=10</span> +</span><span id="__span-30-8"><a id="__codelineno-30-8" name="__codelineno-30-8"></a><span class="s">numprocs=1</span> +</span><span id="__span-30-9"><a id="__codelineno-30-9" name="__codelineno-30-9"></a><span class="s">directory=/var/www/seat</span> +</span><span id="__span-30-10"><a id="__codelineno-30-10" name="__codelineno-30-10"></a><span class="s">stopwaitsecs=600</span> +</span><span id="__span-30-11"><a id="__codelineno-30-11" name="__codelineno-30-11"></a><span class="s">user=www-data</span> +</span><span id="__span-30-12"><a id="__codelineno-30-12" name="__codelineno-30-12"></a><span class="s">EOL</span> +</span></code></pre></div></td></tr></table></div> +<p>Finally, reload supervisor to apply the new configuration with the following command:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>supervisor.service +</span></code></pre></div> +<h3 id="crontab">Crontab<a class="headerlink" href="#crontab" title="Permanent link">¶</a></h3> +<p>A crontab entry is needed for SeAT. While simple in implementation, this crontab entry simply helps the application invoke a job checker very minute. The <em>actual</em> schedule is stored within SeAT itself and managed entirely via the Web Interface.</p> +<p>To configure the crontab entry required for SeAT, run the following commands:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="nb">echo</span><span class="w"> </span><span class="s1">'* * * * * php /var/www/seat/artisan schedule:run >> /dev/null 2>&1'</span><span class="w"> </span>><span class="w"> </span>/tmp/seat-crontab.tmp +</span></code></pre></div> +<p>Next, add this crontab for the <code>www-data</code> user with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>crontab<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>/tmp/seat-crontab.tmp +</span></code></pre></div> +<p>If you want to confirm that the crontab successfully installed, you can check it with <code>crontab -u www-data -l</code>.</p> +<h3 id="web-server">Web Server<a class="headerlink" href="#web-server" title="Permanent link">¶</a></h3> +<div class="admonition note"> +<p class="admonition-title">Almost there!<p>You almost made it to the end! Just one more step.</p> +</p> +</div> +<p>The SeAT web interface requires a web server to serve the HTML goodies it has. We highly recommend you to use <code>nginx</code> and will be covered in this document. You don't <strong>have</strong> to use it, so if you prefer something else, feel free.</p> +<h4 id="nginx-install">Nginx Install<a class="headerlink" href="#nginx-install" title="Permanent link">¶</a></h4> +<p>Together with an <code>nginx</code> installation we also need to install <code>php-fpm</code> to handle the PHP execution for us. Let's install <code>nginx</code> and <code>php-fpm</code> with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>apt-get<span class="w"> </span>install<span class="w"> </span>nginx<span class="w"> </span>php7.3-fpm +</span></code></pre></div> +<h4 id="nginx-configuration">Nginx Configuration<a class="headerlink" href="#nginx-configuration" title="Permanent link">¶</a></h4> +<p>With the webserver installed, we need to configure <code>nginx</code> to serve SeAT. For that, a configuration file needs to be created that will tell <code>nginx</code> where to find <code>php-fpm</code> as well as where the assets are for SeAT.</p> +<p>The configuration file will live at <code>/etc/nginx/sites-available/seat</code>. It can be created with the following command:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-35-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-35-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-35-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-35-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-35-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-35-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-35-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-35-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-35-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-35-10">10</a></span> +<span class="normal"><a href="#__codelineno-35-11">11</a></span> +<span class="normal"><a href="#__codelineno-35-12">12</a></span> +<span class="normal"><a href="#__codelineno-35-13">13</a></span> +<span class="normal"><a href="#__codelineno-35-14">14</a></span> +<span class="normal"><a href="#__codelineno-35-15">15</a></span> +<span class="normal"><a href="#__codelineno-35-16">16</a></span> +<span class="normal"><a href="#__codelineno-35-17">17</a></span> +<span class="normal"><a href="#__codelineno-35-18">18</a></span> +<span class="normal"><a href="#__codelineno-35-19">19</a></span> +<span class="normal"><a href="#__codelineno-35-20">20</a></span> +<span class="normal"><a href="#__codelineno-35-21">21</a></span> +<span class="normal"><a href="#__codelineno-35-22">22</a></span> +<span class="normal"><a href="#__codelineno-35-23">23</a></span> +<span class="normal"><a href="#__codelineno-35-24">24</a></span> +<span class="normal"><a href="#__codelineno-35-25">25</a></span> +<span class="normal"><a href="#__codelineno-35-26">26</a></span> +<span class="normal"><a href="#__codelineno-35-27">27</a></span> +<span class="normal"><a href="#__codelineno-35-28">28</a></span> +<span class="normal"><a href="#__codelineno-35-29">29</a></span> +<span class="normal"><a href="#__codelineno-35-30">30</a></span> +<span class="normal"><a href="#__codelineno-35-31">31</a></span> +<span class="normal"><a href="#__codelineno-35-32">32</a></span> +<span class="normal"><a href="#__codelineno-35-33">33</a></span> +<span class="normal"><a href="#__codelineno-35-34">34</a></span> +<span class="normal"><a href="#__codelineno-35-35">35</a></span> +<span class="normal"><a href="#__codelineno-35-36">36</a></span> +<span class="normal"><a href="#__codelineno-35-37">37</a></span> +<span class="normal"><a href="#__codelineno-35-38">38</a></span> +<span class="normal"><a href="#__codelineno-35-39">39</a></span> +<span class="normal"><a href="#__codelineno-35-40">40</a></span> +<span class="normal"><a href="#__codelineno-35-41">41</a></span> +<span class="normal"><a href="#__codelineno-35-42">42</a></span> +<span class="normal"><a href="#__codelineno-35-43">43</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-35-1"><a id="__codelineno-35-1" name="__codelineno-35-1"></a>cat<span class="w"> </span>><span class="w"> </span>/etc/nginx/sites-available/seat<span class="w"> </span><span class="s"><< EOL</span> +</span><span id="__span-35-2"><a id="__codelineno-35-2" name="__codelineno-35-2"></a><span class="s">server {</span> +</span><span id="__span-35-3"><a id="__codelineno-35-3" name="__codelineno-35-3"></a> +</span><span id="__span-35-4"><a id="__codelineno-35-4" name="__codelineno-35-4"></a><span class="s"> listen 80;</span> +</span><span id="__span-35-5"><a id="__codelineno-35-5" name="__codelineno-35-5"></a><span class="s"> listen [::]:80;</span> +</span><span id="__span-35-6"><a id="__codelineno-35-6" name="__codelineno-35-6"></a> +</span><span id="__span-35-7"><a id="__codelineno-35-7" name="__codelineno-35-7"></a><span class="s"> # If you are hosting this instance on a domain, set that</span> +</span><span id="__span-35-8"><a id="__codelineno-35-8" name="__codelineno-35-8"></a><span class="s"> # name here.</span> +</span><span id="__span-35-9"><a id="__codelineno-35-9" name="__codelineno-35-9"></a><span class="s"> #server_name seat.yourdomain.com;</span> +</span><span id="__span-35-10"><a id="__codelineno-35-10" name="__codelineno-35-10"></a> +</span><span id="__span-35-11"><a id="__codelineno-35-11" name="__codelineno-35-11"></a><span class="s"> # SeAT public directory. This is the only directory that</span> +</span><span id="__span-35-12"><a id="__codelineno-35-12" name="__codelineno-35-12"></a><span class="s"> # should be exposed by the webserver. If one has to expose</span> +</span><span id="__span-35-13"><a id="__codelineno-35-13" name="__codelineno-35-13"></a><span class="s"> # the parent directory then things like the .env file will</span> +</span><span id="__span-35-14"><a id="__codelineno-35-14" name="__codelineno-35-14"></a><span class="s"> # be available for anyone to download.</span> +</span><span id="__span-35-15"><a id="__codelineno-35-15" name="__codelineno-35-15"></a><span class="s"> root /var/www/seat/public;</span> +</span><span id="__span-35-16"><a id="__codelineno-35-16" name="__codelineno-35-16"></a> +</span><span id="__span-35-17"><a id="__codelineno-35-17" name="__codelineno-35-17"></a><span class="s"> index index.php;</span> +</span><span id="__span-35-18"><a id="__codelineno-35-18" name="__codelineno-35-18"></a> +</span><span id="__span-35-19"><a id="__codelineno-35-19" name="__codelineno-35-19"></a><span class="s"> location / {</span> +</span><span id="__span-35-20"><a id="__codelineno-35-20" name="__codelineno-35-20"></a><span class="s"> try_files \$uri \$uri/ /index.php?\$query_string;</span> +</span><span id="__span-35-21"><a id="__codelineno-35-21" name="__codelineno-35-21"></a><span class="s"> }</span> +</span><span id="__span-35-22"><a id="__codelineno-35-22" name="__codelineno-35-22"></a> +</span><span id="__span-35-23"><a id="__codelineno-35-23" name="__codelineno-35-23"></a><span class="s"> # PHP-FPM configuration.</span> +</span><span id="__span-35-24"><a id="__codelineno-35-24" name="__codelineno-35-24"></a><span class="s"> location ~ \.php\$ {</span> +</span><span id="__span-35-25"><a id="__codelineno-35-25" name="__codelineno-35-25"></a><span class="s"> try_files \$uri /index.php =404;</span> +</span><span id="__span-35-26"><a id="__codelineno-35-26" name="__codelineno-35-26"></a><span class="s"> fastcgi_pass unix:/run/php/php7.3-fpm.sock;</span> +</span><span id="__span-35-27"><a id="__codelineno-35-27" name="__codelineno-35-27"></a><span class="s"> fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;</span> +</span><span id="__span-35-28"><a id="__codelineno-35-28" name="__codelineno-35-28"></a><span class="s"> include fastcgi_params;</span> +</span><span id="__span-35-29"><a id="__codelineno-35-29" name="__codelineno-35-29"></a><span class="s"> }</span> +</span><span id="__span-35-30"><a id="__codelineno-35-30" name="__codelineno-35-30"></a> +</span><span id="__span-35-31"><a id="__codelineno-35-31" name="__codelineno-35-31"></a><span class="s"> # Even though .htaccess rules mean nothing in the nginx</span> +</span><span id="__span-35-32"><a id="__codelineno-35-32" name="__codelineno-35-32"></a><span class="s"> # world, prevent those from being downloaded anyways.</span> +</span><span id="__span-35-33"><a id="__codelineno-35-33" name="__codelineno-35-33"></a><span class="s"> location ~ /\.ht {</span> +</span><span id="__span-35-34"><a id="__codelineno-35-34" name="__codelineno-35-34"></a><span class="s"> deny all;</span> +</span><span id="__span-35-35"><a id="__codelineno-35-35" name="__codelineno-35-35"></a><span class="s"> }</span> +</span><span id="__span-35-36"><a id="__codelineno-35-36" name="__codelineno-35-36"></a> +</span><span id="__span-35-37"><a id="__codelineno-35-37" name="__codelineno-35-37"></a><span class="s"> # In case someone messes up, prevent .env files from</span> +</span><span id="__span-35-38"><a id="__codelineno-35-38" name="__codelineno-35-38"></a><span class="s"> # being downloaded as well.</span> +</span><span id="__span-35-39"><a id="__codelineno-35-39" name="__codelineno-35-39"></a><span class="s"> location ~ /\.env {</span> +</span><span id="__span-35-40"><a id="__codelineno-35-40" name="__codelineno-35-40"></a><span class="s"> deny all;</span> +</span><span id="__span-35-41"><a id="__codelineno-35-41" name="__codelineno-35-41"></a><span class="s"> }</span> +</span><span id="__span-35-42"><a id="__codelineno-35-42" name="__codelineno-35-42"></a><span class="s">}</span> +</span><span id="__span-35-43"><a id="__codelineno-35-43" name="__codelineno-35-43"></a><span class="s">EOL</span> +</span></code></pre></div></td></tr></table></div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>The code block above should not be copied directly into a file. It is a script and should be pasted directly into the linux terminal. It will create the nginx config for you. If you create the file yourself with the above content then the file will not be valid and you will receive errors from nginx.</p> +</div> +<p>The configuration file as is at <code>/etc/nginx/sites-available/seat</code> itself won't be loaded by <code>nginx</code> yet. Storing configuration files in a <code>*sites-available*</code> directory is simply a convention used to allow administrators to quickly add & remove sites if needed. To <em>apply</em> the changes made by the new configuration file it needs to be symlinked to a <code>*sites-enabled*</code> directory.</p> +<p>Let's symlink to the new configuration and drop the default one as a hardening exercise at the same time:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-36-1">1</a></span> +<span class="normal"><a href="#__codelineno-36-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-36-1"><a id="__codelineno-36-1" name="__codelineno-36-1"></a>ln<span class="w"> </span>-s<span class="w"> </span>/etc/nginx/sites-available/seat<span class="w"> </span>/etc/nginx/sites-enabled/seat +</span><span id="__span-36-2"><a id="__codelineno-36-2" name="__codelineno-36-2"></a>rm<span class="w"> </span>/etc/nginx/sites-enabled/default +</span></code></pre></div></td></tr></table></div> +<p>Finally, reload <code>nginx</code> and <code>php-fpm</code> for the new changes to take affect:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-37-1">1</a></span> +<span class="normal"><a href="#__codelineno-37-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-37-1"><a id="__codelineno-37-1" name="__codelineno-37-1"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>nginx.service +</span><span id="__span-37-2"><a id="__codelineno-37-2" name="__codelineno-37-2"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>php7.3-fpm.service +</span></code></pre></div></td></tr></table></div> +<h2 id="esi-configuration">ESI Configuration<a class="headerlink" href="#esi-configuration" title="Permanent link">¶</a></h2> +<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. +For instructions how to do this, please refer to the <a href="../../../configuration/esi_configuration/">ESI Setup Guide</a>.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>You may want to serve your SeAT installation over SSL (using HTTPS) - which is a recommanded behavior. +There are many way to do it, you can have a look on Let's Encrypt which provide you valid certificates for free. +Put an eye to their <a href="https://certbot.eff.org">Certbot Documentation</a>.</p> +</div> +<div class="admonition success"> +<p class="admonition-title">Success</p> +<p>You made it! Use a browser and browse to the IP address / hostname of your server to access SeAT!</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/installation/requirements/index.html b/installation/requirements/index.html new file mode 100644 index 00000000..f296f76c --- /dev/null +++ b/installation/requirements/index.html @@ -0,0 +1,1676 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/installation/requirements/"> + + + <link rel="prev" href="../.."> + + + <link rel="next" href="../docker_installation/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Requirements - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#requirements" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Requirements + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked> + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="true"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Requirements + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Requirements + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#hardware-requirements" class="md-nav__link"> + Hardware Requirements + </a> + + <nav class="md-nav" aria-label="Hardware Requirements"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#up-to-25-characters" class="md-nav__link"> + Up to 25 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#up-to-500-characters" class="md-nav__link"> + Up to 500 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#up-to-1-000-characters" class="md-nav__link"> + Up to 1 000 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#more-than-1-000-characters" class="md-nav__link"> + More than 1 000 characters + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#software-requirements" class="md-nav__link"> + Software Requirements + </a> + + <nav class="md-nav" aria-label="Software Requirements"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-environment" class="md-nav__link"> + Docker Environment + </a> + +</li> + + <li class="md-nav__item"> + <a href="#bare-metal-environment" class="md-nav__link"> + Bare metal Environment + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#hardware-requirements" class="md-nav__link"> + Hardware Requirements + </a> + + <nav class="md-nav" aria-label="Hardware Requirements"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#up-to-25-characters" class="md-nav__link"> + Up to 25 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#up-to-500-characters" class="md-nav__link"> + Up to 500 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#up-to-1-000-characters" class="md-nav__link"> + Up to 1 000 characters + </a> + +</li> + + <li class="md-nav__item"> + <a href="#more-than-1-000-characters" class="md-nav__link"> + More than 1 000 characters + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#software-requirements" class="md-nav__link"> + Software Requirements + </a> + + <nav class="md-nav" aria-label="Software Requirements"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#docker-environment" class="md-nav__link"> + Docker Environment + </a> + +</li> + + <li class="md-nav__item"> + <a href="#bare-metal-environment" class="md-nav__link"> + Bare metal Environment + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h1> +<h2 id="hardware-requirements">Hardware Requirements<a class="headerlink" href="#hardware-requirements" title="Permanent link">¶</a></h2> +<p>As far as hardware goes, there isn't really a hard and fast rule on what is needed. +The more resources you make available, the faster API updates will occur. +However, there are some minimum <em>recommended</em> specifications.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Required CPU cores are indicative and may changes depending on your processor. +They have been based on a one tier deployment (app, workers and database are hosted on the same server).</p> +<p>To improve accuracy regarding CPU requirements, we provide a <a href="https://www.eembc.org/coremark/">Coremark</a> value. +Since Cloud providers like <a href="https://docs.microsoft.com/fr-fr/azure/virtual-machines/linux/compute-benchmark-scores">Azure</a> and <a href="https://cloud.google.com/compute/docs/benchmarks-linux">Google Cloud</a> are providing their instance benchmark using this test, it should give you a more meaningful idea of what we are talking about.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>If you intend to process a large amount of data, plan your storage accordingly. +The SeAT database can grow incredibly quickly depending on the amount of tokens you process.</p> +<p>Due to high I/O traffic generated by SeAT, we recommand NVMe storage usage for best performances.</p> +</div> +<h3 id="up-to-25-characters">Up to 25 characters<a class="headerlink" href="#up-to-25-characters" title="Permanent link">¶</a></h3> +<table> +<thead> +<tr> +<th>Type</th> +<th>Requirement</th> +</tr> +</thead> +<tbody> +<tr> +<td>CPU</td> +<td>2 virtual cores (Coremark 20 000+)</td> +</tr> +<tr> +<td>Memory</td> +<td>2GB of RAM with a swap file</td> +</tr> +<tr> +<td>Core Storage Space</td> +<td>1GB (tend to be stable)</td> +</tr> +<tr> +<td>ESI Cache Storage Space</td> +<td>2GB (tend to grow with characters)</td> +</tr> +<tr> +<td>Database Storage Space</td> +<td>5GB (tend to grow with characters and history)</td> +</tr> +</tbody> +</table> +<h3 id="up-to-500-characters">Up to 500 characters<a class="headerlink" href="#up-to-500-characters" title="Permanent link">¶</a></h3> +<table> +<thead> +<tr> +<th>Type</th> +<th>Requirement</th> +</tr> +</thead> +<tbody> +<tr> +<td>CPU</td> +<td>2 virtual cores (Coremark 20 000+)</td> +</tr> +<tr> +<td>Memory</td> +<td>4GB of RAM</td> +</tr> +<tr> +<td>Core Storage Space</td> +<td>1GB (tend to be stable)</td> +</tr> +<tr> +<td>ESI Cache Storage Space</td> +<td>5GB (tend to grow with characters)</td> +</tr> +<tr> +<td>Database Storage Space</td> +<td>10GB (tend to grow with characters and history)</td> +</tr> +</tbody> +</table> +<h3 id="up-to-1-000-characters">Up to 1 000 characters<a class="headerlink" href="#up-to-1-000-characters" title="Permanent link">¶</a></h3> +<table> +<thead> +<tr> +<th>Type</th> +<th>Requirement</th> +</tr> +</thead> +<tbody> +<tr> +<td>CPU</td> +<td>4 virtual cores (Coremark 40 000+)</td> +</tr> +<tr> +<td>Memory</td> +<td>8GB of RAM</td> +</tr> +<tr> +<td>Core Storage Space</td> +<td>1GB (tend to be stable)</td> +</tr> +<tr> +<td>ESI Cache Storage Space</td> +<td>10GB (tend to grow with characters)</td> +</tr> +<tr> +<td>Database Storage Space</td> +<td>20GB (tend to grow with characters and history)</td> +</tr> +</tbody> +</table> +<h3 id="more-than-1-000-characters">More than 1 000 characters<a class="headerlink" href="#more-than-1-000-characters" title="Permanent link">¶</a></h3> +<p>If you plan to run SeAT for more than 1 000 characters, you will have to fine tune your installation and carefully monitoring it. +At time this documentation is wrote, a standard character is queuing around 50 jobs per wave. +Since all jobs are not doing the same thing, it's difficult to provide you accurate figures.</p> +<p>A single worker is consuming around 200 MB of memory. Most jobs are requiring less than 5% of CPU - however, a few of them need more than 20% of it. +The more jobs you'll get, the more workers you'll need to process queue in less than 60 minutes.</p> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>With such installation, you shouldn't share SeAT server resources with other services. +Also, you should consider deploying database on another server.</p> +</div> +<h2 id="software-requirements">Software Requirements<a class="headerlink" href="#software-requirements" title="Permanent link">¶</a></h2> +<h3 id="docker-environment">Docker Environment<a class="headerlink" href="#docker-environment" title="Permanent link">¶</a></h3> +<p>For Docker based installations, all you need is <code>docker</code>. +If you already have it installed, check your current version with <code>docker version</code>.</p> +<table> +<thead> +<tr> +<th>Type</th> +<th>Requirement</th> +<th>Version Check</th> +</tr> +</thead> +<tbody> +<tr> +<td>Docker</td> +<td><a href="https://www.docker.com/">Docker: ^24.0</a></td> +<td><code>docker -v</code></td> +</tr> +</tbody> +</table> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>If you plan to deploy SeAT on a Windows host, you will need <a href="https://docs.docker.com/docker-for-windows/">Docker for Windows</a></p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Do not install Docker directly from your distributions repositories. These are usually out of date. +Instead, rather follow the steps provided on dockers <a href="https://docs.docker.com/install/">official documentation</a></p> +<p>When considering a VPS provider, make sure you choose one that does not make use of OpenVZ or similar operating-system level virtualization technologies. These virtualization technologies limit you in terms of kernel access as they purely containerize an existing Linux installation.</p> +<p>For a successful docker installation, choose a provider that uses para-virtualized technologies such as KVM, VMWare or XEN allowing you full control to the instance (and therefor the kernel itself). Examples of such providers are <a href="https://www.digitalocean.com/">Digital Ocean</a>, <a href="https://www.linode.com/">Linode</a> and <a href="https://www.vultr.com/">Vultr</a>.</p> +</div> +<h3 id="bare-metal-environment">Bare metal Environment<a class="headerlink" href="#bare-metal-environment" title="Permanent link">¶</a></h3> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>We consider "bare metal", any environment on which SeAT has been deployed manually (instead using containers).</p> +<p>If you plan to deploy SeAT on a Windows host, you will have to use <a href="#docker-environment">Docker</a></p> +</div> +<p>Software version requirements are based on a <em>minimum</em> requirement.</p> +<table> +<thead> +<tr> +<th>Type</th> +<th>Requirement</th> +<th>State Check</th> +</tr> +</thead> +<tbody> +<tr> +<td>Operating System</td> +<td>Linux (any distribution is suitable, however, Ubuntu tends to get more up-to-date packages on official repositories).</td> +<td>Usually, running <code>cat /etc/issue</code> should give you a good idea.</td> +</tr> +<tr> +<td>Architecture</td> +<td>64-bit only</td> +<td><code>uname -p</code></td> +</tr> +<tr> +<td>PHP</td> +<td><a href="http://php.net/">PHP: ^8.3</a> including mysql, gd, bz2, intl, pcntl, gmp, openssl, zip, opcache and redis extensions</td> +<td><code>php -v</code> and <code>php -i</code></td> +</tr> +<tr> +<td>Database</td> +<td><a href="https://mariadb.org/">MariaDB: ^10.2.7</a></td> +<td><code>mysql -V</code></td> +</tr> +<tr> +<td>Caching Service</td> +<td><a href="https://redis.io/">Redis</a></td> +<td><code>redis-server -v</code></td> +</tr> +<tr> +<td>Service Supervisor</td> +<td><a href="http://supervisord.org/">Supervisor : 3</a></td> +<td><code>supervisord -v</code></td> +</tr> +<tr> +<td>Web Server</td> +<td><a href="https://www.nginx.com/">NGinX</a> or <a href="https://httpd.apache.org/">Apache</a></td> +<td><code>nginx -v</code> or <code>httpd -v</code></td> +</tr> +</tbody> +</table> +<div class="admonition tip"> +<p class="admonition-title">Tip</p> +<p>In case you want to deploy SeAT with Apache as web server, plan to configure it with Fast CGI using php-fpm instead embedded php process. +Doing it so will make you benefit of significant improved performances.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..c97c31e2 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#home","title":"Home","text":"<p>Welcome to the SeAT documentation pages!</p> <p>This site aims to provide you with useful, technical information about SeAT. Please refer to the index on the side for detailed installation instructions, documentation about SeAT internals and/or development guidelines!</p> <p>Contributing to Documentation</p> <p>Great software is coupled with even greater documentation. If you would like to contribute to making this documentation even better, please don't hesitate to fork the documentation repository and submit a pull request with your contribution. We are always looking for better information.</p>"},{"location":"#quick-start","title":"Quick Start","text":"<p>There are many ways to install SeAT. In all cases you will need a dedicated server as a minimum. Using the docker installation you are free to choose any Docker capable host (yes, even Windows!). However, if you choose to install SeAT on bare metal, you'll need a linux distribution. We suggest you choose an LTS version of Ubuntu, Debian or CentOS.</p>"},{"location":"#installation-options","title":"Installation Options","text":"<p>Ignoring the details, to get SeAT installed quickly you have a few options. All of them will get you SeAT installed, but you still have to manually configure an SSO application on the EVE Online Developers Portal.</p> Method Comments Docker Follow our docker installation guide. This is the recommended way to install SeAT as it will handle near everything for you. Manually You can always install SeAT by following our manual installation guide. All you need is PHP, MariaDB, Redis and a web server and some Linux experience. <p>Warning</p> <p>While installing SeAT - choose one method, and stick to it. Otherwise, you'll get SeAT installed multiple times.</p>"},{"location":"#upgrades-updates","title":"Upgrades / Updates","text":"<p>SeAT is being worked on continuously. New features are added, performance improvements are made and bugs are fixed. If you wish to upgrade to the latest version of SeAT refer to the upgrade section.</p>"},{"location":"#contact","title":"Contact","text":"<p>Want to get in touch with developers, or just other users of SeAT? Refer to the contact section to find out how!</p>"},{"location":"community_packages/","title":"Community Packages","text":""},{"location":"community_packages/#community-packages","title":"Community Packages","text":"<p>Below is a list of packages contributed by the community. These packages normally follow the same installation procedure, however, its best you consult the documentation of the package itself in case there is anything special you need to get it working.</p>"},{"location":"community_packages/#blade-package-installation","title":"Blade package installation","text":"<p>Packages will normally come in the form of a composer package that you need to include in your SeAT install, as well as a Service Provider that you need to bootstrap. So, generically speaking, installing a package will mean that you:</p> <ul> <li> <p>Ensure that you are in the path where you installed. By default, this should be <code>/var/www/seat</code>.</p> </li> <li> <p>Put your application into maintenance mode. This will ensure that no request from the outside will hit your applications logic, and also help you perform an upgrade uninterrupted. Do this with the following commands issued as the webserver user:</p> </li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan down'\n</code></pre> <ul> <li>Require the package via composer:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'composer require <package vendor>/<package-name>'\n</code></pre> <ul> <li>Publish the assets with artisan:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan vendor:publish --force --all'\n</code></pre> <ul> <li>Run migration in order to update database:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan migrate'\n</code></pre> <ul> <li>Renew config and route cache to benefit of newly added functionalities:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan route:cache'\nsudo -H -u www-data bash -c 'php artisan config:cache'\n</code></pre> <ul> <li>Clear SeAT cache after installation:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan seat:cache:clear'\n</code></pre> <ul> <li>Seed schedule so that new and missing commands get added to your schedule:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan db:seed --class=Seat\\\\Services\\\\Database\\\\Seeders\\\\PluginDatabaseSeeder'\n</code></pre> <ul> <li>Bring your application live and back out of maintenance mode:</li> </ul> <pre><code>sudo -H -u www-data bash -c 'php artisan up'\n</code></pre> <p>Installing packages like this will ensure that none of the core SeAT packages are affected and you should be free to upgrade SeAT core at anytime.</p>"},{"location":"community_packages/#docker-package-installation","title":"Docker package installation","text":"<p>Applying community packages to your SeAT instance with Docker requires you to update your .env file located in <code>/opt/seat-docker</code> and uncommenting SEAT_PLUGINS by removing '#' and entering the package(s) to be installed separating each package with a comma. An example of how to enter packages in your .env would be:</p> <pre><code># SeAT Plugins\n# This is a list of the all of the third party plugins that you\n# would like to install as part of SeAT. Package names should be\n# comma seperated if multiple packages should be installed.\nSEAT_PLUGINS=denngarr/seat-fitting,cryptaeve/seat-squad-sync\n</code></pre> <ul> <li>Once you have entered the package(s) to be installed run the below command in <code>/opt/seat-docker</code>:</li> </ul> Docker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using reverse proxy) <pre><code>docker-compose up -d\n</code></pre> <pre><code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre> <p>After running the above command wait for containers affected to rebuild. If SeAT does not come back up refer to Troubleshooting for more insight.</p>"},{"location":"community_packages/#package-list","title":"Package list","text":""},{"location":"community_packages/#seat-specific-packages","title":"SeAT specific packages","text":""},{"location":"community_packages/#maintained-packages","title":"Maintained packages","text":"Package Version (SeAT 4.x) Version (SeAT 5.x) Installation Description alliancewaw/seat-mumble-register Read the docs This plugin provide an extension to generate a certificate for SeAT user and regist it to mumble server cryocaustik/seat-hr Human Resources plugin for SeAT with Applications (with customized questions per corporation), Blacklist, Intel, Kick History, Notes, and Sheet cryptaeve/seat-squad-sync Adds the ability to sync squad members into filters of permissions cryptaeve/seat-text A module to serve public static ascii, with editing access controlled by seat denngarr/seat-fitting See cryptatech-seat-fitting Module to check fittings per character denngarr/seat-srp See cryptatech/seat-srp A module for SeAT that tracks SRP requests cryptatech/seat-fitting See denngarr/seat-fitting Read the docs Module to check fittings per character cryptatech/seat-srp See denngarr/seat-srp A module for SeAT that tracks SRP requests h4zz4rddev/seat-buyback A SeAT module for buyback functionality humunuk/alliance-structure-mngmt Add \"Structures\" sub-menu to Alliance page and show all the structures that belong to corps in alliance kassie/calendar Read the docs Calendar plugin pyTonicis/seat-corp-mining-tax Read the docs A Modul to manage corporation mining tax warlof/seat-discord-connector Read the docs A Discord driver to be used with <code>seat-connector</code> warlof/seat-teamspeak Read the docs A Teamspeak driver to be used with <code>seat-connector</code> recursivetree/seat-info Read the docs A module that adds a small wiki-like article systems for example as a corporation bulletin.SeAT 5.xYou need to follow special steps after upgrading to retain your resource files. recursivetree/seat-rat A module to monitor ratting usage in a system, e.g. to prevent dropping the bounty risk modifier in nullsec. simplyunnamed/seat-user-last-login Tool to help find potential AFK's in your corporation. recursivetree/seat-billing A billing module to help you with ore and rating taxes. recursivetree/seat-pushx-blamer A module to tell you who's guilty of blocking the PushX queue. recursivetree/seat-alliance-industry A corporation/alliance/coalition industry order marketplace recursivetree/seat-inventory Inventory manager for contracts and corporation hangars. recursivetree/seat-transport This plugin is a calculator for hauling costs, for example for an alliance JF service. recursivetree/seat-mineral-hauling Calculates the most efficient way to move minerals in refined ore form."},{"location":"community_packages/#price-provider-packages","title":"Price Provider Packages","text":"<p>These packages implement different prices sources for the recursivetree/seat-prices-core price provider system. If you are on SeAT 5 and use a plugin that uses recursivetree/seat-prices-core internally, you can install and use any of the following price provider packages.</p> Price Provider Version Description recursivetree/seat-prices-evepraisal Prices from evepraisal clones recursivetree/seat-prices-evemarketer Prices from evemarketer.com cryptatech/seat-prices-janice Prices from https://janice.e-351.com/ cryptatech/seat-prices-fuzzwork Prices from https://market.fuzzwork.co.uk/"},{"location":"community_packages/#library-packages","title":"Library Packages","text":"<p>These packages provide utilities for other packages and usually don't need to be installed manually.</p> Package Version Description warlof/seat-connector A generic connector module that handles invites and roles management with any registered platform recursivetree/seat-treelib A module that contains shared code for all <code>recursivetree/*</code> plugins recursivetree/seat-prices-core This plugin provides a price provider system for all plugins dealing with prices. Seat 5.x only."},{"location":"community_packages/#deprecated-packages","title":"Deprecated packages","text":"Package Version Description eve-scout/eveseat-oauth2-server This EVE SeAT package enables an OAuth2 server for Single sign-on. flyingferret/seat-whtools A small collection of tools for helping with Wh-Life corporation management, including calculating doctrine stocking levels (based on contracts and <code>denngarr/seat-fitting</code> plugin), a blue loot tax calculator, and a skill base certificate management. Currently very much a work in progress. freedenizen/eveseat-notes A notes addon for seat 1.x herpaderpaldent/seat-discourse SeAT Discourse enables SeAT to act as SSO provider for your Discourse-Forum instance. Groups and Categories do respect roles of members. With this package you can create hidden sections for your member and public sections for potential recruits to which members get automatically access to. Important: Check installation instructions on Github. herpaderpaldent/seat-groups Module to create auto, open and managed role groups to which user can be automatically be assigned, user can opt-in or user can apply to. herpaderpaldent/seat-notifications This is a fully functional notification package for discord and slack notifications. This package is very easily extendable by other packages and should replace core notifications at some point. Currently seat-groups provide many useful notifications. Notifications are send out by slack or discord bot and uses twice a full oAuth2 authentication of the user. warlof/seat-migrator A migration script between SeAT 2 and SeAT 3 warlof/seat-slack-sso Slack SSO integration for seat 2.x warlof/eveseat-mining-ledger ESI capability that provides a mining ledger to SeAT 2.x warlof/slackbot A slack bot that handles invites and kicks based on an api key"},{"location":"community_packages/#other-seat-related-packages","title":"Other SeAT related packages","text":"<ul> <li>nullsecurity-australia/helm-charts Allows to install EVE SeAT on a Kubernetes Cluster</li> </ul> <p>Danger</p> <p>Packages after this message are provided as history and idea database. They will not work on the stable version since they are non longer maintained by their author or have been integrated in core.</p> <ul> <li>Betriebsrat/err-seat Seat Api Interface for errbot</li> <li>eve-scout/passport-eveseat Passport strategy for authenticating with EVE SeAT using the OAuth 2.0 API.</li> <li>eve-scout/nodebb-plugin-sso-eveseat This NodeBB plugin allows users login/register via their EVE SeAT account.</li> </ul>"},{"location":"community_packages/#installing-different-versions","title":"Installing different versions","text":"<p>Sometimes it can be useful to install a version different from the latest version, for example if you want to install an older version of a plugin or if you want to test a bugfix. The easiest way to find all available versions is to go to the packagist site of the plugin by clicking on the version in the available plugins list. On packagist, if you scroll down, to the right you will find a list of all available versions.</p> BladeDocker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using proxy) <p>Follow the normal installation steps, but change the <code>composer require</code> command to include the package according to the following example:</p> <pre><code>sudo -H -u www-data bash -c 'composer require <package vendor>/<package-name>:<version-name>'\n</code></pre> <p>In your <code>.env</code> file, add the version to the package like this:</p> <p><pre><code>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2\n</code></pre> Next, restart the stack as usual.</p> <pre><code>docker-compose down\ndocker-compose up -d\n</code></pre> <p>In your <code>.env</code> file, add the version to the package like this:</p> <p><pre><code>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2\n</code></pre> Next, restart the stack as usual.</p> <pre><code>docker-compose down\ndocker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <p>In your <code>.env</code> file, add the version to the package like this:</p> <p><pre><code>SEAT_PLUGINS=<vendor>/<package>:<version>,cryptaeve/seat-squad-sync:4.0.2\n</code></pre> Next, restart the stack as usual.</p> <pre><code>docker-compose down\ndocker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre>"},{"location":"styling/","title":"Styling","text":""},{"location":"styling/#styling","title":"Styling","text":"<p>By default, SeAT uses Bootstrap 3 and the Admin LTE template.</p> <p>You may want to customise SeAT design to match either your corporation or alliance colours.</p> <p>To do so, you can use two available css hooks :</p> <ul> <li><code>custom-layout-mini.css</code> used by the sign-in page</li> <li><code>custom-layout.css</code> used by all the entier application, globally</li> </ul>"},{"location":"styling/#bare-metal-installs","title":"Bare Metal Installs","text":"<p>Both files must be located into your <code>public</code> directory.</p> <p>Example</p> <p>Using the default base directory, you'll get the following path : - <code>/var/www/seat/public/custom-layout-mini.css</code> - <code>/var/www/seat/public/custom-layout.css</code></p> <p>These files are loaded automatically if they are detected - you have nothing else to do to enable them.</p>"},{"location":"styling/#docker-installs","title":"Docker Installs","text":"<p>An example of adding these to your Web UI container is provided below:</p> <p>Note</p> <p>Do note the version in <code>docker-compose.yml</code> and reflect this in your override file otherwise version mismatches will occur.</p> <ul> <li>Creating <code>custom</code> directory in <code>/opt/seat-docker/</code> and add files to new directory</li> <li>Creating <code>docker-compose.override.yml</code> in <code>/opt/seat-docker/</code> directory</li> <li>Adding following code to <code>docker-compose.override.yml</code> Note: Uncomment the needed file(s) by removing the <code>#</code></li> </ul> SeAT 4SeAT 5 (using Traefik)SeAT 5 (using proxy) <pre><code>version: \"3.2\"\nservices:\nseat-web:\nvolumes:\n# - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css\n# - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css\n</code></pre> <p>Once you have placed the files you will need to run <code>docker-compose up -d</code> for it to take effect.</p> <pre><code>version: \"3.2\"\nservices:\nfront:\nvolumes:\n# - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css\n# - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css\n</code></pre> <p>Once you have placed the files you will need to run <code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d</code> for it to take effect.</p> <pre><code>version: \"3.2\"\nservices:\nfront:\nvolumes:\n# - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css\n# - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css\n</code></pre> <p>Once you have placed the files you will need to run <code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d</code> for it to take effect.</p> <p>An example of a customized login page using <code>custom-layout-mini.css</code> would be:</p> <p>Note</p> <p>Valid <code>corporations</code> or <code>alliances</code> ids in the URL can be used for <code>login.logo::before</code> section.</p> <pre><code>/**\n * SeAT login page layout\n */\n@media all {\nhtml, body {\nheight: auto;\n}\n.login-page, .register.body {\ncolor: rgb(255,255,255);\nbackground-image: url(https://web.ccpgamescdn.com/aws/eveonline/sso/background.jpg);\nbackground-position: center center;\nbackground-repeat: no-repeat;\nbackground-size: cover;\nbackground-attachment: fixed;\n}\n.login-box, .register-box {\nwidth: 360px;\nmargin: 0;\nposition: absolute;\ntop: 50%;\nleft: 50%;\nbackground: rgba(48,48,48,.8);\ntransform: translate(-50%, -50%);\nborder: 5px solid #ecf0f1;\nborder-radius: 40px;\nbox-shadow: 0 1px 1px rgba(0,0,0,0.05);\n}\n.login-logo, .register-logo {\nfont-size: 35px;\ntext-align: center;\nmargin-bottom: 25px;\nfont-weight: 300;\nmargin-top: 50px;\n}\n.login-logo::before, .register-logo::before {\ncontent: \" \";\ndisplay: block;\nwidth: 128px;\nheight:128px;\nmargin: 0 auto;\nbackground-image: url(https://images.evetech.net/corporations/98482334/logo?size=128);\nborder-radius: 50%;\nmargin-bottom: 50px;\n}\n.login-box-body, .register-box-body {\nbackground: transparent;\npadding: 20px;\nborder-top: 0;\ncolor: inherit;\n}\n}\n</code></pre> <p>The above code will create the login page below:</p> <p></p>"},{"location":"troubleshooting/","title":"Troubleshooting","text":""},{"location":"troubleshooting/#troubleshooting","title":"Troubleshooting","text":"<p>So the inevitable happened. Something broke or simply isn't working as expected! That's OK. Usually its possible to recover from almost any type of error. The only thing that you can't recover from is not making database backups!</p> <p>There are a few things you can do to perform general troubleshooting. These range from flipping SeAT into debug mode to simply running a self diagnostics command. Lets take a look at a few steps you can take:</p>"},{"location":"troubleshooting/#whoops","title":"Whoops","text":"<p>Whoops, looks like something went wrong.</p> <p></p> <p>The dreaded \"Whoops\" message has appeared and now you need to figure out why. Normally, this means that something serious broke and the application simply can't recover by itself. In many cases it could either be a quick fix you can do yourself, or something that could result in the need to fix some code.</p> <p>In either case, the next steps to perform when seeing this would be to either enable debug mode and reloading the page / request that failed, or by viewing the log file while retrying the failed request.</p>"},{"location":"troubleshooting/#memory-errors","title":"Memory Errors","text":"<p>Fatal error: Allowed memory size of #### bytes exhausted (tried to allocate 4096 bytes)...</p> <p>If you are presented with an error below similar to this after \"Updating Dependencies\" you must append your .ENV file with <code>COMPOSER_MEMORY_LIMIT= -1</code> and restart the stack with the following if you are using docker:</p> Docker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using reverse proxy) <pre><code>docker-compose up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre> <p>Note</p> <p>Note: spacing is important for this parameter, if you are unsure copy/paste the needed line into your .ENV file.</p>"},{"location":"troubleshooting/#enabling-debug-mode","title":"Enabling Debug Mode","text":"<p>Debug mode controls how much information about an error condition is displayed to the user. When debug mode is enabled, the error message will be extremely verbose, whereas when its disabled, it simply states that an error had occurred. In either case, the error will always be written to the logs. By default, SeAT does not have debug mode enabled. There are many reasons for this with the primary reason being security related. It goes without saying that once you have completed debugging and fixing your instance, always make sure you disable debug mode afterwards.</p> <p>Once you have enabled debug mode, any errors that may occur would look something like the following instead of the default \"Whoops\" message. Depending on if you have development packages installed (which you wouldn't by default in non-development installations), the debug page may look slightly different.</p> <p></p> <p>Irrespective of how you installed SeAT, enabling debug mode is always a matter of changing the <code>APP_DEBUG</code> configuration option in the <code>.env</code> to `true. However, for it to apply depends on how you installed, so follow the appropriate steps below.</p>"},{"location":"troubleshooting/#debug-mode-host-installs","title":"Debug Mode - Host Installs","text":"<p>Assuming you installed SeAT on your host using either the SeAT tool or manually, cd to your SeAT installation directory. If you followed the guides on this documentation website, that would be in <code>/var/www/seat</code>. Next, open the <code>.env</code> file in a text editor and modify the line that says <code>APP_DEBUG=false</code> to say <code>APP_DEBUG=true</code>.</p> <p>The change would immediately take effect and you can simply reload the failed request for a detailed error message and code stack trace.</p>"},{"location":"troubleshooting/#debug-mode-docker-installs","title":"Debug Mode - Docker Installs","text":"<p>If you installed using Docker, cd to the directory where the <code>docker-compose.yml</code> file is located. Assuming you followed the guides on this website, that would be in <code>/opt/seat-docker</code>. Next, open the <code>.env</code> file in a text editor and modify the line that says <code>APP_DEBUG=false</code> to say <code>APP_DEBUG=true</code>.</p> <p>For the change to take effect, you need to reload the stack:</p> Docker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using reverse proxy) <pre><code>docker-compose up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre> <p>The containers will take a few moments to settle down after which you can reload the failed the request for a detailed error message and code stack trace.</p>"},{"location":"troubleshooting/#checking-log-files","title":"Checking Log Files","text":"<p>Logs are always written to one of two log files irrespective of whether the application is in debug mode or not. Application logs go to the Laravel frameworks log files. API requests sent to ESI are stored int he Eseye log file. Logs are stored in the applications storage directory which can be found in the <code>storage/logs</code> folder.</p> <p>Assuming you followed the guides on this documentation site, the full path to the directory where log files are will be <code>/var/www/seat/storage/logs/</code>. In the case of Docker installations, this will also be the path within the <code>seat-web</code>/<code>front</code> or <code>seat-worker</code>/<code>worker</code> container. Log files are rotated daily and are kept for a maximum of 10 days by default. Therefore, to get to todays application logs, the log file itself may be called <code>laravel-2018-05-31.log</code>. To find today's ESI requests logs, the log file will be called <code>eseye-2018-05-31.log</code>.</p>"},{"location":"troubleshooting/#live-logs-host-installs","title":"Live Logs - Host Installs","text":"<p>Irrespective of which log file you want to look at, getting todays live logs written to screen can be done with the following commands:</p> <p>Application Logs:</p> <pre><code>tail -f /var/www/seat/storage/logs/laravel-$(date +%Y-%m-%d).log\n</code></pre> <p>Esye / ESI Logs:</p> <pre><code>tail -f /var/www/seat/storage/logs/eseye-$(date +%Y-%m-%d).log\n</code></pre>"},{"location":"troubleshooting/#live-logs-docker-installs","title":"Live Logs - Docker Installs","text":"<p>Application source code and log files are shared between the <code>seat-web</code>/<code>front</code>, <code>seat-worker</code>/<code>worker</code> and <code>seat-cron</code>/<code>scheduler</code> containers. Therefore, the following commands can be executed on any of those containers. For purposes of demonstration, we are going to tail the logs from the <code>seat-web</code>/<code>front</code> container.</p> <p>First, enter get a shell within the <code>seat-web</code>/<code>front</code> container while in the <code>/opt/seat-docker/</code> directory with:</p> SeAT 4.xSeAT 5.x <pre><code>docker-compose exec seat-web sh\n</code></pre> <pre><code>docker compose exec front sh\n</code></pre> <p>Next, tail the log files you want to see.</p> <p>Application Logs:</p> <pre><code>tail -f /var/www/seat/storage/logs/laravel-$(date +%Y-%m-%d).log\n</code></pre> <p>Esye / ESI Logs:</p> <pre><code>tail -f /var/www/seat/storage/logs/eseye-$(date +%Y-%m-%d).log\n</code></pre>"},{"location":"troubleshooting/#diagnose-command","title":"Diagnose command","text":"<p>A diagnostics command exists that aims to perform a number of self-checks to help you diagnose problems. This command should be run as the same user the SeAT workers are running as, which is typically either <code>www-data</code> on Ubuntu / Debian based systems and <code>nginx</code> on CentOS based systems. If you have created yourself a separate user for SeAT, then running the diagnose command as that user is what you need to do.</p>"},{"location":"troubleshooting/#diagnose-host-installs","title":"Diagnose - Host Installs","text":"<p>Host installs require you to first <code>cd</code> to the directory where you installed SeAT. If you followed the guides on this website, that would be <code>/var/www/seat</code>. Next, run the diagnose command as the user you are running the workers as. If you are the <code>root</code> user, you can run it with:</p> <pre><code>su -c 'php artisan seat:admin:diagnose' -s /bin/sh www-data\n</code></pre>"},{"location":"troubleshooting/#diagnose-docker-installs","title":"Diagnose - Docker Installs","text":"<p>For Docker installations, the only requirement to run the diagnose command would be to ensure that you are currently in the same folder as that where the stacks <code>docker-compose.yml</code> file lives. If you followed the guides on this website that would be in <code>/opt/seat-docker</code>. Next, run the command with:</p> SeAT 4.xSeAT 5.x <pre><code>docker-compose exec seat-web php artisan seat:admin:diagnose\n</code></pre> <pre><code>docker compose exec front php artisan seat:admin:diagnose\n</code></pre>"},{"location":"about/contact/","title":"Contact","text":""},{"location":"about/contact/#contact","title":"Contact","text":"<p>Have a question? Want to say thank you? Need to express your opinion on SeAT? You are welcome to join us on our official Discord Server! https://discord.gg/VcUZRcnMYK.</p>"},{"location":"about/contact/#eve-online-forum-thread","title":"EVE Online Forum Thread","text":"<p>Track the conversation on the EVE Online Forums.</p>"},{"location":"about/reporting_bugs/","title":"Reporting Bugs","text":""},{"location":"about/reporting_bugs/#reporting-bugs","title":"Reporting Bugs","text":"<p>So, you think its time to report an issue. Awesome! However, before you do this, please go through the troubleshooting steps first to identify any common errors that you might be able to to fix yourself.</p>"},{"location":"about/reporting_bugs/#the-more-info-the-better","title":"The more info, the better","text":"<p>In order to best understand the bug, we need as much info as possible about your environment. For that, you can run the following command (from your SeAT directory), and copy / paste the output as part of your bug report:</p> <pre><code>php artisan seat:admin:diagnose\n</code></pre>"},{"location":"about/reporting_bugs/#log-files","title":"Log files","text":"<p>Log files are a fantastic resource. Check out the Laravel log for any <code>Exception</code> type errors, and add them to your bug report. The log file is located (relative to where you installed SeAT) at:</p> <pre><code>storage/logs/laravel-<todays-date>.log\n</code></pre>"},{"location":"about/reporting_bugs/#screenshots-and-debug-mode","title":"Screenshots and debug mode","text":"<p>Screenshots may also help, so don't be shy to take some and attach them to your bug report! If you flip your installation into debug mode then it may be possible to capture the error that is occurring via a screenshot.</p>"},{"location":"about/reporting_bugs/#report-the-bug","title":"Report the bug","text":"<p>Finally, to report the bug, head over to Github Issues and click on New Issue.</p>"},{"location":"admin_guides/admin_login/","title":"Admin Login","text":""},{"location":"admin_guides/admin_login/#admin-login","title":"Admin Login","text":"<p>SeAT is heavily relaying on EVE Online Single Sign-On to authenticate user. However, it's also shipped with a built-in administrator user.</p> <p>You need an admin account in order to do certain tasks like configuring your instances, roles, squads, etc...</p> <p>In order to authenticate with built-in admin user, use command disclosed bellow (choose your context).</p> Docker (SeAT 4.x)Docker (SeAT 5.x)Bare metal <pre><code>cd /opt/seat-docker\ndocker-compose exec seat-web php artisan seat:admin:login\n</code></pre> <pre><code>cd /opt/seat-docker\ndocker compose exec front php artisan seat:admin:login\n</code></pre> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan seat:admin:login'\n</code></pre> <p>You'll get a link after the command has finished running, which looks similar to the one bellow:</p> <pre><code>SeAT Admin Login URL Generator\nUser 'admin' does not exist. It will be created.\nChecking if 'admin' is a super user\nAdding 'admin' to the Superuser role\nGenerating authentication token\n\nYour authentication URL is valid for 60 seconds.\nhttp://localhost/auth/login/admin/9G3sb8hjMvrbIJrIf10KKtIj1c8e9mL5\n</code></pre> <p>Copy it and paste it inside your browser, and you will be authenticated as the built-in admin account.</p> <p>Hint</p> <p>You can define a standard user account as an administrator from the user card. To do so, go into Settings > Users, search the user which need to be upgraded and clic on the edit button. On the displaying card, check Administrator and confirm change using edit button.</p> <p>Warning</p> <p>If you have not configured the <code>APP_URL</code> setting in the <code>.env</code> file, then the admin url will be generated for <code>localhost</code>. This is most likely incorrect and you can simply replace <code>localhost</code> with your server IP address or domain name.</p>"},{"location":"admin_guides/authorizations/","title":"Authorizations","text":""},{"location":"admin_guides/authorizations/#role-based-access-control","title":"Role-Based Access Control","text":""},{"location":"admin_guides/authorizations/#introduction","title":"Introduction","text":"<p>SeAT supports configuring user access control by means of Role-based Access Control (RBAC). This allows for SeAT administrators to granularly control who has access to what based on which roles a SeAT user has.</p> <p>In SeAT, the default rule is to deny access. As a result, someone without a permission will not be able to access the requested resource.</p> <p>Tip</p> <p>Use roles to define permission without wondering about automation. You will be able to set up role auto assignment with Squads. The more granular are your roles, the easier they will be to maintain them and built your automation rules.</p>"},{"location":"admin_guides/authorizations/#definitions","title":"Definitions","text":"<p>This section aims to clear up the definitions used in the SeAT RBAC implementation.</p> <ul> <li> <p>User A SeAT user account. This can be either a user account that was created in SeAT itself, or an automatically created account based on SSO. The only difference between the accounts is that with an SSO account, SeAT has no idea what the account's password is. Otherwise, everything else is exactly the same.</p> </li> <li> <p>Scope A scope is a domain grouping different permissions related to the same topic. Permissions from certain scope can be limited (ie: character or corporation).</p> </li> <li> <p>Permission A Permission is an attribute that is assigned to a Role. It grants access based on the specific permission.</p> </li> <li> <p>Role A Role is simply a collection of permissions. Users get assigned a roles and inherit the permissions granted by that role. A user cannot be given a raw permission. Permissions can only be granted by creating a Role, assigning permissions to the Role and granting the role to a user.</p> </li> <li> <p>Filters Permissions from certain scope can received filters. That simply mean the granted permission is limited to certain conditions. As an example, you may want to limit the asset permission from character scope to only a selection of character.</p> </li> <li> <p>Entity An entity is something on which the permission will be applied. It can be a Character, a Corporation or anything else.</p> </li> </ul>"},{"location":"admin_guides/authorizations/#interface","title":"Interface","text":"<p>To manage roles, you must go into Settings from SeAT sidebar, then choose Access Management.</p> <p>Info</p> <p>To be able to manage SeAT roles, you must be authenticated as an administrator user. Administrators can be managed in the users list, located in Settings.</p>"},{"location":"admin_guides/authorizations/#role-card","title":"Role card","text":"<p>The Role card is compounds of two main area.</p> <p></p> <p>Left pane contains basic information. It allows you to provide a name, a description and upload an optional logo. Those information can be sync with any third party platform using the API.</p> <p>Tip</p> <p>Provided logo are stored into database - so you don't need to worry when moving your installation.</p> <p>Right pane contains role settings. The pane is split in two tabs - first tab is showing the role permissions definitions. Second pane, the members one, gives you the current role members and related management actions.</p>"},{"location":"admin_guides/authorizations/#role-definition","title":"Role definition","text":""},{"location":"admin_guides/authorizations/#role-permissions","title":"Role permissions","text":"<p>The role permissions tab is built using a navigation bar, which is showing all available scopes - and the list of permissions from active scope. Use the scope navigation to show permissions related to each scope.</p> <p>Each permission block is structured as follow:</p> <ul> <li>a checkbox: if you check it, you mark the permission to be granted by the role</li> <li>an optional icon: it is visual only and help to pair some permission inside a same scope. It might be useful for large scope like character or corporation to distinguish permission kind. Options include <code>military</code>, <code>financial</code> and <code>industrial</code>.</li> <li>a user friendly name</li> <li>an optional description: this is mostly a text explaining the permission purpose</li> <li>an optional limits button: it will help you to filter/restrict the permission to only a certain population. Only character and corporation scope permissions can be filtered.</li> </ul> <p>Warning</p> <p>In SeAT 3, leaving the affiliations of a role empty, meant that the role would apply to no relevant entities. It had no effect. This has changed in SeAT 4. If you give a role a permission with no filter, this permission will apply globally to all entities. For example giving the Corporation Sheet permission to a role with no filter means that the members of the role will be able to see the corporation sheets of every corporation on the server.</p>"},{"location":"admin_guides/authorizations/#role-members","title":"Role members","text":"<p>The role members tab is a table listing all users who are currently assigned the role. All of them receive the benefits of the permissions which have been defined in the permissions tab from that same role. You will be able to add or remove any user to or from the role using action buttons.</p> <p>To remove an user from the role to which is part, simply click on the \"Remove\" button located on the member line.</p> <p>To add one or multiple user to the role, use the green \"Add\" button located at bottom right corner. This will show you a dialog box. Use the drop-down control to find users which you want to add. Once all users to be add have been chosen, click on the \"Close\" button located at bottom right corner from that modal. Selected users will be shown with a warning background to highlight their addition to the role. This means their selection isn't saved yet - you have to apply change using the green \"Submit\" button located under the General pane.</p>"},{"location":"admin_guides/buckets/","title":"Buckets","text":""},{"location":"admin_guides/buckets/#buckets-and-continuous-update","title":"Buckets and continuous update","text":"<p>Starting with eveseat/console@4.7.0 and eveseat/eveapi@4.8.0, a new system has been designed to ensure continuous updates and reduce load on both SeAT stack and ESI.</p>"},{"location":"admin_guides/buckets/#general","title":"General","text":"<p>Each instance is allowed to get up to 30 buckets. Every bucket will handle a batch of tokens, and their related characters and corporations data update. Size of bucket is dynamically set based on the following criteria :</p> <ul> <li>a token can be updated only once every 3600 seconds</li> <li>a token can be updated in an average of 120 seconds</li> </ul> <p>Info</p> <p>Most data ESI endpoint and data they deliver are restricted to a 1-hour cache long. However, certain are shorter and benefit of dedicated command to allow you update more frequently - please, do not abuse of them.</p> <ul> <li><code>esi:update:contracts</code></li> <li><code>esi:update:killmails</code></li> <li><code>esi:update:affiliations</code></li> <li><code>esi:update:notifications</code></li> </ul>"},{"location":"admin_guides/buckets/#health","title":"Health","text":"<p>You can determine a bucket status using <code>seat:buckets:list</code> and <code>seat:buckets:info ID</code> commands. The first one will show you all existing buckets in the system together with the amount of token they're managing and their status. The second will show you details about a specific bucket including characters they have the charge of.</p> <p>A bucket can have one of the following status :</p> <ul> <li>available : there are free slots according to current threshold</li> <li>balanced : maximum tokens has been reached according to the current threshold, and the bucket cannot handle more token</li> <li>overload : there are too many tokens handled by this bucket according to the current threshold</li> </ul>"},{"location":"admin_guides/buckets/#balancing","title":"Balancing","text":"<p>Bucket balancing is run every time a token is created or removed from the system. As a result, you may find bucket with a certain amount of token at one time and a completely different one at another.</p> <p>If you find yourself with unbalanced buckets, you can force them to be balanced using <code>seat:buckets:balance</code>. However, depending on instance state, certain buckets will not be able to be more balanced for a time (ie: lack of tokens).</p>"},{"location":"admin_guides/buckets/#update","title":"Update","text":"<p>This system has been designed to ensure there is a bucket to update every two minutes (except for instances with less than 30 tokens). You can force bucket to be processed and bypass the scheduler using <code>seat:buckets:update</code> - however, keep in mind that tokens handled by updating bucket will be frozen for the next 60 minutes.</p> <p>Hint</p> <p>Manual command to force update character and corporation are still available. They require the ID of a tied character.</p> <ul> <li><code>esi:update:characters character_id</code></li> <li><code>esi:update:corporations character_id</code></li> </ul>"},{"location":"admin_guides/docker_admin/","title":"Docker Admin","text":""},{"location":"admin_guides/docker_admin/#docker-administration","title":"Docker Administration","text":"<p>Occasionally you will need to perform administrative tasks in your SeAT instance running within docker. Be it because you would like to configure TLS for the web interface, change the port of the SeAT webserver or simply generate an admin login URL, this guide aims to help you get familiar for the commands needed for this.</p> <p>Many of the commands are exactly the same as those used in a bare metal installation, except for the fact that they are always prefixed with <code>docker compose</code> and run from the same directory that you have the seat <code>docker-compose.yml</code> file stored. If your <code>docker-compose.yml</code> lives in <code>/opt/seat-docker</code>, you will need to <code>cd</code> to that directory first and then execute the <code>docker compose</code> commands.</p> <p>Info</p> <p>With SeAT 5, we migrated from the <code>docker-compose</code> command to <code>docker compose</code>. Besides the name, they are fully compatible. If you are still on SeAT 4, you have to use <code>docker-compose</code> instead of <code>docker compose</code> for all actions. This applies to all actions, not just the ones listed on this page.</p>"},{"location":"admin_guides/docker_admin/#container-status","title":"Container Status","text":"<p>For a quick, birds-eye view on the status of the containers within the SeAT docker stack, the following command may be run:</p> SeAT 4.xSeAT 5.x <pre><code>docker-compose ps\n</code></pre> <pre><code>docker compose ps\n</code></pre> <p>This should give you the name, entry point, current status and internal ports used within the docker network as output.</p>"},{"location":"admin_guides/docker_admin/#configuration-changes","title":"Configuration Changes","text":"<p>A dockerized installation of SeAT is primarily configured via a configuration file located at <code>.env</code>. Configuration options such as your applications SSO secrets, SeAT's web server ports are amongst the many configuration options available in this file.</p> <p>Making changes to this file requires the docker stack to be restarted so that the configuration may be applies. An example case would be when you configure SSO for your instance.</p> <p>Once you have made a configuration change, save the <code>.env</code> file and restart the stack by simply running the following command from the path where the <code>docker-compose.yml</code> lives:</p> Docker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using reverse proxy) <pre><code>docker-compose up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre>"},{"location":"admin_guides/docker_admin/#live-container-logs","title":"Live Container Logs","text":"<p>Getting an idea of what is happening inside of the containers may be useful for many things, including debugging any issues that may occur. All of the containers generate logs that can be viewed either in isolation, or all of the containers in the stack.</p> Docker (SeAT 4.x)Docker (SeAT 5.x) <p>To view a single services' logs (<code>seat-web</code> in this examples case), run:</p> <pre><code>docker-compose logs --tail 10 -f seat-web\n</code></pre> <p>All services can referenced by their name using <code>docker compose</code>. You can see the service names here. At the time of writing this doc, the available services were: <code>mariadb</code>, <code>redis</code>, <code>traefik</code>, <code>seat-web</code>, <code>seat-worker</code> and <code>seat-cron</code>.</p> <p>To view a single services' logs (<code>front</code> in this examples case), run:</p> <pre><code>docker compose logs --tail 10 -f front\n</code></pre> <p>All services can referenced by their name using <code>docker compose</code>. You can see the service names here and in the adjacent <code>docker-compose.x.yml</code> files. At the time of writing this doc, the available services were: <code>mariadb</code>, <code>cache</code>, <code>traefik</code>, <code>front</code>, <code>worker</code> and <code>scheduler</code>.</p> <p>To view all service logs at once, run:</p> Docker (SeAT 4.x)Docker (SeAT 5.x) <pre><code>docker-compose logs --tail 10 -f\n</code></pre> <pre><code>docker compose logs --tail 10 -f\n</code></pre> <p>Once you are done viewing the output, simply pressing ^C will exit the log viewer.</p>"},{"location":"admin_guides/docker_admin/#application-logs","title":"Application Logs","text":"<p>While most processes will output information to stdout (which is what you will see when you run <code>docker-compose logs</code>), there are some app specific logs also generated.</p>"},{"location":"admin_guides/docker_admin/#logs-web-ui","title":"Logs - Web UI","text":"Docker (SeAT 4.x)Docker (SeAT 5.x) <p>If you are getting HTTP 500's, or other exception when using the web interface, the best place to find the relevant logs will be in the <code>seat-web</code> service, in the <code>/var/www/seat/storage/logs</code> directory. To reach them, run <code>docker-compose exec seat-web bash</code>. This will drop you into bash shell in the container:</p> <pre><code>$ docker-compose exec seat-web bash\nroot@9aff5b002ca0:/var/www/seat#\n</code></pre> <p>If you are getting HTTP 500's, or other exception when using the web interface, the best place to find the relevant logs will be in the <code>front</code> service, in the <code>/var/www/seat/storage/logs</code> directory. To reach them, run <code>docker-compose exec front bash</code>. This will drop you into bash shell in the container:</p> <pre><code>$ docker-compose exec front bash\nroot@9aff5b002ca0:/var/www/seat#\n</code></pre> <p>Next, cd to the logs directory with:</p> <pre><code>cd storage/logs/\n</code></pre> <p>This directory should have daily log files for you to view.</p>"},{"location":"admin_guides/docker_admin/#logs-worker-updaters","title":"Logs - Worker / Updaters","text":"Docker (SeAT 4.x)Docker (SeAT 5.x) <p>If you think your workers may be causing some exceptions, or you want to investigate why they may be failing, you can do so in the <code>seat-worker</code> service. Just like for the web UI, get a bash shell and cd to the logs directory.</p> <pre><code># docker-compose exec seat-worker bash\nroot@8ed8967348f1:/var/www/seat# cd storage/logs/\nroot@8ed8967348f1:/var/www/seat/storage/logs# ls\neseye-2020-08-23.log\n</code></pre> <p>If you think your workers may be causing some exceptions, or you want to investigate why they may be failing, you can do so in the <code>worker</code> service. Just like for the web UI, get a bash shell and cd to the logs directory.</p> <pre><code># docker compose exec worker bash\nroot@8ed8967348f1:/var/www/seat# cd storage/logs/\nroot@8ed8967348f1:/var/www/seat/storage/logs# ls\neseye-2020-08-23.log\n</code></pre> <p>The eseye log as well as Laravel log should help you debug what is going on.</p>"},{"location":"admin_guides/docker_admin/#installing-plugins","title":"Installing Plugins","text":"<p>SeAT provides the ability for third party developers to integrate with the core environment to extend its features and functionality. It is possible to install those plugins in a docker environment. Installing a plugin is relatively easy too. All you need to do is add the plugin name to your <code>SEAT_PLUGINS</code> variable in the <code>.env</code> file and run <code>docker-compose up -d</code> again. The plugin will be read from the <code>.env</code> file and installed as the application container starts.</p> <p>For example. Open the <code>.env</code> file (which is most probably at <code>/opt/seat-docker/.env</code>) and edit the <code>SEAT_PLUGINS</code> variable to include the package you want to install. In our example we use the pseudo package called user/seat-plugin:</p> <pre><code># SeAT Plugins\n# This is a list of the all of the third party plugins that you\n# would like to install as part of SeAT. Package names should be\n# comma separated if multiple packages should be installed.\nSEAT_PLUGINS=user/seat-plugin\n</code></pre> <p>Save your <code>.env</code> file and run <code>docker-compose up -d</code> to restart the stack with the new plugins as part of it. Depending on how big the plugin itself may be, this could take a few moments to complete.</p> <p>You can monitor the installation process by running:</p> Docker (SeAT 4.x)Docker (SeAT 5.x) <pre><code>docker-compose logs --tail 10 -f\n</code></pre> <pre><code>docker compose logs --tail 10 -f\n</code></pre>"},{"location":"admin_guides/docker_admin/#database-backups-and-restore","title":"Database Backups and Restore","text":"<p>Backups. They are important and really simple to do. To perform a backup of the current database used within the docker stack, compressing and saving it to a file called <code>seat_backup.sql.gz</code>, run:</p> Docker (SeAT 4.x)Docker (SeAT 5.x) <pre><code>docker-compose exec mariadb sh -c 'exec mysqldump \"$MYSQL_DATABASE\" -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\"' | gzip > seat_backup.sql.gz\n</code></pre> <pre><code>docker compose exec mariadb sh -c 'exec mysqldump \"$MYSQL_DATABASE\" -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\"' | gzip > seat_backup.sql.gz\n</code></pre> <p>To restore a backup to a new dockerized instance of SeAT, run:</p> Docker (SeAT 4.x)Docker (SeAT 5.x) <pre><code>zcat seat_backup.sql.gz | docker-compose exec -T mariadb sh -c 'exec mysql \"$MYSQL_DATABASE\" -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\"'\n</code></pre> <pre><code>zcat seat_backup.sql.gz | docker compose exec -T mariadb sh -c 'exec mysql \"$MYSQL_DATABASE\" -u\"$MYSQL_USER\" -p\"$MYSQL_PASSWORD\"'\n</code></pre>"},{"location":"admin_guides/scaled_deployments/","title":"Scaled Deployments","text":"<p>DEPRECATED!!!</p> <p>This guide is deprecated and is not functional in SeAT v3. If you need more performance in SeAT v3 then you have two options, move the DB alone to another server, and/or beef up the server SeAT is running on. This guide may be updated in the future when horizontal scaling is viable again. It is left as is for now due to academic and nostalgic reasons.</p>"},{"location":"admin_guides/scaled_deployments/#scaled-seat-deployments","title":"Scaled SeAT Deployments","text":"<p>At some stage, you may come to a point where a single install of SeAT might not be enough to process api key updates. Thankfully, it is actually very easy to scale SeAT horizontally in order to improve performance. This document aims to share some need to knows before embarking on a tiered installation of SeAT.</p>"},{"location":"admin_guides/scaled_deployments/#definitions","title":"Definitions","text":"<p>Lets get some definitions cleared up.</p>"},{"location":"admin_guides/scaled_deployments/#server","title":"Server","text":"<p>A server is defined as any VPS, hardware, docker container, or other form of virtualization. When talking performance though, keep in mind that there will probably be very little performance gains when everything runs on the same physical hardware instance.</p>"},{"location":"admin_guides/scaled_deployments/#seat-component","title":"SeAT component","text":"<p>A SeAT Component is a collection of SeAT packages and configurations that is responsible for performing a specific task. Tasks include the SeAT Web Interface, the job workers or dispatchers.</p>"},{"location":"admin_guides/scaled_deployments/#components","title":"Components","text":"<p>Before we can talk scale, we need to understand which components SeAT actually consists of. We will not talk about the immutable resources here as they will be mentioned in the next section.</p> <p>So, which components are there to SeAT?</p> <ul> <li>The web front end.</li> <li>The queue workers.</li> <li>The job dispatcher.</li> </ul> <p>Each of these components can live on their own server and must share the same immutable resources.</p>"},{"location":"admin_guides/scaled_deployments/#immutable-resources","title":"Immutable resources","text":"<p>While almost every component in SeAT can 'run on its own', there are some services that SeAT consumes that SeAT can not scale itself. Instead, SeAT can consume a clustered or load balanced instance of these services. There are various reasons for this where the most important is that state is maintained between queue workers using Redis and MariaDB.</p> <p>Services that should be shared between all SeAT components are:</p> <ul> <li>The Redis cache.</li> <li>The MariaDB database.</li> </ul> <p>When mentioning these components, they can definitely exist in their clustered/load balanced forms. For Redis, have a look at their Redis cluster tutorial and for MariaDB, you can have a look at their MariaDB cluster installation.</p>"},{"location":"admin_guides/scaled_deployments/#simple-scaled-setup","title":"Simple scaled setup","text":"<p>The following example setup is probably the most simple option to gain performance improvements by scaling out. The gist of it is that we simply add more queue worker components to the SeAT setup.</p> <p>Lets start by taking a look at a diagram, showing the extra queue worker component added.</p> <p></p> <p>Installing a new server with only the queue worker component setup can bring a significant speed boost into the environment. A new queue worker could be configured to run an extra 4-6 jobs. This queue worker must be configured to make use of the immutable resources.</p>"},{"location":"admin_guides/scaled_deployments/#more-complicated-scaled-setup","title":"More complicated scaled setup","text":"<p>Of course, one can totally go full nelson and explode all of the components in use. Below is an example deployment (with data flow links, red for redis, blue for MariaDB) that shows how each SeAT component can live on its own server.</p> <p></p>"},{"location":"admin_guides/scaled_deployments/#component-setups","title":"Component setups","text":"<p>Lets talk about component configurations quickly. Apart from the immutable resources, all of the software needed can be sourced from SeAT packages. All of the standard requirements such as PHP7.1 and Supervisor 3 also apply. However, not all components would need a web server for example.</p> <p>Below are the descriptions (and short requirements list) for the different SeAT components.</p>"},{"location":"admin_guides/scaled_deployments/#web-front-end","title":"Web front end","text":"<p>To setup a web front end component, use the following steps:</p> <ul> <li>Ensure you have at least PHP7.1 installed.</li> <li>Ensure that you have a web server installed that can serve the <code>public/</code> directory from the SeAT project.</li> <li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> <li>Download SeAT somewhere like <code>/var/www/seat</code> using <code>composer create-project eveseat/seat /var/www/seat --no-dev</code>.</li> <li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your immutable sources.</li> </ul>"},{"location":"admin_guides/scaled_deployments/#queue-worker","title":"Queue worker","text":"<p>To setup a queue worker component, use the following steps:</p> <ul> <li>Ensure you have at least PHP7.1 installed.</li> <li>Ensure that you have supervisor3 installed.</li> <li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> <li>Download SeAT somewhere using <code>composer create-project eveseat/seat --no-dev</code>.</li> <li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your immutable sources.</li> <li>Configure the workers in a <code>seat.ini</code> file for supervisor to start.</li> </ul>"},{"location":"admin_guides/scaled_deployments/#job-dispatcher","title":"Job dispatcher","text":"<p>To setup a job dispatcher component, use the following steps:</p> <ul> <li>Ensure you have at least PHP7.1 installed.</li> <li>Ensure that you have <code>composer</code> installed and available in <code>PATH</code>.</li> <li>Download SeAT somewhere like <code>/var/www/seat</code> using <code>composer create-project eveseat/seat /var/www/seat --no-dev</code>.</li> <li>Once installed, configure the <code>.env</code> files database and Redis settings to connect to your immutable sources.</li> <li>Setup the cronjob to run <code>php artisan schedule:run 1>> /dev/null 2>&1</code> every minute.</li> </ul>"},{"location":"admin_guides/squads/","title":"Squads","text":""},{"location":"admin_guides/squads/#squads","title":"Squads","text":""},{"location":"admin_guides/squads/#introduction","title":"Introduction","text":"<p>Since SeAT 4.0, there is a way to apply automatic logic between an end user and its roles. The purpose is to keep distinct the security and automations.</p> <p>Squads is the core implementation of the deprecated seat-groups plugin.</p>"},{"location":"admin_guides/squads/#squads-types","title":"Squads Types","text":"<p>There are multiple kinds of squad. The way they work and the automations they apply depend on their type.</p>"},{"location":"admin_guides/squads/#automatic","title":"Automatic","text":"<p>This is the simplest squad type. Membership of a squad of this type is controlled by the filters (see below) set for the squad.</p> <p>A member of an automatic squad cannot remove themselves from the group. If a user no longer fulfils the criteria of the filter set for the squad they will be automatically removed from it.</p>"},{"location":"admin_guides/squads/#manual","title":"Manual","text":"<p>Manual squads have to be applied to, the processing of the application depends on whether there is a moderator for the group or not.</p> <p>If there is no moderator the application will be automatically accepted.</p> <p>If there is at least one moderator they can accept or reject applications.</p> <p>Filters applied to a squad of this type will have two effects: - hide the \"Apply\" button if the filter criteria are not met - kick the member from the group if the filter criteria are not met</p>"},{"location":"admin_guides/squads/#hidden","title":"Hidden","text":"<p>Hidden squads are visible exclusively to their members and admins. To be part of a hidden squad, the user needs to be added to it by an admin.</p> <p>This mean, only admin user can invite another user to a hidden squad.</p>"},{"location":"admin_guides/squads/#squads-filters","title":"Squads Filters","text":"<p>Filters have different behaviors depending on the Squad Type. In case the Squad is of auto type, filters will be applied continuously to invite and kick members from the Squad - based on user changes.</p> <p>Otherwise, filters are used to automatically kick members from a Squad and determine the availability of the \"Apply\" button on Squad Card.</p> <p>Squads Filters have been designed to assist you to build rules which will determine whether a given user is eligible for a Squad. You pair different conditions together and link them with match keywords.</p> <p>Match keywords can be either <code>All</code> or <code>Any</code>. <code>All</code> mean all conditions must be met by the user for them to be eligible. <code>Any</code> means that a user is eligible if they meet any of the conditions.</p> <p>To add a condition, use <code>Add Rule</code> button located at the end of the modal. In case you have to build a complex rule, use <code>Add Group</code> which will allow you to pair multiple conditions in a single rule.</p> <p>Info</p> <p>Filters come with multiple operators. Not all operators work with all filters. <code>Is</code> and <code>Is not</code> are used to indicate either equality with criteria or inequality. Those operators are the most common and work with nearly all filter types. <code>Contains</code> is used to indicate that criteria must be included in a domain. This operator currently only works with the <code>Scopes</code> filter.</p> <p></p> <p>Example</p> <p>In the example above, we want only users who own at least one character (inside either Get Off My Lawn OR Toilet Paper. alliances) AND with skill Capital Ships to be eligible for membership in our Squad.</p>"},{"location":"admin_guides/squads/#squad-applications","title":"Squad Applications","text":"<p>Applications are only available to manual squads.</p> <p>For a user to be able to apply to a manual squad they need to meed the squads filter criteria. Otherwise, application button will not be available.</p> <p>If the user applies to a moderated squad, they are required to fill an application form. This will leave you the ability to build workflow internally and allow moderators to check any incoming members. Users can also cancel squad applications at any time using the Cancel button which will replace the Join button.</p>"},{"location":"admin_guides/squads/#squad-moderators","title":"Squad Moderators","text":"<p>Moderators of a Squad don't need to be part of that squad. They will be able to see a list of every member of each squad they moderate, allowing them to invite further members or kick existing ones.</p> <p>Squad moderators can also see Squad candidates, the time when they applied and each application form. From there, they can approve an application or reject it.</p> <p>When an application is approved, the user who sent it is becomes a member of the Squad. If an application is denied, the application is removed and user can submit a new application.</p> <p>Only administrator users can add or remove moderators to/from a Squad.</p>"},{"location":"admin_guides/squads/#interface","title":"Interface","text":""},{"location":"admin_guides/squads/#squads-list","title":"Squads List","text":"<p>Squads list is the entry point of squads. You can create a new squad, search for a squad, show available squads and get squad status from there. The Squads list is available to all users, without any restriction. You can access it using <code>Squads</code> from the left sidebar.</p> <p></p> <p>The list is split in three main areas. First area, at top, contains controls which will allow you to create a squad, or filter the shown squads. The main area, contains squads tiles from the active page. You can get up to six squads per page. Footer area is the pagination controls - allowing you to switch displayed page (first, previous, current, next and last).</p> <p></p> <p>Every Squad Tile is built following the same pattern :</p> <p>1) Logo 2) Name and description 3) User status related to that squad 4) Metadata 5) Type</p> <p></p> <p>Except metadata, other attributes are self-explained. Metadata is a list of counters showing you, from left to right:</p> <ul> <li>number of members of the squad (in white)</li> <li>number of moderators of the squad (in orange)</li> <li>number of applicants to the squad (in blue)</li> </ul> <p>Hint</p> <p>Squad Logo is a visual way for your end user to identify quickly a Squad. By default, logo are generated based on the Squad Name - but you can customise it in the Squad settings.</p>"},{"location":"admin_guides/squads/#squads-card","title":"Squads Card","text":"<p>When you click on a Squad Tile, you'll land on the related Squad Card. Squad Card is the landing area of a Squad. You will retrieve summarised information you had on the tile in the general pane.</p> <p>In case the Squad is manual, you will get access to the list of Squad moderators. This list is public, this mean everyone can see it, without consideration if he's or not a member of that Squad.</p> <p></p> <p>Under the general pane, you'll get access to the list of roles assigned by the Squad. This list is disclosed to admin user only. This mean neither \"standard user\" or moderators will get access to it.</p> <p>From that pane, you are able to remove a role from the squad or add other ones to it.</p> <p></p> <p>Members pane is visible to all moderators and squad members. Moderators can invite or kick user from the squad using actions buttons.</p> <p></p> <p>Info</p> <p>When an user is kicked or invited from/to a Squad, the event is shown into security logs. You will be able to see who kick or invite any user from/to any Squad.</p> <p>Last but not least, there is an extra Candidates pane which is available on Manual Moderated Squad. Squad applications can be managed from this area.</p> <p></p>"},{"location":"admin_guides/squads/#squads-settings","title":"Squads Settings","text":"<p>When you create a new Squad, you have to fill a small form which will define it. Mandatory elements are :</p> <ul> <li>The name of created squad which have to be unique</li> <li>Squad Type (between Auto, Hidden and Manual - see Squads Types)</li> <li>A description, which will be displayed on both Squad Card and Squad Tile</li> </ul> <p>You also can upload a shiny logo which will be used instead the generated icon and provide filters for squad eligibility.</p> <p></p> <p>Caution</p> <p>As soon as you save your Squad, filters are applied. In case the Squad is of auto type, eligible members will be added to it. For any other Squad Types, non-eligible members will be kicked from the Squad</p> <p>Hint</p> <p>Don't pay attention to your Squads Description. If it's too long, it will be shortened when displayed on the Squad Tile. However, the full description will always be available on the Squad Card into the general pane.</p>"},{"location":"admin_guides/understanding_tracking/","title":"Understanding Tracking","text":""},{"location":"admin_guides/understanding_tracking/#understanding-tracking","title":"Understanding Tracking","text":""},{"location":"admin_guides/understanding_tracking/#introduction","title":"Introduction","text":"<p>SeAT implements the Google Analytics Measurement Protocol. This document aims to explain in as much detail as possible how it has been implemented in SeAT, as well as what is tracked and what is not. This document aims to be as transparent as possible.</p>"},{"location":"admin_guides/understanding_tracking/#why","title":"Why","text":"<p>Well, the most obvious is it being nice to know how much SeAT is actually being used. One may argue that Github & packagist gives statistics on how many times the project has been installed / cloned, but that does not really reflect how many actual active installations there are.</p> <p>Knowing how many active installs there are, encourages development.</p> <p>Lastly, certain exception types are also sent as hits. This helps immensely with figuring out if a new version may have a serious bug.</p>"},{"location":"admin_guides/understanding_tracking/#how-its-implemented","title":"How its implemented","text":"<p>First of all, the Google Analytics Measurement Protocol is really just that. It just measures usage. In summary, when certain events happen, only a hit with what happened is sent. No other data is sent with the hit.</p> <p>For example. When the scheduler queues jobs, a hit is sent that says that this happened, and that it happened for x amount of keys. This can be seen in the following line of code: QueueKeys. It can also be seen that no other data goes along with the hit. For example, the <code>access_token</code> and <code>refresh_token</code> (which is what most will be worried about) does not go with the hit.</p> <p>Once a hit is getting ready to be sent, information such as which OS/Version as well as versions of installed SeAT packages gets sent along with the hit. This can be seen in the following lines of code.</p>"},{"location":"admin_guides/understanding_tracking/#how-are-you-protecting-my-privacy","title":"How are you protecting my privacy?","text":"<p>Very special care has been taken to ensure that no personally identifiable information goes along with the Measurement Protocol hits. In fact, its actually not allowed and serves no purpose for tracking. That being said, the following actions have been taken to ensure that privacy is key:</p> <ul> <li>Source IP addresses are anonymized (Ref: eveseat/services:Jobs/Analytics#L132)</li> <li>Only OS Name, Machine Type and Version is reported. Type <code>a</code> is specifically not sent as it will disclose the hostname of the server (Ref: eveseat/services:Jobs/Analytics#L151-L153)</li> <li>Identifying an installation is done by generating a completely random V4 UUID. It is simply not possible to identify anyone with just this string (Ref: eveseat/services:Jobs/Analytics#L84-L90)</li> <li>If you insist, tracking can be completely disabled in the SeAT web interface (Ref: eveseat/services:Jobs/Analytics#L213-L214 and eveseat/web:Http/Controllers/Configuration/SeatController#L66)</li> </ul>"},{"location":"admin_guides/understanding_tracking/#can-you-link-the-commits-where-this-was-added","title":"Can you link the commits where this was added?","text":"<p>Sure!</p> <ul> <li>b2765c6d</li> <li>f3f44dc6</li> <li>cfdf20c0</li> <li>ccd332de</li> <li>b4a80803</li> </ul>"},{"location":"admin_guides/understanding_tracking/#are-the-stats-a-secret","title":"Are the stats a secret?","text":"<p>Not at all. However, as a start I am going to limit access to people whom have actively contributed towards SeAT. If you would like access, please ping me on Slack.</p>"},{"location":"admin_guides/understanding_tracking/#how-do-i-disable-this-crap","title":"How do I disable this crap?","text":"<p>If you insist on disabling the usage tracking, you can do this (as a SeAT administrator) by browsing to Configuration -> SeAT Settings and setting Allow Tracking to No.</p> <p></p>"},{"location":"configuration/configuration_overload/","title":"Configuration Overload","text":"<p>This page aims to give a brief overview of how configuration is handled in SeAT and its packages. To give some perspective, we have to have a quick look at how packages are built and bootstrapped.</p>"},{"location":"configuration/configuration_overload/#quick-n-dirty-package-summary","title":"Quick-n-dirty-package summary","text":"<p>All of SeAT's core internals are built as packages. This means, every package has a service provider. All a service provider really is, is a class with 2 methods ie: <code>handle()</code> and <code>register()</code>. When a service provider is bootstrapped into the application, these 2 methods are called at some stage.</p> <p>It is in these methods that we tell the Laravel framework more about our package. Amongst many things that we can tell it, one of them is configuration related. All we really telling the application is where the configuration file is, and under which namespace does it live. Another important fact is that SeAT package configurations are added with the <code>mergeConfigFrom()</code> method. This means, you can override the defaults in your installation without worrying about breaking the package itself.</p>"},{"location":"configuration/configuration_overload/#overriding-configuration","title":"Overriding configuration","text":"<p>Lets take a look at a sample package configuration file: The eveseat/eveapi package for example. At the time of this writing, it has 5 configuration options. The first being a <code>version</code>, the last being <code>eseye_loglevel</code>. When this package is installed, this configuration file will live somewhere deep inside your <code>vendor</code> folder. Changing the value there is not impossible, but it will be lost with the next package upgrade. The better method will be to override the change locally, inside you <code>config/</code> folder here.</p>"},{"location":"configuration/configuration_overload/#an-example-changing-eseye_loglevel","title":"An example, changing <code>eseye_loglevel</code>","text":"<p>To start, create the file <code>eveapi.config.php</code> inside the <code>config</code> folder. Next, we add the contents in the file to return an array, specifying the <code>eseye_loglevel</code> key and its new value. The file would look something like this:</p> <pre><code><?php\n// File: config/eveapi.config.php\nreturn [\n'eseye_loglevel' => 'debug',\n];\n</code></pre> <p>That's it. The configuration should now have been overridden.</p>"},{"location":"configuration/env_file_reference/","title":"Env File Reference","text":""},{"location":"configuration/env_file_reference/#env-reference","title":"Env Reference","text":"<p>In both the case of a Docker installation as well as a host based installation (manual or via SeAT tool), SeAT has some configuration values that can be set via an <code>.env</code> file. Depending on your installation type, this file will be in either <code>/opt/seat-docker/.env</code> or in <code>/var/www/seat/.env</code></p>"},{"location":"configuration/env_file_reference/#configuration-value-reference","title":"Configuration Value Reference","text":"Parameter Name Default value Description APP_URL http://seat.local This is the public address where SeAT instance is reachable. That should match with the <code>EVE_CALLBACK_URL</code> without <code>/auth/eve/callback</code> suffix DB_HOST 127.0.0.1 This is the IP or domain from your SQL Server. DB_PORT 3306 This is the port used by your SQL Server to receive query. DB_DATABASE seat This is the name for your SeAT database. DB_USERNAME seat This is the user which is granted to the SeAT database from SeAT server. DB_PASSWORD secret This is the user password MAIL_DRIVER smtp This is the driver used to send mail. It will be covered in a dedicated article. MAIL_HOST smtp.mailtrap.io This is driver mail hostname. It will be covered in a dedicated article. MAIL_PORT 2525 This is the driver mail port. It will be covered in a dedicated article. MAIL_USERNAME null This is the driver mail username. It will be covered in a dedicated article. MAIL_PASSWORD null This is the driver mail password. It will be covered in a dedicated article. MAIL_ENCRYPTION null This is the driver mail encryption. It will be covered in a dedicated article. MAIL_FROM_ADDRESS noreply@localhost.local This is the mail address which the user will chown when he will receive mail from SeAT. MAIL_FROM_NAME SeAT Administrator This is the name which the user will chown when he will receive mail from SeAT. EVE_CLIENT_ID null This is the EVE Application Client ID you'll get when you created an application over https://developers.eveonline.com EVE_CLIENT_SECRET null This is the EVE Application Client Secret you'll get when you created an application over https://developers.eveonline.com EVE_CALLBACK_URL https://seat.local/auth/eve/callback This is the EVE Application Callback URL you filled when you created an application over https://developers.eveonline.com. You should have only to fix <code>seat.local</code> QUEUE_BALANCING_MODE false Determine the workers balancing mode used by the Jobs Manager. Value can be <code>false</code>, <code>auto</code> or <code>simple</code>. See official Laravel documentation for more details QUEUE_WORKERS 4 Determine the amount of worker which have to be spawn to process jobs over all queues. In <code>auto</code> and <code>simple</code> balancing, this value cannot be lower than <code>4</code> as it's correspond to the available queues."},{"location":"configuration/esi_configuration/","title":"ESI Configuration","text":""},{"location":"configuration/esi_configuration/#configuring-eve-online-esi-scopes","title":"Configuring Eve Online ESI-Scopes","text":""},{"location":"configuration/esi_configuration/#introduction","title":"Introduction","text":"<p>For normal operations within SeAT, authentication is provided by EVE Onlines' SSO service and API access with ESI and tokens supplied via SSO. Technical details behind the SSO implementation can be found here.</p> <p>Authenticating users using SSO effectively means that users may authenticate to SeAT using their existing EVE Online credentials. SeAT does not have access to the credentials itself as that is handled entirely by CCP. Only once authentication is successful from an EVE Online perspective does a user get asked if they want to allow your SeAT installation to have access with the configured set of scopes. Once the user agrees to these scopes, the users browser is redirect back to SeAT and will be logged in.</p> <p>If you have not configured this yet, the login page will present you with a warning about it:</p> <p></p>"},{"location":"configuration/esi_configuration/#configuration-summary","title":"Configuration Summary","text":"<p>A bit of setup work is needed in order to have your SeAT setup ready for SSO integration and ESI usage. The gist of it is:</p> <ul> <li>Step I: Register your application on the EVE Online Developers portal for both Authentication and API Access.</li> <li>Step II: Configure your <code>EVE_CLIENT_ID</code>, <code>EVE_CLIENT_SECRET</code> and <code>EVE_CALLBACK_URL</code> in the <code>.env</code> configuration file</li> </ul>"},{"location":"configuration/esi_configuration/#register-your-application","title":"Register your application","text":"<p>Browse to the EVE Online Developers portal and create a new Application.</p> <p></p> <p>Give your application a meaningful Name and a Description. Users will see this name when they review the access Third Party applications have to their account so keep that in mind when registering your application.</p> <p></p> <p>Next, set the connection type to Authentication & API Access (1), select the ESI Scopes you want (probably all of them) (2) and specify the Callback URL (3)</p> <p>To select ESI Scopes you can search for them in Available Scopes (2) and select the desired scope. The selected scope then will moved to (3).</p> <p></p> <p>Note on the Callback URL</p> <p>The Callback URL where the user should be redirected to once authentication was successful. In other words, once they have completed authentication using their EVE Online credentials, they need to be redirected back to your SeAT instance. In the example above, we can see it is <code>https://seat.local/auth/eve/callback</code>. You should replace the <code>seat.local</code> part with your domain!</p> <p>For example, assuming you are hosting SeAT at <code>https://this.is.seat/</code>, then the Callback URL will be <code>https://this.is.seat/auth/eve/callback</code>. If you have SeAT in a sub folder on your web server, remember to add the folder name before <code>/auth/eve/callback</code>.</p> <p>With the new application created, you will now have the <code>EVE_CLIENT_ID</code>, <code>EVE_CLIENT_SECRET</code> that you need to configure in SeAT itself. Take note of these values.</p> <p></p>"},{"location":"configuration/esi_configuration/#set-config-parameters-in-env-file","title":"Set config parameters in <code>.env</code> file","text":"<p>We are almost done. The next thing to do is to add the configuration parameters to our SeAT installs <code>.env</code> file. Browse to your SeAT installation directory and edit the <code>.env</code> file (note this is a hidden file and wont show up when you just type <code>ls</code>).</p> <p>Look for the following section of the file and populate the values with those you got when you created an application on the developers site:</p> <pre><code>EVE_CLIENT_ID=null\nEVE_CLIENT_SECRET=null\nEVE_CALLBACK_URL=http://seat.test/auth/eve/callback\n</code></pre>"},{"location":"configuration/esi_configuration/#notes-for-docker-users","title":"Notes for Docker Users","text":"<p>Your <code>.env</code> file is located in <code>/opt/seat-docker</code>. Rebuild your app after setting the ESI Details in it using:</p> Docker (SeAT 4.x)Docker (SeAT 5.x - using Traefik)Docker (SeAT 5.x - using proxy) <pre><code>docker-compose down\ndocker-compose up -d\n</code></pre> <pre><code>docker compose down\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker compose down\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre>"},{"location":"configuration/eve_administrative_contact/","title":"EVE Administrative Contact","text":""},{"location":"configuration/eve_administrative_contact/#eve-api-administrative-contact","title":"Eve API Administrative Contact","text":""},{"location":"configuration/eve_administrative_contact/#what","title":"What","text":"<p>Requests to the EVE API need to have an administrative contact email set before SeAT will queue jobs to process. CCP made the request in this Github issue. To address this, the email address is added to the User-Agent string that is used when making EVE API requests as can be seen eveseat/eveapi:Helpers/PhealSetup#L77.</p>"},{"location":"configuration/eve_administrative_contact/#why","title":"Why","text":"<p>The error <code>Failed to queue due to default config</code> is generated by eveseat/eveapi:Traits/JobManager#L47-L56 check. In order for this check to pass, you need to configure the administrative email address in the SeAT configuration.</p>"},{"location":"configuration/eve_administrative_contact/#how","title":"How","text":"<p>Adding the email address can be done in two ways. Wither via the command line or via the Web interface.</p>"},{"location":"configuration/eve_administrative_contact/#web-interface","title":"Web interface","text":"<p>The other method to change the admin email is via the web interface. You need to be logged in with a user that has the <code>superuser</code> role. Typically, if the email address is not set, you may notice the following warning on the home page:</p> <p></p> <p>To configure it, browse to Configuration -> SeAT Settings from the side menu, and set the email in the Administrator Email field.</p> <p></p>"},{"location":"configuration/eve_administrative_contact/#command-line","title":"Command line","text":"<p>The command <code>php artisan seat:admin:email</code> will prompt you to add a valid email address for the administrative contact:</p> <p>Example:</p> <p></p>"},{"location":"configuration/sde_overload/","title":"SDE Overload","text":"<p>SeAT sources information about the SDE from a json file hosted here. It may happen that the SDE gets updated but the the json resource has not yet been updated. For this reason, its possible to specify the version to get based on what is available on www.fuzzwork.co.uk.</p>"},{"location":"configuration/sde_overload/#overriding-the-resources-json","title":"Overriding the resources json","text":"<p>Check the version of SDE dumps available on www.fuzzwork.co.uk. At the time of this writing, <code>frostline-1.0-116241</code> was the latest. Once you have the version string ready, open the <code>.env</code> configuration file and add a key as follows:</p> <pre><code>SDE_VERSION=frostline-1.0-116241\n</code></pre> <p>When running the SDE updater, specify the <code>--local</code> parameter to source the version string from the configuration file:</p> <pre><code>php artisan eve:update:sde --local\n</code></pre> <p>Info</p> <p>By default, SeAT automatically updates the SDE every month. You may want to login as an administrator and remove the schedule to update it monthly if you have overridden the default.</p>"},{"location":"configuration/email_setup/gmail/","title":"GMail","text":""},{"location":"configuration/email_setup/gmail/#email-setup-using-gmail","title":"Email Setup - Using GMail","text":""},{"location":"configuration/email_setup/gmail/#introduction","title":"Introduction","text":"<p>SeAT requires email to be setup to allow for things like notifications to be sent. This guide will attempt to describe how to go about setting up your email using GMail as an SMTP.</p>"},{"location":"configuration/email_setup/gmail/#the-config","title":"The config","text":"<p>As with anything Laravel, the config for your email setup will live in your installs <code>.env</code> file. To use GMail as an SMTP service, set the <code>MAIL_DRIVER</code> option in your <code>.env</code> configuration file to <code>smtp</code>. Next, specify the SMTP details:</p> <pre><code>// File: .env\n\nMAIL_DRIVER=smtp\nMAIL_HOST=smtp.gmail.com\nMAIL_PORT=587\nMAIL_USERNAME=username@gmail.com\nMAIL_PASSWORD=gmailpassword\nMAIL_ENCRYPTION=tls\nMAIL_FROM_ADDRESS=username@gmail.com\n</code></pre> <p>Done! To test, you can add some mail notification using the <code>Integrations</code> and <code>Notification groups</code>.</p>"},{"location":"configuration/email_setup/mailgun/","title":"Mailgun","text":""},{"location":"configuration/email_setup/mailgun/#email-setup-using-mailgun","title":"Email Setup - Using Mailgun","text":""},{"location":"configuration/email_setup/mailgun/#introduction","title":"Introduction","text":"<p>SeAT requires email to be setup to allow for things like notifications to be sent. This guide will attempt to describe how to go about setting up your email using the Mailgun service. Though Mailgun is a commercial service, you get to send 10k emails for free per month. It also provides epic stats for you to track emails with etc.</p>"},{"location":"configuration/email_setup/mailgun/#the-config","title":"The config","text":"<p>As with anything Laravel, the config for mailgun will live in your installs <code>.env</code> file. To use the Mailgun driver, first set the <code>MAIL_DRIVER</code> option in your <code>.env</code> configuration file to <code>mailgun</code>. Next, we will add two options to specify details about our mailgun account.</p> <pre><code>// File: .env\n\nMAILGUN_DOMAIN=whateveritis\nMAILGUN_SECRET=anotherthing\n</code></pre> <p>To find out the values you need to populate, login to your mailgun account and browse to the domains section. Pick the applicable domain name. The screen you will see should looks something similar to this:</p> <p></p> <p>The big title (<code>sandbox1XXXXXXX</code> in my case) is the domain name, and the field titled <code>API Key</code> is the <code>MAILGUN_SECRET</code>.</p> <p>Done! To test, you can add some mail notification using the <code>Integrations</code> and <code>Notification groups</code>.</p>"},{"location":"developer_guides/core_package_breakdown/","title":"Core Package Breakdown","text":""},{"location":"developer_guides/core_package_breakdown/#developers-guides-core-package-breakdown","title":"Developers Guides - Core Package Breakdown","text":""},{"location":"developer_guides/core_package_breakdown/#understanding-the-core-seat-packages","title":"Understanding the core SeAT packages","text":"<p>This section aims to describe the functional differences between the various SeAT packages.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseatapi","title":"eveseat/api","text":"<p>Namespace: Seat\\Api</p> <p>Source Code: link</p> <p>This repository contains all the SeAT Api Endpoints, as well as the routes and views for API key management.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseateveapi","title":"eveseat/eveapi","text":"<p>Namespace: Seat\\Eveapi</p> <p>Source Code: link</p> <p>This repository is the heart of the API update logic. It is responsible for doing the actual update work, pulling the EVE API documents from ESI, parsing them and storing the resultant data in the database. Most of the data models live in this repository too.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseatnotifications","title":"eveseat/notifications","text":"<p>Namespace: Seat\\Notifications</p> <p>Source Code: link</p> <p>This repository contains a set of scheduled jobs that perform notifications type tasks. A notification can be something as simple as an alert about a corporation member that has been inactive for a period of time.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseatweb","title":"eveseat/web","text":"<p>Namespace: Seat\\Web</p> <p>Source Code: link</p> <p>This repository contains the web interface for SeAT. It contains by far the most complex service provider and will undoubtedly become the prime example/reference when developing packages for SeAT. This package is also the only one that has a permissions / ACL concept. Refer the to the permissions document for more information.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseatseat","title":"eveseat/seat","text":"<p>Namespace: App</p> <p>Source Code: link</p> <p>This is the main SeAT repository. It does not really contain much logic. In fact, it should just be seen as the glue between all the core packages. This is the repository that is cloned when a new installation is done.</p> <p>The most important part of this repository is the service providers that are bootstrapped with the application. The providers array has the default Laravel providers as well as the SeAT providers at the end. These providers tell the application where to find routes, views, configs etc. For more detailed information about providers, refer to the Laravel 5.5 documentation. When you write your package though, you should make use of package discovery as described in the Laravel 5.5 documenation. This will make the installation of your package super simple without the need to edit any files.</p>"},{"location":"developer_guides/core_package_breakdown/#eveseatservices","title":"eveseat/services","text":"<p>Namespace: Seat\\Services</p> <p>Source Code: link</p> <p>This repository contains 'services'. A service is defined as any form of helper and or repository that other packages can depend on. The eveseat/web package (amongst others) make heavy use of the repository classes in this package.</p>"},{"location":"developer_guides/developer_installation/","title":"Developer Installation","text":""},{"location":"developer_guides/developer_installation/#developer-installation","title":"Developer Installation","text":"<p>This document describes how to set up a development environment for both core package and third party package development. The easiest way to set up a development environment is to use docker. You can use the same image as in a production environment.</p> <p>For development, plugins and the seat core are treated the same. When working on the core, you install a core package like any other plugin. This is also how core packages are implemented: Internally they are also just a plugin, only that they are considered the core and that other plugins build on top of them.</p> <p>The SeAT docker image is built in a way to prefer development installations of packages over plugins from <code>.env</code> and the core. While the docker image always downloads and installs the core packages, when it finds a local development install of a core package, it uses that over the latest version from packagist.</p>"},{"location":"developer_guides/developer_installation/#setup-process","title":"Setup Process","text":"<p>First, start with standard installation to get a working environment.</p> <p>The official docker-compose wrapper is shipped with a <code>packages</code> directory. It is mounted readonly, and you can store your development sources in it.</p> <p>To make things easier, we recommend you keep vendor path convention to split your sources across every single package you want to play with.</p>"},{"location":"developer_guides/developer_installation/#overrider","title":"Overrider","text":"<p>In the next step, we need to let laravel, the php framework used by seat, know that our plugin is there.</p> <p>The image has been designed to look for a file called <code>override.json</code> inside <code>packages</code> directory. When it is found, it will be merged together with standard <code>composer.json</code> file from <code>eveseat/seat</code> package.</p> <p>It's designed to override both <code>autoload</code> and <code>providers</code>. Here is a complete <code>override.json</code> structure:</p> <pre><code>{\n\"autoload\": {\n\"namespace_to_load\\\\\": \"packages/sources_path\"\n},\n\"providers\": [\n\"FQCN\\\\Provider\"\n]\n}\n</code></pre> <p>An override can have either autoload, providers or even both property. Do not forget to escape <code>\\</code> in order to get a valid json file.</p> <p>When your container will start, mapping from <code>autoload</code> property in your <code>override.json</code> file will be merged with <code>autoload-dev</code> property from official <code>composer.json</code>.</p> <p>SeAT 4.x</p> <ol> <li>If you need access the console of any container, access it via <code>docker exec seat-web sh</code> where <code>seat-web</code> is the name of the target container.</li> <li>You can execute <code>artisan</code> commands from outside of docker with <code>docker exec seat-web php artisan <command></code></li> </ol> <p>SeAT 5.x</p> <ol> <li>If you need access the console of any container, access it via <code>docker exec front sh</code> where <code>front</code> is the name of the target container.</li> <li>You can execute <code>artisan</code> commands from outside of docker with <code>docker exec front php artisan <command></code></li> </ol> <p>Please note that there is currently no way to install dependencies with the package override. </p> <p>When installing already existing packages (e.g. a core package), you can find all required autoloads and service providers in it's <code>composer.json</code> file.</p>"},{"location":"developer_guides/developer_installation/#teach-things-by-example","title":"Teach things by example","text":"<p>As an example, let's say I want to make a new feature in web core package, I'll spawn an <code>eveseat</code> directory at root <code>packages</code> directory, followed by a clone from <code>eveseat/web</code> git repository. Last but not least, I'll create an <code>override.json</code> file to inform SeAT there are developer things to load.</p> <ol> <li>Create vendor directory into <code>packages</code> directory <code>mkdir packages/eveseat</code></li> <li>Cloning core web package into <code>packages/eveseat/web</code> directory <code>git clone https://github.com/eveseat/web.git packages/eveseat/web</code></li> <li>Create an <code>override.json</code> to use custom web sources</li> </ol> <pre><code>cat > packages/override.json << EOL\n{\n \"autoload\": {\n \"Seat\\\\Web\\\\\": \"packages/eveseat/web/src/\"\n }\n}\nEOL\n</code></pre> <p>Tips</p> <p>If you're working with Windows, prefer to store your files in wsl layer rather than Windows directory. Both work, however, you'll get better performances!</p>"},{"location":"developer_guides/development_tips/","title":"Development Tips","text":""},{"location":"developer_guides/development_tips/#development-tips","title":"Development Tips","text":"<p>This page contains general tips and tricks that may be useful during package development.</p>"},{"location":"developer_guides/development_tips/#best-practices","title":"Best practices","text":"<p>No doubt, there are no limits to what code you can write, how you structure it and how you name things. However, the last thing you want is to have conflicts with the SeAT core, or someone elses package! The following list contains some tips to help you avoid those conflicts and to help people better discover your packages:</p> <ul> <li>Prefix your github repository name with <code>seat</code> eg: <code>seat-teamspeak</code>.</li> <li>Tag your github repository with <code>seat</code>.</li> <li>Use a unique package namespace such as <code>Author\\Seat\\Package\\</code> eg: <code>Warlof\\Seat\\Teamspeak\\</code>.</li> <li>Prefix your database table names with something unique to your package. eg <code>warlof_teamspeak_users</code>. Although you shouldn't make your prefix too long, as there is a 64 character table length limit.</li> <li>Do not modify core tables. This will break future updates for users of your package.</li> <li>Prefix your settings with both an author and package eg: <code>warlof.teamspeak.address</code>.</li> <li>Prefix redis records with both author and package eg: <code>warlof.teamspeak.channels</code>.</li> <li>In your <code>composer.json</code> file, set the <code>type</code> to <code>seat-plugin</code>.</li> <li>Avoid altering core tables, especially introducing relationship - this might break core migrations. Prefer to use observer if you need to maintain your data across core models.</li> <li>If you need an API or something the SeAT core doesn't provide, consider contributing it. The SeAT core is not set in stone.</li> <li>Scope your routes: For example all routes from the seat core start with <code>seatcore</code>like this: <code>seatcore::my.route.to.someting</code>. You should follow a similar format: <code>seat<plugin name>::<route></code></li> <li>Use a schedule seeder for adding commands to the schedule. Compared to migrations, this has the advantage that accidentally deleted commands will be added back automatically on the next restart.</li> <li>For all your model, extend from <code>\\Seat\\Services\\Models\\ExtensibleModel</code> instead of the standard laravel <code>Model</code>. They are functionally equivalent, but <code>ExtensibleModel</code> allows injectable relations.</li> </ul>"},{"location":"developer_guides/development_tips/#model-observers","title":"Model Observers","text":"<p>Depending on what your package does, it may be interesting for you to know when data is created / deleted. Given that SeAT makes use of Laravel, you have the ability to subscribe to events that occur on any model within SeAT.</p> <p>For example, should a <code>User</code> model get deleted, the <code>deleted</code> event will get fired. Writing an observer class and subscribing to it with <code>\\Seat\\Web\\Models\\User::observer(\\My\\Namespace\\UserObserver::class)</code> will allow you to define a <code>deleted()</code> method inside of your observer class and perform extra logic with the <code>User</code> that got deleted.</p> <p>Examples of where this may be interesting could be if you need to have cleanup code for tables that your package includes.</p> <p>For more information, checkout the Laravel documentation on Eloquent Observers.</p>"},{"location":"developer_guides/development_tips/#useful-seat-specific-features","title":"Useful SeAT-Specific Features","text":""},{"location":"developer_guides/development_tips/#deferred-migrations","title":"Deferred Migrations","text":"<p>Sometimes you might want to run some business logic in a migration. For example, when adding a new column, you might want to fill that column with a computation that is part of your business logic. If you have all the logic inside your migration class, and you don't depend on any other application code, you are good. However, when your migration depends on application code, it is likely that you run into issues later down the line. Your business logic probably assumes that all your migrations have run. However, when calling business logic from migrations, this is not guaranteed. Later migrations have not yet run, meaning you are likely to run into issues.</p> <p>Seat offers a solution to this: Deferred Migrations. These are functions that can be scheduled in a migration and that run after all other migrations have finished. In your migration, you can schedule a deferred migration like this:</p> <pre><code>\\Seat\\Services\\Facades\\DeferredMigration::schedule(function (){\n // this closure runs after all migrations have finished. It is save to call business logic from here.\n});\n</code></pre>"},{"location":"developer_guides/development_tips/#injectable-relations","title":"Injectable Relations","text":"<p>Cross-package interaction is at the heart of SeAT. For example, plugins use the ESI data pulled by <code>eveapi</code>. However, there is one issue: While a plugin can always assume that <code>eveapi</code> is there, this is not possible the other way around. The seat core can run without any plugin. This implies that the plugin can have a relation pointing from a plugin model to a core model, but not the other way around.</p> <p>In SeAT, there is a system of injectable relations that helps with this. In short, to any model extending from <code>\\Seat\\Services\\Models\\ExtensibleModel</code>, you can attach relations similar to how you attach observers. </p> <p>First, you create a model extension class containing the relations you want to add to the base model. This extension class should extend from the base model.</p> <p>Second, you register the extension classes in your service provider's boot method like this: <pre><code>BaseModel::injectRelationsFrom(ModelExtension::class);\n</code></pre></p> <p>The relations defined in the model extension class should now be usable on the base model. </p> <p>Even though the model extension extends from the base class and behaves the same for the most part, you should always use the base class in your code, as otherwise observers aren't working properly.</p>"},{"location":"developer_guides/job_queue_flow/","title":"Job Queue Flow","text":""},{"location":"developer_guides/job_queue_flow/#job-queue-flow","title":"Job Queue Flow","text":"<p>When a job is queued, it's instance is serialized and push into the Redis database. Horizon, our jobs orchestrator is taking care of every new jobs falling in redis and push it to an available worker from the targeted queue.</p> <p>With SeAT 4, queues have been renamed and are scoped. This helps to identify load per \"topic\" and ensure better parallel processing of jobs.</p> <p>As shown bellow, queues <code>characters</code>, <code>corporations</code> and <code>public</code> are dedicated to ESI jobs.</p> <ul> <li>Characters queue is processing all jobs directly tied to a character entity (like info, assets, contracts, etc...)</li> <li>Corporations queue is processing all jobs directly tied to a corporation entity (like killmails, jobs, wallets, etc...)</li> <li>Public queue is processing all jobs related to universe (like stations, alliances, sovereignties, etc...)</li> </ul> <p>There is a dedicated queue to handle notifications tasks (like notifying a killmail on Discord). So, you will always get your notifications as fast as possible.</p> <p>The last two other queues (<code>high</code> and <code>default</code>) have a general purpose.</p> <ul> <li>The <code>high</code> queue is dedicated to jobs which have a critical level (like those related to security)</li> <li>The <code>default</code> queue is a bucket collecting all jobs without any other specified queue</li> </ul> <p>The default (and recommended) jobs handling configuration is using auto balancing. This ensures every single queue always have a minimum of workers (1 is the default value).</p> <p>Important</p> <p>There are no ranking in queues, so, the high one is not most important than other in the way jobs are processing. Queue name doesn't influe on their ability to process load. So, please use high queue for really important/critical tasks only.</p> <p></p> <p>An editable draw.io xml to import can be found here: seat_jobs_flow.drawio</p>"},{"location":"developer_guides/notifications_implementation/","title":"Notifications Implementation","text":""},{"location":"developer_guides/notifications_implementation/#developers-guides-notifications-implementation","title":"Developers Guides - Notifications Implementation","text":""},{"location":"developer_guides/notifications_implementation/#introduction","title":"Introduction","text":"<p>SeAT is shipped with a built-in notification system which is able to send message across the world to almost any platform.</p> <p>It is supporting e-mail, Slack and Discord out of the box.</p> <p>However, thanks to Laravel, if you need to support another platform - you simply need to implement the related driver. See official Laravel Notification Channels website to get more about this. </p> <p>Additionally, there is a system to mention certain users when a notification gets sent. Since we don't assume that many people need to implement this for a new platform, there is no written documentation. This is a good starting point to read the code: Config/notifications.mentions.php</p>"},{"location":"developer_guides/notifications_implementation/#configuration","title":"Configuration","text":"<p>All notifications must be declared inside <code>notifications.alerts.php</code>. You will want to create a file named like this in the <code>Config</code> directory of your plugin and then use <code>mergeConfigFrom</code> in your service provider to merge the seat core and plugin notification configuration. Every entry must follow this pattern:</p> <pre><code>'created_user' => [\n 'label' => 'notifications::alerts.created_user',\n 'handlers' => [\n 'mail' => \\Seat\\Notifications\\Notifications\\Seat\\Mail\\CreatedUser::class,\n 'slack' => \\Seat\\Notifications\\Notifications\\Seat\\Slack\\CreatedUser::class,\n ],\n]\n</code></pre> <ul> <li>the entry key <code>created_user</code> must be unique overall system and will identify the very specific notification declaration. It will reference the notification definition composed of <code>label</code> and <code>handlers</code> keys.</li> <li>the <code>label</code> will reference a translation token - this is the value which will appear on user interface into notification settings</li> <li>the <code>handlers</code> key is containers a list of available formatters. There is a formatter per available platform - or so called - channel.</li> <li>the optional <code>visible</code> key hides the notification from the list of available notifications, but you can still use the seat notification infrastructure normally. Realistically, you don't need this for anything.</li> </ul> <p>You can also look at the seat core notifications.alerts.php file as an example.</p>"},{"location":"developer_guides/notifications_implementation/#formatters","title":"Formatters","text":"<p>Formatters are class which will define how message targeting a specific channel must be structured. In upper example, we have two formatters:</p> <ul> <li>\\Seat\\Notifications\\Notifications\\Seat\\Mail\\CreatedUser which is handling mail channel format</li> <li>\\Seat\\Notifications\\Notifications\\Seat\\Slack\\CreatedUser which is handling Slack channel format</li> </ul> <p>Formatter must extend a different abstract class depending on what kind of platform it supports:</p> <ul> <li>Discord: <code>Seat\\Notifications\\Notifications\\AbstractDiscordNotification</code></li> <li>Slack: <code>Seat\\Notifications\\Notifications\\AbstractSlackDiscordNotification</code></li> <li>Mail: <code>Seat\\Notifications\\Notifications\\AbstractMailNotification</code></li> </ul> <p>Every formatter is composed of the following method:</p> <ul> <li><code>populateMessage(Message $message, mixed $notifiable)</code> which will generate the structure message for the target platform. The type of <code>Message</code> differs slightly according to which platform you're on, e.g. on discord it is a <code>Seat\\Notifications\\Services\\Discord\\Messages\\DiscordMessage</code>, on slack it is a <code>Illuminate\\Notifications\\Messages\\SlackMessage</code>.</li> </ul>"},{"location":"developer_guides/notifications_implementation/#observers","title":"Observers","text":"<p>In SeAT, notifications are event based and sent by jobs queued in <code>notifications</code> queue. This prevents to lock system while sending the information.</p> <p>To send your notification, you will listen for system events (ie: a character notification created in the database) in order to dispatch the selected notification.</p>"},{"location":"developer_guides/notifications_implementation/#characters","title":"Characters","text":"<p>All characters related notifications are handled by \\Seat\\Notifications\\Observers\\CharacterNotificationObserver</p> <p>It is waiting for an Eve Online notification targeting a character to be registered and dispatch the related message to the requested platform - if asked for.</p> <p>SeAT is shipped with numerous notifications - but due to the number of existing ones and the fact that there are regularly news notifications created by CCP attached to added features, it might append that a notification isn't handled.</p> <p>You can track such cases using <code>debug</code> log level which will generate a log entry looking like this:</p> <p>Unsupported notification type.\\ type: TheNotificationTypeAsPerESIDefinition (see: https://esi.evetech.net/ui/#/Character/get_characters_character_id_notifications)\\ sender_type: character\\ notification: the YAML structure of the notification</p> <p>You'll find all standard notifications handler related to character into the following namespace: \\Seat\\Notifications\\Notifications\\Characters</p>"},{"location":"developer_guides/notifications_implementation/#corporations","title":"Corporations","text":"<p>Most of the corporations related notifications are handled by \\Seat\\Notifications\\Observers\\CharacterNotificationObserver</p> <p>It is waiting for an Eve Online notification targeting a corporation to be registered and dispatch the related message to the requested platform - if asked for.</p> <p>SeAT is shipped with numerous notifications - but due to the number of existing ones and the fact that there are regularly news notifications created by CCP attached to added features, it might append that a notification isn't handled.</p> <p>You can track such cases using <code>debug</code> log level which will generated a log entry looking like this :</p> <p>Unsupported notification type.\\ type: TheNotificationTypeAsPerESIDefinition (see: https://esi.evetech.net/ui/#/Character/get_characters_character_id_notifications)\\ sender_type: corporation\\ notification: the YAML structure of the notification</p> <p>Alternatively, notifications related to corporation member state are handled by \\Seat\\Notifications\\Observers\\CorporationMemberTrackingObserver</p> <p>You'll find all standard notifications handler related to corporation into the following namespace: \\Seat\\Notifications\\Notifications\\Corporations</p>"},{"location":"developer_guides/notifications_implementation/#killmails","title":"Killmails","text":"<p>All killmails related notifications are handled by \\Seat\\Notifications\\Observers\\KillmailNotificationObserver</p> <p>It is waiting for a killmail being registered and dispatch the related message to the requested platform - if asked for.</p>"},{"location":"developer_guides/notifications_implementation/#squads","title":"Squads","text":"<p>All squads related notifications are handled by \\Seat\\Notifications\\Observers\\SquadApplicationObserver and \\Seat\\Notifications\\Observers\\SquadMemberObserver</p> <p>It is waiting for squads members and applications to be registered and dispatch the related message to the requested platform - if asked for.</p> <p>You'll find all standard notifications handler related to Squads into the following namespace: \\Seat\\Notifications\\Notifications\\Seat</p>"},{"location":"developer_guides/notifications_implementation/#users","title":"Users","text":"<p>All users related notifications are handled by \\Seat\\Notifications\\Observers\\UserObserver</p> <p>It is waiting for a user to be registered and dispatch the related message to the requested platform - if asked for.</p> <p>You'll find all standard notifications handler related to character into the following namespace: \\Seat\\Notifications\\Notifications\\Seat</p>"},{"location":"developer_guides/notifications_implementation/#porting-plugins-from-seat-4-to-5","title":"Porting Plugins from Seat 4 to 5","text":"<p>All notifications continue to work without any changes, even though there have been major refactors. However, to profit of the new mentions system behind discord pings, you need to change a few things to update to the new notification structure:</p> <ul> <li>Start extending from the platform specific classes instead of <code>Seat\\Notifications\\Notifications\\AbstractNotification</code>. </li> <li>Discord: extend <code>Seat\\Notifications\\Notifications\\AbstractDiscordNotification</code></li> <li>Slack: extend <code>Seat\\Notifications\\Notifications\\AbstractSlackNotification</code></li> <li>Mail: extend <code>Seat\\Notifications\\Notifications\\AbstractMailNotification</code></li> <li>Remove the via method. It moved to the abstract notification class.</li> <li>Refactor your public <code>toX()</code> method to a protected <code>populateMessage(MessageType $message, $notifiable)</code>. Instead of creating a new message, use the parameter <code>$message</code>. The type <code>MessageType</code> must be adjusted depending on your platform:</li> <li>discord: <code>Seat\\Notifications\\Services\\Discord\\Messages\\DiscordMessage</code></li> <li>slack: <code>Illuminate\\Notifications\\Messages\\SlackMessage</code></li> <li>mail: <code>Illuminate\\Notifications\\Messages\\MailMessage</code></li> <li>Consider using the <code>Seat\\Notifications\\Traits\\NotificationDispatchTool</code> trait to dispatch notification. It helps to deduplicate the most common logic.</li> </ul> <p>The old notification structure will stop working in seat 6.</p>"},{"location":"developer_guides/package_development/","title":"Package Development","text":""},{"location":"developer_guides/package_development/#developers-guides-package-development","title":"Developers Guides - Package Development","text":""},{"location":"developer_guides/package_development/#introduction","title":"Introduction","text":"<p>So, you want to write a SeAT package? Hopefully this guide helps you along the way! This guide was written while writing the API package for SeAT here. I figured it would be best to try and capture the process to help in case I miss any important details.</p> <p>Be sure to also have a look at the Development Tips page!</p>"},{"location":"developer_guides/package_development/#background-notes","title":"Background notes","text":"<p>I think its important to keep in mind a few things about how SeAT is put together. The most important being a brief description of what each core package offers, and how you can integrate with them. For a breakdown on what the core packages provide, please refer the to [breakdown].</p> <p>SeAT 4 is written on Laravel 6, while SeAT 5 uses Laravel 10. A very good thing to do would be to actually read the documentation top->bottom and get an idea of what is possible with the framework. SeAT core packages make heavy use of many of the features, based directly of what has been interpreted by this very documentation.</p> <p>If you really want to start contributing packages, but just cant get your head around this whole Laravel thing, then I can suggest you have a look at this excellent free course material covering the basics of what you will encounter in the SeAT codebase. https://laracasts.com/series/laravel-6-from-scratch</p> <p>Other plugins and the SeAT core are also a good learning resource.</p>"},{"location":"developer_guides/package_development/#getting-started","title":"Getting started","text":"<p>The very first thing to do is prepare the empty git repository on say Github, as well as the composer package itself. Clone a clean repository, and run <code>composer init</code>, answering any questions. Once that is done, edit the resultant <code>composer.json</code> and prepare the <code>autoload</code> block. SeAT core follows the PSR-4 autoloading standard. I will suggest you do the same. For some more detailed composer info, refer to the docs here. For the API package, I am going to autoload Seat\\Api from the <code>src</code> directory using PSR-4.</p>"},{"location":"developer_guides/package_development/#service-provider","title":"Service provider","text":"<p>As mentioned in the package breakdowns, the eveseat/seat repository bootstraps packages via service providers or package discovery. This is actually a Laravel convention that SeAT just follows. To get our package ready, we need to create a service provider. For the API package, I create an <code>ApiServiceProvider</code> class in <code>src/</code> directory which extends <code>Seat\\Services\\AbstractSeatPlugin</code>. Our packages file structure now looks as follows:</p> <pre><code>\u251c\u2500\u2500 composer.json\n\u2514\u2500\u2500 src\n \u2514\u2500\u2500 ApiServiceProvider.php\n</code></pre> <p>Hint</p> <p>The <code>AbstractSeatPlugin</code> class is extending Laravel <code>ServiceProvider</code> class and ship you with useful methods that help to register your plugin in the stack (including version discovery, permissions registration, etc...). You must use it rather than the standard one, especially if you want permissions and get your packages in Settings > SeAT Settings > SeAT Module Versions pane.</p>"},{"location":"developer_guides/package_development/#package-structure","title":"Package structure","text":"<p>From here you pretty much free to do what you want. How you structure the package will obviously depend on what exactly your package provides. In principle, I prefer to follow the same package structure as Laravel does for web / console features. Since we are going to be providing web features with the API, we will quickly create a few folders in preparation for this. I know beforehand that we are going to need a model to store API tokens; middleware to authenticate API requests; routes and controllers for the actual api logic (preferably making use of the eveapi/services repository classes for data access) as well as a few web views for administrators to generate API tokens for applications. With that in mind, the initial structure looks as follows:</p> <pre><code>\u251c\u2500\u2500 composer.json\n\u2514\u2500\u2500 src\n \u251c\u2500\u2500 ApiServiceProvider.php\n \u251c\u2500\u2500 Config\n \u251c\u2500\u2500 Http\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 Controllers\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 Middleware\n \u251c\u2500\u2500 Models\n \u251c\u2500\u2500 database\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 migrations\n \u2514\u2500\u2500 resources\n \u2514\u2500\u2500 views\n</code></pre> <p>This will obviously change as we progress building the package.</p>"},{"location":"developer_guides/package_development/#routes-and-controllers","title":"Routes and controllers","text":"<p>To start testing the API, we need to add a route and controller to process some requests and responses. My <code>routes.php</code> file will have a global <code>Route::group()</code> to encapsulate the routes in the Seat\\Api namespace as well as prefix them with <code>api/</code>.</p> <pre><code>// File: routes.php\nRoute::group([ 'namespace' => 'Seat\\Api\\Http\\Controllers',\n 'prefix' => 'api'\n], function () {\n // Logic here\n});\n</code></pre> <p>See the final product here for a more complete example.</p> <p>Next, I add some logic with a route to <code>/</code>, update the base frameworks <code>composer.json</code> to autoload the Seat\\Api namespace from the directory where my package lives, run <code>composer dump-autoload</code> and add the service provider to the eveseat/seat repositories <code>app.php</code> providers array. Lastly, I add a method to the service provider to load the routes and call it form the <code>boot()</code> method in the generated stub.</p> <p>See the complete service provider here</p> <pre><code>/**\n* Include the routes\n*/\npublic function add_routes()\n{\n if (!$this->app->routesAreCached()) {\n include __DIR__ . '/Http/routes.php';\n }\n}\n</code></pre> <p>As a final test, I check that my route is accessible from a booted SeAT app. :) </p>"},{"location":"developer_guides/package_development/#routes","title":"Routes","text":""},{"location":"developer_guides/package_development/#access-control","title":"Access Control","text":"<p>Obviously, some routes are not for everyone's eyes. SeAT comes with middleware that can be used to filter out requests that may not be authorized for your route. As can be seen in the example below (from here), we are filtering out requests to <code>api-admin</code> for only superusers.</p> <pre><code>Route::group([\n 'namespace' => 'Admin',\n 'middleware' => ['auth', 'can:global.superuser'], // The ACL specification.\n 'prefix' => 'api-admin'\n ], function () {\n Route::get('/', [\n 'as' => 'seatcore::api-admin.list',\n 'uses' => 'ApiAdminController@listTokens']);\n });\n</code></pre> <p>I suggest you have a look at the <code>eveseat/web</code> packages routes definitions for more examples on how the middleware is used. https://github.com/eveseat/web/tree/master/src/Http/Routes</p> <p>It is recommended that you scope the route name defined in <code>'as' => 'seatcore::api-admin.list'</code>. For example all routes from the seat core start with <code>seatcore</code> like this: <code>seatcore::my.route.to.someting</code>. You should follow a similar format: <code>seat<plugin name>::<route></code></p>"},{"location":"developer_guides/package_development/#middleware","title":"Middleware","text":"<p>To auth our API requests, we are going to go with token based authentication for now. We want users to present us with a <code>X-Token</code> header (from a valid allowed src IP address) before they may proceed with their request. To do this, we will filter requests using middleware. Thankfully, again, Laravel comes with a command to stub us some empty middleware. Run <code>php artisan make:middleware ApiToken</code> and copy it to your projects <code>Middleware</code> folder. Next we should register the middleware in our service provider. I do this by adding a method and calling it in <code>boot()</code>.</p> <p>See the complete middleware here</p> <pre><code>/**\n * Include the middleware needed\n *\n * @param $router\n */\npublic function add_middleware($router)\n{\n // Authenticate checks that the token is valid\n // from an allowed IP address\n $router->middleware('api.auth', ApiToken::class);\n}\n</code></pre>"},{"location":"developer_guides/package_development/#views","title":"Views","text":"<p>Although almost all of our interfacing with this package will be via the json api endpoints, we need to add a few routes that will give an administrator the ability to generate API tokens as well as view logs etc. This will be for an administrator, so we will re-use the ACL features provided by the <code>eveseat/web</code> package to ensure that only admins an access our api-admin routes. Views live in <code>resources/views</code> and are bootstrapped to the <code>api</code> namespace in the service provider. See the service provider here for an example.</p> <p>Note how we are re-using views that exist in the <code>web</code> namespace. All we have to do is extend one of the grids like here and start without our blade template.</p>"},{"location":"developer_guides/package_development/#sidebar-menu","title":"Sidebar menu","text":"<p>Integrating with the sidebar is also really easy. All you have to do is create a config file, bootstrap it in the service provider and viola. The config file itself has a set structure for the <code>web</code> package to interpret and can be seen here.</p> <pre><code>return [\n 'api' => [\n 'permission' => 'global.superuser',\n 'name' => 'Api Tokens',\n 'icon' => 'fas fa-exchange',\n 'route_segment' => 'api-admin',\n 'entries' => [\n [ // Manage API Tokens\n 'name' => 'Manage',\n 'icon' => 'fas fa-key',\n 'route' => 'api-admin.list'\n ]\n ]\n ]\n];\n</code></pre> <p>The format is generally an array, whereby the first key is the name of your package (<code>api</code> in this case). Thereafter you can specify the main entry, and any sub entries you want to add. The <code>route</code> key should refer to the named route. The sidebar loader will resolve the route itself for you. If you have any permissions requirements for your package, the <code>permission</code> key can be used together with a required SeAT permission to render the view.</p>"},{"location":"developer_guides/package_development/#character-submenus","title":"Character submenus","text":"<p>Integrating with the character sub menus is also really easy. Just like the sidebar, all you have to do is create a config file, bootstrap it in the service provider and viola. The namespace should be named <code>package.character.menu</code> in your service provider. A sample config file can be seen below:</p> <pre><code>// file: package.character.menu.php\nreturn [\n [\n 'name' => 'Research',\n 'permission' => 'character.research',\n 'highlight_view' => 'research',\n 'route' => 'character.view.research'\n ]\n];\n</code></pre>"},{"location":"developer_guides/package_development/#corporation-submenus","title":"Corporation submenus","text":"<p>Integrating with the corporation sub menus is also really easy. Just like the sidebar and character menus, all you have to do is create a config file, bootstrap it in the service provider and viola. The namespace should be named <code>package.corporation.menu</code> in your service provider. A sample config file can be seen below:</p> <pre><code>// file: package.corporation.menu.php\nreturn [\n [\n 'name' => 'Research',\n 'permission' => 'corporation.research',\n 'highlight_view' => 'research',\n 'route' => 'corporation.view.research'\n ]\n];\n</code></pre>"},{"location":"developer_guides/package_development/#bootstrapping-menu-items","title":"Bootstrapping menu items","text":"<p>In the above items, we refer to the files needing to be bootstrapped via the service provider. All this really means is that we have to tell the Laravel application where to find configuration information for a namespace. So, if we wanted to add a sidebar item, we would add the following line to the <code>register()</code> method of the service provider:</p> <pre><code>// Include this packages menu items\n$this->mergeConfigFrom(__DIR__ . '/Config/package.sidebar.php', 'package.sidebar');\n</code></pre> <p>The first argument is the file with the sidebar definitions, the second is the namespace.</p>"},{"location":"developer_guides/package_development/#permissions","title":"Permissions","text":"<p>You are able to register and use your own permissions for use within SeAT. This is relatively simple and done by creating a config file in the location <code>Config/Permissions/package.permissions.php</code>. It should return an array of the following format:</p> <pre><code>[\n 'sheet' => [\n 'label' => 'Grant access to Character Sheet',\n 'description' => 'The Character Sheet contains basic information....',\n 'division' => 'financial',\n ],\n 'intel' => [\n 'label' => 'web::permissions.character_intel_label',\n 'description' => 'web::permissions.character_intel_description',\n 'division' => 'military',\n ],\n 'planetary' => [\n 'label' => 'web::permissions.character_planetary_label',\n 'description' => 'web::permissions.character_planetary_description',\n 'division' => 'industrial',\n ],\n];\n</code></pre> property mandatory purpose label yes The displayed name of your permission. It must be a translation token. description The displayed permission description. It should help user to determine what the permission is doing. It must be a translation token. division It will show a \"category\" icon to help user figures what will be impacted by the permission. Value can be one of <code>military</code>, <code>assets</code>, <code>financial</code>, <code>industrial</code>. gate If you need to manage your permission with a custom policy, you can provide a policy FQCN. <p>The definition key (<code>sheet</code>, <code>intel</code>, <code>planetary</code> in the upper sample) will be used as permission unique identifier by the system. This is the one stored in the database, together with scope.</p> <p></p> <p>Info</p> <p>By default, if no gate are provided, those shipped in core will be used according to this pattern :</p> <ul> <li>character scope: CharacterPolicy, this will require an instance of CharacterInfo to be used in your checks</li> <li>corporation scope: CorporationPolicy, this will require an instance of CorporationInfo to be used in your checks</li> <li>anything else: GlobalPolicy</li> </ul> <p>You'll find policy sample at this location.</p> <p>In SeAT 4, a permission is made of a scope and an ability. The ability is defined by the permissions configuration file and the scope is defined on registration.</p> <p>This config file is then loaded from your app service provider as below:</p> <pre><code> $this->registerPermissions(__DIR__ . '/Config/Permissions/package.permissions.php', 'package');\n</code></pre>"},{"location":"developer_guides/package_development/#database","title":"Database","text":"<p>For our API package, we have a database requirement. We need to store api tokens and the ip address that is allowed to use them. We are also going to store an access log (based on the config setting). We create migrations and models just like you would for a base Laravel 6 application. The only thing to remember is that your migrations for your package must be published (and specified in your service provider).</p> <p>Registering these migrations looks like the following:</p> <pre><code>$this->loadMigrationsFrom(__DIR__ . '/database/migrations/');\n</code></pre>"},{"location":"developer_guides/package_development/#jobs-schedules","title":"Jobs & Schedules","text":"<p>Many packages need to run certain actions in a regular interval. For example, a mining tax plugin might want to calculate taxes once a day. This can be done with the job queue and the schedule system.</p> <p>First, create your job containing the logic you want to run on a schedule. You can refer to the laravel docs for this.</p> <p>Next, create an artisan command that launches your job. Again, you can refer to the laravel docs for this.</p> <p>In a last step, we create a database seeder that adds your command to the schedule. In your <code>database/seeders/</code> directory, create a class that extends from <code>\\Seat\\Services\\Seeding\\AbstractScheduleSeeder</code>. The required <code>getSchedules()</code> function should return an array describing the command you wish to schedule, according to the following format: <pre><code>public function getSchedules(): array\n{\n return [\n [ \n 'command' => 'horizon:snapshot', // your artisan command\n 'expression' => '*/5 * * * *', // this is a cron expression describing how often your command should be run\n 'allow_overlap' => false,\n 'allow_maintenance' => false,\n 'ping_before' => null,\n 'ping_after' => null,\n ],\n [ \n 'command' => 'other:command',\n 'expression' => '*/5 * * * *',\n 'allow_overlap' => false,\n 'allow_maintenance' => false,\n 'ping_before' => null,\n 'ping_after' => null,\n ],\n ];\n}\n</code></pre></p> <p>You can let the <code>getDeprecatedSchedules()</code> function return an empty array for now.</p> <p>Lastly, register your seeder in your service provider's <code>register()</code> method using <pre><code>$this->registerDatabaseSeeders(MyScheduleSeeder::class);\n</code></pre></p> <p>When you restart the stack, the seeder should add the command to the schedule. For testing, it might also be useful to run the seeder manually using <code>` php artisan db:seed --class=Seat\\\\Services\\\\Database\\\\Seeders\\\\PluginDatabaseSeeder</code></p>"},{"location":"developer_guides/package_development/#releasing-the-plugin","title":"Releasing the plugin","text":"<p>The usual setup is to host the code on github and distribute the code via packagist. When you submit your plugin on packagist, it will be installable like the other plugins by adding <code><vendor>/<package></code> to the appropriate section of your <code>.env</code> file.</p>"},{"location":"developer_guides/seat_api/","title":"SeAT API","text":""},{"location":"developer_guides/seat_api/#introduction","title":"Introduction","text":"<p>SeAT has a REST API. Endpoints are protected by an access token that is limited by IP address. For every IP address that wants to make API requests to SeAT, a unique token is required. API Tokens have no concept of ACL's. The API should primarily be used for integrations with other systems.</p>"},{"location":"developer_guides/seat_api/#definitions","title":"Definitions","text":"<p>Currently, all API endpoints live at <code><seat url>/api/<version></code> where <code><seat url></code> is the full url to your SeAT instance and <code><version></code> is the API version you wish to interact with.</p> <p>Since SeAT 3.0, API documentation is generated from source code annotations and presented via a Swagger UI. As a result, endpoint documentation is now directly available on your instance at the following address <code><seat url>/api/documentation</code>. A link to the documentation is also provided on the API key management page available to users with the Superuser role.</p> <p>Swagger JSON</p> <p>If you get an error when viewing the API documentation that complains about a file called <code>api-docs.json</code>, make sure that you ran the <code>php artisan l5-swagger:generate</code> command as part of the installation and upgrade routines.</p>"},{"location":"developer_guides/seat_api/#authentication","title":"Authentication","text":"<p>Authentication to the SeAT API is done via a <code>X-Token</code> header. A token may be obtained by browsing to the API settings page in the SeAT WebUI and generating one. A sample request using <code>curl</code> with an authentication token can be seen below:</p> <pre><code>$ curl -X GET -H \"X-Token:123456\" -H \"Accept: application/json\" http://localhost:8000/api/v1/key\n* Trying ::1...\n* Connected to localhost (::1) port 8000 (#0)\n> GET /api/v1/key HTTP/1.1\n> Host: localhost:8000\n> User-Agent: curl/7.43.0\n> Accept: application/json\n> X-Token:123456\n>\n< HTTP/1.1 200 OK\n< Host: localhost:8000\n< Connection: close\n< Cache-Control: no-cache\n< Date: Sat, 28 Nov 2015 22:27:12 GMT\n< Content-Type: application/json\n</code></pre>"},{"location":"developer_guides/seat_api/#content-type","title":"Content-Type","text":"<p>Make sure you specify the Accepted content-type header as <code>application/json</code>. When using <code>cURL</code>, you can specify it with <code>-H</code></p> <p>Example:</p> <pre><code>$ curl -X POST https://seat.testsite.local/api/v1/key -H \"Accept: application/json\" -H \"X-Token: L3SxgdX4XUw6pVWVSCftgsh16eAbBF3D\" -d \"key_id=123&v_code=123\"\n{\"v_code\":[\"The v code must be 64 characters.\"]}\n</code></pre> <p>If you don't do this, the API will respond with a redirect and not give you the expected content.</p>"},{"location":"developer_guides/seat_api/#errors","title":"Errors","text":"<p>All SeAT API responses will include the appropriate HTTP response codes. You should check this for error handling purposes. Some sample response codes could be:</p> Code Status Description 200 OK The request was successful. 404 Not Found The requested endpoint could not be found. 422 Unprocessable Entity Typically, input validation has failed. The response json should contain the errors. 500 Internal Server Error Something bad has happened. Check the server and Laravel log files for more details."},{"location":"developer_guides/updating_plugins/","title":"Updating Plugins","text":""},{"location":"developer_guides/updating_plugins/#updating-plugins","title":"Updating Plugins","text":"<p>This page aims to help with porting a SeAT plugin to a newer version of seat.</p>"},{"location":"developer_guides/updating_plugins/#from-seat-4","title":"From SeAT 4","text":"<p>SeAT 5 mainly upgrades the php and laravel version as well as all dependencies to their newest version. However, there are a few other breaking changes that can't be ignored.</p> <ul> <li>PHP 8.2: SeAT now runs on php 8.2, enabling new features like enums and better type hinting, but also breaking a few things.</li> <li>Route Prefixing: All routes from the seat core start with <code>seatcore::</code>. For example, <code>notifications.integrations.list</code> turns into <code>seatcore::notifications.integrations.list</code>. If your plugin uses routes pointing to the seat core, you will have to update them.</li> <li>Models: With SeAT 5, the <code>services</code> packages starts to ship a <code>ExtensibleModel</code> class. Plugins can inject relation into these models, fo example from an eveapi model to a plugin model. It is recommended that all models start extending from <code>\\Seat\\Services\\Models\\ExtensibleModel</code>. It is enough to just switch from <code>MyClass extend Model</code> to <code>MyClass extends ExtensibleModel</code></li> <li>Notifications: All notifications from SeAT 4 continue to work, but by updating them you can enable more features like discord pings. See the notifications guide for more details.</li> <li>The <code>Seat\\Eveapi\\Jobs\\Middleware\\WithoutOverlapping</code> job middleware backport is now provided by laravel and got removed from the SeAT core. Use <code>Illuminate\\Queue\\Middleware\\WithoutOverlapping</code> instead. Just swapping the import should be enough, as they are compatible.</li> <li>Some, but not all ways of exporting data from DataTables are broken. Just check whether they work and fix if required.</li> <li>There are a few minor breaking changes between Laravel 6 and 10:</li> <li><code>MyJob::dispatchNow()</code> got replaced with <code>MyJob::dispatchSync()</code></li> <li>For a full list, head over to the laravel documentation.</li> </ul>"},{"location":"developer_guides/updating_plugins/#from-seat-3","title":"From SeAT 3","text":"<p>If you're upgrading a SeAT 3.x plugin, the cheat sheet bellow will probably helps you.</p> SeAT 3.x SeAT 4.x Purpose <code>auth()->user()</code> <code>auth()->user()</code> Retrieve the currently authenticated user. <code>auth()->user()->group->main_character</code> <code>auth()->user()->main_character</code> Retrieve the main character from the currently authenticated user. <code>auth()->user()->group->main_character->name</code> <code>auth()->user()->name</code> Retrieve the main character name from the currently authenticated user. <code>auth()->user()->group->characters</code> <code>auth()->user()->characters</code> Retrieve all characters from the currently authenticated user. <code>auth()->user()->refresh_token</code> <code>CharacterInfo()->refresh_token</code> Retrieve the refresh token attached to a character. <code>auth()->user()->group->refresh_tokens</code> <code>auth()->user()->refresh_tokens</code> Retrieve all refresh tokens attached to authenticated user. <p>Also, if you need it, a table called <code>mig_groups</code> is available in database containing a list of all converted group into standalone user. This table will stay here until next SeAT major update.</p> Field Purpose <code>group_id</code> The unique ID from SeAT 3 user group <code>old_user_id</code> The unique ID from SeAT 3 user (match to Character ID) <code>new_user_id</code> The unique ID from SeAT 4 user <code>main_character_id</code> The SeAT 3 registered main character ID - or random from the User Group if none were set"},{"location":"installation/docker_installation/","title":"Docker Installation (5.x)","text":""},{"location":"installation/docker_installation/#docker","title":"Docker","text":"<p>Docker is ideally the installation route you want to go. Docker enables us to run SeAT on any platform capable of running docker itself (which includes Windows!). Additionally, upgrades and service maintenance are really low effort as you don't have to care about any dependencies. All of it is maintained within a docker stack, DockerHub and the GitHub Container Registry.</p> <p>Windows owner recommendation</p> <p>If you plan on running Docker on Windows, for the best performance it is suggested that you run Docker using the Windows Subsystem for Linux 2 (WSL2) backend, available starting in Windows 10/Windows Server 20H1 (build 2004) releases.</p> <p>Windows owner special installation path</p> <p>If you are using Docker on Windows, you will need to use the Manual Deployment option below.</p> <p>Tip</p> <p>Before starting the installation process, be sure you read this complete document first. It will help you understand all the steps from an installation process.</p> <p>If you feel like docker might not be your cup of tea, checkout some of the other getting started guides that are available.</p> <p>Eve Application and ESI</p> <p>SeAT uses CCP's ESI service in order to retrieve EVE Online-related information. Before you can make any authenticated calls to ESI, you have to register a third-party EVE application on the developers portal. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p>"},{"location":"installation/docker_installation/#internal-container-setup-overview","title":"Internal Container Setup Overview","text":"<p>The setup for SeAT's docker installation orchestrated using docker-compose. With docker-compose, we can use <code>YAML</code> files to define the entire stack complete with all the dependencies required to run SeAT. A pre-built and recommended compose file (which is also used by the bootstrapping script) is hosted in the seat-docker repository here.</p> <p>The official SeAT repository for Docker is shipped with a total of 4 <code>YAML</code> files, allowing you both flexibility and understandability of the overall stack. A high-level overview of its contents is:</p> <ul> <li>A main <code>docker-compose.yml</code> file in which are listed SeAT services (<code>front</code> to serve web ui, <code>worker</code> to process jobs, <code>scheduler</code> to manage repetitive tasks and <code>cache</code> to store jobs queue)</li> <li>A database <code>docker-compose.mariadb.yml</code> file in which is listed a <code>mariadb</code> service - this way, you can replace mariadb by another supported database engine</li> <li>A Traefik <code>docker-compose.traefik.yml</code> file in which is listed a <code>traefik</code> service - this way you can simply and safely server your SeAT frontend to the rest of the world</li> <li>An alternative to Traefik <code>docker-compose.proxy.yml</code> file in which is adapted <code>front</code> SeAT container to be server behind a reverse proxy of your choice</li> <li>A volume called <code>mariadb-data</code> and <code>seat-storage</code> is defined. These are the most important volumes as they contain all SeAT data. You should configure a backup solution for them!</li> <li>The environment is configured using a top-level <code>.env</code> file.</li> <li>Only one port is exposed by default. This is <code>tcp/8080</code>. It can be connected to in order to access the SeAT web interface.</li> <li>When using the stack with Traefik (which is the easier and recommended approach), ports <code>tcp/80</code> and <code>tcp/443</code> are exposed and <code>tcp/8080</code> remain unbound.</li> <li>All containers are configured to restart on failure, so if your server reboots or a container dies for whatever reason it should automatically start up again.</li> </ul> <p>The table bellow is listed overall consumed Docker image, including SeAT custom one - together with their source repository.</p> Image Name Image Repository <code>mariadb:10.11</code> https://hub.docker.com/_/mariadb/ <code>redis:5-alpine</code> https://hub.docker.com/_/redis/ <code>traefik:2.10</code> https://hub.docker.com/_/traefik <code>ghcr.io/eveseat/seat:5</code> https://github.com/eveseat/seat-docker/pkgs/container/seat"},{"location":"installation/docker_installation/#seat-docker-installation","title":"SeAT Docker Installation","text":"<p>Depending on whether you already have <code>docker</code> and <code>docker compose</code> already installed, you may choose how to start the installation. If you already have the required tooling installed and running their latest versions, all you need to do is download the latest SeAT Docker template archive to get started.</p>"},{"location":"installation/docker_installation/#automated-setup-script","title":"Automated Setup Script","text":"<p>If you do not have the required software installed yet, consider running the bootstrap script that will check for <code>docker</code> and <code>docker compose</code>, install it and start the SeAT stack up for you. The script can be run with:</p> <pre><code>bash <(curl -fsSL https://raw.githubusercontent.com/eveseat/seat-docker/master/bootstrap.sh)\n</code></pre> <p>Once the script is finished, you can skip to the monitoring the stack section of this guide.</p> <p>If you don't want to run this script, follow along in the next section of this guide.</p>"},{"location":"installation/docker_installation/#manual-deployment","title":"Manual Deployment","text":""},{"location":"installation/docker_installation/#docker-download","title":"Docker Download","text":"<p>If you do not have <code>docker</code>, install it now.</p> LinuxWindows <p>Under Linux, you can achieve this action by using the following command as <code>root</code>:</p> <pre><code>sh <(curl -fsSL get.docker.com)\n</code></pre> <p>Under Windows, you can achieve this action by downloading and installing Docker Desktop.</p>"},{"location":"installation/docker_installation/#docker-compose-download","title":"Docker-compose Download","text":"<p>If you do not have <code>docker compose</code>, install it now with the following command as <code>root</code> (Docker Compose is included with Docker Desktop on Windows):</p> <pre><code># Downloads and install docker compose from Docker repository\nsudo apt-get update\nsudo apt-get install docker-compose-plugin\n</code></pre>"},{"location":"installation/docker_installation/#docker-compose-working-directory","title":"Docker compose working directory","text":"<p>With <code>docker</code> and <code>docker compose</code> ready, create yourself a directory in <code>/opt</code> with <code>mkdir -p /opt/seat-docker</code> and <code>cd</code> to it. Remember this directory as you will need to come back to it often.</p> <p>On Windows, create the <code>C:\\seat-docker</code> directory with <code>mkdir C:\\seat-docker</code> and <code>cd</code> to it.</p>"},{"location":"installation/docker_installation/#seat-docker-composeyml-and-env-file","title":"SeAT docker-compose.yml and .env File","text":"<p>Then, download the SeAT Docker template archive with:</p> LinuxWindows <pre><code>curl -fsSL https://github.com/eveseat/seat-docker/archive/refs/heads/master.zip -o seat-docker.zip\n</code></pre> <pre><code>Invoke-WebRequest -Uri https://github.com/eveseat/seat-docker/archive/refs/heads/master.zip -OutFile seat-docker.zip\n</code></pre> <p>Next, decompress the template archive:</p> LinuxWindows <pre><code>unzip seat-docker.zip -d /opt/seat-docker -j\n</code></pre> <pre><code>Expand-Archive -Path c:\\seat-docker\\seat-docker.zip -DestinationPath c:\\seat-docker\n</code></pre> <p>Next, we will generate a unique application key - this is used internally for encryption:</p> LinuxWindows <pre><code>sed -i -- 's/APP_KEY=insecure/APP_KEY='$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32 ; echo '')'/g' .env\n</code></pre> <pre><code>$appkey = (-join ((65..90) + (97..122) | Get-Random -Count 32 | % {[char]$_})); (Get-Content .env -Raw) -replace \"APP_KEY=insecure\", \"APP_KEY=$appkey\" | Set-Content .env\n</code></pre>"},{"location":"installation/docker_installation/#seat-docker-configuration","title":"SeAT docker configuration","text":"<p>Open up the <code>.env</code> file in a text editor and fill in a few of the configuration items needed.</p> <ul> <li><code>PROXY_BACKEND_HTTP_PORT</code> adapt to any integer of your convenience between 1 and 65535 in case you plan to serve SeAT behind a reverse proxy.</li> <li><code>TRAEFIK_ACME_EMAIL</code> adapt with your own e-mail address in case you plan to serve SeAT behind Traefik.</li> <li><code>SEAT_DOMAIN</code> should be set to the domain your installation lives on and on which SeAT UI will be served. </li> <li><code>DB_PASSWORD</code> must be adapt with a strong password of your own - it will be used as SeAT credential for its database.</li> </ul> <p>Warning</p> <p>The <code>DB_PASSWORD</code> value have to and must be changed only once - before any start of the overall stack. As soon as the database container is created, SeAT user account is initialized with the <code>DB_PASSWORD</code> value. Changing it after the initial startup will prevent the stack to boot.</p> <p>Also, at the initial startup, the root password from the database container will be shown in logs. You should consider taking a note of it - otherwise you will no longer have a way to recovery of a critical outage (ie: misconfiguration, etc...)</p> <p>Finally, in case you plan to serve SeAT using Traefik, create an ACME configuration file with:</p> <pre><code>mkdir acme\ntouch acme/acme.json\nchmod 600 acme/acme.json\n</code></pre> <p>Info</p> <p>SeAT docker template is shipped with Traefik to hide your container behind a proxy and securing traffic up to it. In case you want to manage traffic proxying and certification on your own, you must use <code>docker-compose.proxy.yml</code> file on startup.</p> <p>Warning</p> <p>The location of the <code>docker-compose.yml</code> and <code>.env</code> files are important. You need to <code>cd</code> back to the directory where these are stored in order to be able to execute commands for this stack at a later stage.</p> <p>Also, be sure you provide a valid e-mail address as it will be used to register your account against Let's Encrypt in case you plan to serve SeAT with Traefik. For those unfamiliar with this, it's CA that provides valid certificates for free.</p>"},{"location":"installation/docker_installation/#esi-configuration","title":"ESI Configuration","text":"<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions on how to do this, please refer to the ESI Setup Guide.</p> <p>With the configuration files ready, start up the stack with:</p> Using TraefikUsing proxy <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up\n</code></pre>"},{"location":"installation/docker_installation/#monitoring-the-stack","title":"Monitoring the Stack","text":"<p>Knowing what is going on inside your containers is crucial to understanding how everything is running as well as useful when debugging any problems that may occur. While the containers are starting up or have been running for a while, you can always <code>cd</code> to the directory where your <code>docker-compose.yml</code> file lives and run the <code>logs</code> command to see the output of all the containers in the stack. For example:</p> <pre><code>cd /opt/seat-docker\ndocker compose logs --tail 10 -f\n</code></pre> <p>These commands will <code>cd</code> to the directory containing the stacks <code>docker-compose.yml</code> file and run the <code>logs</code> command, showing the last 10 log entries and then printing new ones as they arrive. If you leave away the <code>--tail 10</code>part, you can view all logs since the container startup.</p>"},{"location":"installation/docker_installation/#configuration-changes","title":"Configuration Changes","text":"<p>All the relevant configuration lives inside the <code>.env</code> file, next to your <code>docker-compose.yml</code> file. Modify their values by opening it in a text editor, making the appropriate changes, and saving it again. Once that is done, restart the container environment:</p> Using TraefikUsing proxy <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n</code></pre> <p>Success</p> <p>You made it! Use a browser and browse to the domain / subdomain of your server to access SeAT!</p>"},{"location":"installation/manual_installation/","title":"Manual Installation (5.x)","text":""},{"location":"installation/manual_installation/#manual-installation","title":"Manual Installation","text":"<p>This guide attempts to explain how to manually install SeAT onto an Ubuntu Server. A small amount of Linux experience is preferred when it comes to this guide, although it is not entirely mandatory.</p> <p>Info</p> <p>This guide has been written targetting Ubuntu. However, you can use it to deploy SeAT on any linux distribution. Just be sure you adapt commands to targetted distribution (mostly those related to the package manager).</p> <p>Hint</p> <p>Before starting to do anything, be sure you read the complete workflow once. It will help you to understand all steps from the installation process.</p> <p>Eve Application and ESI</p> <p>SeAT consumes CCP's ESI service in order to retrieve EVE Online related information. Before you can make any authenticated calls to ESI, you have to register a third party EVE application on the developers portal. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p>"},{"location":"installation/manual_installation/#getting-started","title":"Getting started","text":"<p>We are going to assume you have root access to a fresh Ubuntu Server. Typically access is gained via SSH. All of the below commands are to be entered in the SSH terminal session for the installation & configuration of SeAT. If the server you want to install SeAT on is being used for other things too (such as hosting MySQL databases and or websites), then please keep that in mind while following this guide.</p> <p>Packages are installed using the <code>aptitude</code> package manager as the <code>root</code> user.</p>"},{"location":"installation/manual_installation/#os-installation","title":"OS Installation","text":""},{"location":"installation/manual_installation/#operating-system","title":"Operating System","text":"<p>Before we get to installing SeAT, lets ensure that your operating system is up to date. We can do that with basics :</p> <ul> <li><code>apt-get update</code> to refresh the repositories cache.</li> <li><code>apt-get full-upgrade</code> to update any installed packages.</li> <li><code>reboot</code> in order to ensure any updated software is the current running version.</li> <li><code>apt-get autoremove</code> (after the reboot) to cleanup any unneeded packages.</li> </ul>"},{"location":"installation/manual_installation/#database","title":"Database","text":"<p>SeAT relies heavily on a database to function. Everything it learns is stored here, along with things such as user accounts for your users. It comes without saying that database security is a very important aspect too. So, ensure that you choose very strong passwords for your installation where required.</p> <p>SeAT officially supports just MariaDB. Using MySQL or PostreSQL might appear to work on the surface, however it is likely that you will run into issues due to differences between the databases later down the line, and almost no testing with them is done during development.</p> <p>We need to ensure that we have the latest MariaDB installed. To help with this, MariaDB provides an official repository to get the latest versions.</p> <p>To download and install the repo, you need <code>curl</code>. Install it with:</p> <pre><code>apt-get install curl\n</code></pre> <p>Let's add this repository with:</p> <pre><code>curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash\n</code></pre> <p>With the repository now setup, lets install the database server:</p> <p>Warning<p>During the installation, you may be asked to set a password for the <code>root</code> MariaDB user account. Make sure you set a long, strong password and remember it. It will be needed for the next step.</p> </p> <pre><code>apt-get install mariadb-server\n</code></pre> <p>Before we can configure the database, we have to start it:</p> <pre><code>systemctl enable mariadb.service\n</code></pre> <p>Next, we are going to secure the database server by removing anonymous access and setting a <code>root</code> password (if you have not been prompted for it yet).</p> <p>Note</p> <p>The database <code>root</code> password should not be confused with the operating systems <code>root</code> passwords. They are both completely different. They should also not have the same password.</p> <p>To secure the database, run:</p> <pre><code>mariadb-secure-installation\n</code></pre> <p>This will ask you a series of questions where you should generally just answer yes to. If you already set a <code>root</code> password in the previous step then you dont have to set it again, otherwise, make sure you choose a long, strong password for the <code>root</code> account. An example run is shown below:</p> <pre><code>[...]\nEnter current password for root (enter for none): IF ONE WAS SET, IGNORE THIS\nOK, successfully used password, moving on...\n\n[...]\nSet root password? [Y/n] y\nNew password: SET A STRONG PASSWORD HERE\nRe-enter new password: SET A STRONG PASSWORD HERE\nPassword updated successfully!\nReloading privilege tables..\n ... Success!\n\n[...]\nRemove anonymous users? [Y/n] y\n ... Success!\n\n[...]\nDisallow root login remotely? [Y/n] y\n ... Success!\n\n[...]\nRemove test database and access to it? [Y/n] y\n\n[...]\nReload privilege tables now? [Y/n] y\n ... Success!\n\n[...]\n</code></pre> <p>That concludes the installation of the database server and securing it.</p> <p>Next, we need to create an actual user and database for SeAT to use on the newly installed server. To do this we use the <code>mariadb</code> command line client and enter a few commands as the <code>root</code> user to create the database and the user that will be accessing the server. Let get to it.</p> <p>Fire up the <code>mariadb</code> client as root by running:</p> <pre><code>mariadb -uroot -p\n</code></pre> <p>This will prompt you for a password. Use the password you configured for the <code>root</code> account when we ran <code>mysql_secure_installation</code>. This will most probably be the last time you need to use this password :)</p> <p>If the password was correct, you should see a prompt similar to the one below:</p> <pre><code>root@ubuntu:~# mysql -uroot -p\nEnter password:\nWelcome to the MariaDB monitor. Commands end with ; or \\g.\nYour MariaDB connection id is 16\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nMariaDB [(none)]>\n</code></pre> <p>Create a new database for SeAT to use with:</p> <pre><code>create database seat;\n</code></pre> <p>The output should be similar to the below:</p> <pre><code>MariaDB [(none)]> create database seat;\nQuery OK, 1 row affected (0.00 sec)\n</code></pre> <p>Next, we need to create the user that SeAT itself will use to connect and use the new <code>seat</code> database:</p> <pre><code>GRANT ALL ON seat.* to seat@localhost IDENTIFIED BY 's_p3rs3c3r3tp455w0rd';\n</code></pre> <p>Of course, you need to replace <code>s_p3rs3c3r3tp455w0rd</code> with your own unique and strong password. Successfully running this should present you with output similar to the below:</p> <pre><code>MariaDB [(none)]> GRANT ALL ON seat.* to seat@localhost IDENTIFIED BY 's_p3rs3c3r3tp455w0rd';\nQuery OK, 0 rows affected (0.00 sec)\n</code></pre> <p>In the example above, we have effectively declared that SeAT will be using the database as <code>seat:s_p3rs3c3r3tp455w0rd@localhost/seat</code>.</p> <p>Finally, we will flush the database server privileges:</p> <pre><code>FLUSH PRIVILEGES;\n</code></pre> <p>That concludes the database server setup. You can exit the prompt with <code>exit</code>;</p> <p>Note</p> <p>Remember the password for the <code>seat</code> database user as we will need it later to configure SeAT.</p>"},{"location":"installation/manual_installation/#php","title":"PHP","text":"<p>Since SeAT is written primarily in PHP, we will need to install PHP packages. Ubuntu based systems can make use of the ondrej PPA which is a very popular repository used for specific PHP versions.</p> <p>Depending on the version of Ubuntu you are using, a release specific repository URL should be used for the PPA. Select the tab applicable to your Ubuntu version and run the commands within.</p> Jammy 22.04Focal 20.04Bionic 18.04 <pre><code>echo \"deb http://ppa.launchpad.net/ondrej/php/ubuntu jammy main\" >> /etc/apt/sources.list.d/php.list\necho \"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu jammy main\" >> /etc/apt/sources.list.d/php.list\n</code></pre> <pre><code>echo \"deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main\" >> /etc/apt/sources.list.d/php.list\necho \"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu focal main\" >> /etc/apt/sources.list.d/php.list\n</code></pre> <pre><code>echo \"deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main\" >> /etc/apt/sources.list.d/php.list\necho \"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu bionic main\" >> /etc/apt/sources.list.d/php.list\n</code></pre> <p>Next, we will have to download the new repositories GPG signing key and add it into our keychain</p> <pre><code>apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4F4EA0AAE5267A6C\n</code></pre> <p>With the new repository configured, update the package lists with:</p> <pre><code>apt-get update\n</code></pre> <p>Finally, install the required PHP packages with:</p> <pre><code>apt-get install libpng-dev libfreetype6-dev libjpeg-dev\napt-get install openssl zip php8.2-bz2 php8.2-cli php8.2-curl php8.2-dom php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-redis php8.2-zip\n</code></pre>"},{"location":"installation/manual_installation/#redis","title":"Redis","text":"<p>SeAT makes use of Redis as a cache and message broker for the Queue back end. Installing it is really easy. Do it with:</p> <pre><code>apt-get install redis-server\n</code></pre> <p>Hint</p> <p>By default, redis is making backup from its database - so it ensure integrity in case of failure. However, in certain condition, like power outage, this backup might be unprocessable and avoid redis to run.</p> <p>Since we don't store anything critical in it, you may want to disable this. To do so, edit the configuration file using <code>nano /etc/redis/redis.conf</code> and search line <code>appendonly no</code>, change it for <code>appendonly yes</code></p> <p>If you are on a small server, You may also want to limit the part of memory used by redis (by default, it will consume all available memory). To do so, into the redis configuration file, search line <code># maxmemory <bytes></code> and change it for <code>maxmemory xGB</code> where <code>x</code> is the memory limit you want to set.</p> <p>You might also need to start redis: <pre><code>systemctl enable redis-server.service\n</code></pre></p>"},{"location":"installation/manual_installation/#seat-installation","title":"SeAT Installation","text":""},{"location":"installation/manual_installation/#prerequisites","title":"Prerequisites","text":"<p>Excellent progress! All of the operating system level requirements are now met and we are almost ready to install SeAT itself. The only thing that is outstanding is the package manager called <code>composer</code> as well as the <code>git</code> client. The combination of <code>composer</code> and <code>git</code> will let us download the SeAT source code from Github and install it locally.</p>"},{"location":"installation/manual_installation/#git","title":"Git","text":"<p>Install <code>git</code> with:</p> <pre><code>apt-get install git\n</code></pre>"},{"location":"installation/manual_installation/#composer","title":"Composer","text":"<p>Next, install <code>composer</code> with:</p> <pre><code>curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && hash -r\n</code></pre> <p>Thats it. Lets install SeAT! By default, we suggest you run SeAT from within <code>/var/www/seat</code>. As part of the installation, the <code>seat</code> directory will be created for us, but we will need to create <code>/var/www</code> for now as we have not yet configured the web server.</p> <p>Create the <code>www</code> directory with:</p> <pre><code>mkdir -p /var/www\n</code></pre> <p>Next, <code>cd</code> to the new <code>/var/www</code> directory with:</p> <pre><code>cd /var/www\n</code></pre>"},{"location":"installation/manual_installation/#seat-download","title":"SeAT Download","text":"<p>With all of the prerequisites installed as well as our <code>www</code> directory ready we can finally download SeAT. Do that with:</p> <pre><code>composer create-project eveseat/seat:5.0 --no-dev --no-interaction\n</code></pre> <p>Once the download is done, you should have seen output such as:</p> <pre><code>Writing lock file\nGenerating optimized autoload files\n> Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\n> @php artisan package:discover\nDiscovered Package: darkaonline/l5-swagger\nDiscovered Package: eveseat/api\nDiscovered Package: eveseat/console\nDiscovered Package: eveseat/eveapi\nDiscovered Package: eveseat/notifications\nDiscovered Package: eveseat/services\nDiscovered Package: eveseat/web\nPackage manifest generated successfully.\n> @php artisan key:generate\nApplication key [base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k=] set successfully.\n</code></pre>"},{"location":"installation/manual_installation/#permissions","title":"Permissions","text":"<p>You may have noticed a warning about <code>composer</code> running as <code>root</code>. For now this can be safely ignored. Post the installation of the SeAT source code, we need to fix up the permissions of the downloaded files. Do that with:</p> <pre><code>chown -R www-data:www-data /var/www/seat\nchmod -R guo+w /var/www/seat/storage/\n</code></pre> <p>This will ensure that the web server, cron jobs and workers have access to the source code as well as logs.</p>"},{"location":"installation/manual_installation/#seat-setup","title":"SeAT Setup","text":"<p>With SeAT downloaded, we need to configure it. There are a number of configuration tasks needed. These include editing the applications <code>.env</code> file as well as running some commands that setup and seed the database. A configuration value reference can be found here.</p>"},{"location":"installation/manual_installation/#env-setup","title":".env setup","text":"<p>The first task would be to configure the applications database connection. Open the file located at <code>/var/www/seat/.env</code> with something like <code>vi</code> or <code>nano</code> and update the database options with your values. Typically, only the password would really need to be updated. If you are making use of an existing database somewhere else over the network, update the applicable fields such as <code>DB_HOST</code> accordingly.</p> <pre><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=seat\nDB_USERNAME=seat\nDB_PASSWORD=s_p3rs3c3r3tp455w0rd # <-- this is the value you probably need to edit.\nDB_DEBUG=false\n</code></pre>"},{"location":"installation/manual_installation/#database-migrations-and-seeds","title":"Database Migrations and Seeds","text":"<p>Next we need to publish the database migrations and web assets (such as JavaScript scripts and CSS Style sheets), run those migrations and finally seed the SeAT job schedule.</p> <p>Publish the assets and database migrations with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan vendor:publish --force --all'\n</code></pre> <p>Run the database migrations with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan migrate'\n</code></pre> <p>Seed the SeAT schedule with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan db:seed --class=Seat\\\\Services\\\\Database\\\\Seeders\\\\PluginDatabaseSeeder'\n</code></pre>"},{"location":"installation/manual_installation/#eve-sde-update","title":"EVE Sde Update","text":"<p>SeAT makes use of a number of tables from the EVE Static Data Exports. MariaDB conversions of this data is available at https://www.fuzzwork.co.uk/dump/ and used in SeAT.</p> <p>To update to the latest SDE within SeAT, run:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan eve:update:sde'\n</code></pre>"},{"location":"installation/manual_installation/#supervisor","title":"Supervisor","text":"<p>The jobs ecosystem within SeAT requires a process supervisor to ensure that the job runner stays alive. The job runner itself is implemented using Laravel Horizon and is monitored using supervisord.</p> <p>To configure the Horizon process monitor, first install <code>supervisor</code>:</p> <pre><code>apt-get install supervisor\n</code></pre> <p>Next, we will create a dedicated configuration file which will ask supervisor to keep an eye on Horizon. This file will live in <code>/etc/supervisor/conf.d/seat.conf</code>. Create this file with its recommended configuration with:</p> <pre><code>cat > /etc/supervisor/conf.d/seat.conf << EOL\n[program:seat]\ncommand=/usr/bin/php /var/www/seat/artisan horizon\nprocess_name = %(program_name)s-80%(process_num)02d\nstdout_logfile = /var/log/seat-80%(process_num)02d.log\nstdout_logfile_maxbytes=100MB\nstdout_logfile_backups=10\nnumprocs=1\ndirectory=/var/www/seat\nstopwaitsecs=600\nuser=www-data\nEOL\n</code></pre> <p>Finally, reload supervisor to apply the new configuration with the following command:</p> <pre><code>systemctl enable supervisor.service\n</code></pre>"},{"location":"installation/manual_installation/#crontab","title":"Crontab","text":"<p>A crontab entry is needed for SeAT. While simple in implementation, this crontab entry simply helps the application invoke a job checker very minute. The actual schedule is stored within SeAT itself and managed entirely via the Web Interface.</p> <p>To configure the crontab entry required for SeAT, run the following commands:</p> <pre><code>echo '* * * * * php /var/www/seat/artisan schedule:run >> /dev/null 2>&1' > /tmp/seat-crontab.tmp\n</code></pre> <p>Next, add this crontab for the <code>www-data</code> user with:</p> <pre><code>crontab -u www-data /tmp/seat-crontab.tmp\n</code></pre> <p>If you want to confirm that the crontab successfully installed, you can check it with <code>crontab -u www-data -l</code>.</p>"},{"location":"installation/manual_installation/#web-server","title":"Web Server","text":"<p>Almost there!<p>You almost made it to the end! Just one more step.</p> </p> <p>The SeAT web interface requires a web server to serve the HTML goodies it has. We highly recommend you to use <code>nginx</code> and will be covered in this document. You don't have to use it, so if you prefer something else, feel free.</p>"},{"location":"installation/manual_installation/#nginx-install","title":"Nginx Install","text":"<p>Together with an <code>nginx</code> installation we also need to install <code>php-fpm</code> to handle the PHP execution for us. Let's install <code>nginx</code> and <code>php-fpm</code> with:</p> <pre><code>apt-get install nginx php8.2-fpm\n</code></pre>"},{"location":"installation/manual_installation/#nginx-configuration","title":"Nginx Configuration","text":"<p>With the webserver installed, we need to configure <code>nginx</code> to serve SeAT. For that, a configuration file needs to be created that will tell <code>nginx</code> where to find <code>php-fpm</code> as well as where the assets are for SeAT.</p> <p>The configuration file will live at <code>/etc/nginx/sites-available/seat</code>. It can be created with the following command:</p> <pre><code>cat > /etc/nginx/sites-available/seat << EOL\nserver {\n listen 80;\n listen [::]:80;\n # If you are hosting this instance on a domain, set that\n # name here.\n #server_name seat.yourdomain.com;\n # SeAT public directory. This is the only directory that\n # should be exposed by the webserver. If one has to expose\n # the parent directory then things like the .env file will\n # be available for anyone to download.\n root /var/www/seat/public;\n index index.php;\n location / {\n try_files \\$uri \\$uri/ /index.php?\\$query_string;\n }\n # PHP-FPM configuration.\n location ~ \\.php\\$ {\n try_files \\$uri /index.php =404;\n fastcgi_pass unix:/run/php/php8.2-fpm.sock;\n fastcgi_param SCRIPT_FILENAME \\$document_root\\$fastcgi_script_name;\n include fastcgi_params;\n }\n # Even though .htaccess rules mean nothing in the nginx\n # world, prevent those from being downloaded anyways.\n location ~ /\\.ht {\n deny all;\n }\n # In case someone messes up, prevent .env files from\n # being downloaded as well.\n location ~ /\\.env {\n deny all;\n }\n}\nEOL\n</code></pre> <p>Warning</p> <p>The code block above should not be copied directly into a file. It is a script and should be pasted directly into the linux terminal. It will create the nginx config for you. If you create the file yourself with the above content then the file will not be valid and you will receive errors from nginx.</p> <p>The configuration file as is at <code>/etc/nginx/sites-available/seat</code> itself won't be loaded by <code>nginx</code> yet. Storing configuration files in a <code>*sites-available*</code> directory is simply a convention used to allow administrators to quickly add & remove sites if needed. To apply the changes made by the new configuration file it needs to be symlinked to a <code>*sites-enabled*</code> directory.</p> <p>Let's symlink to the new configuration and drop the default one as a hardening exercise at the same time:</p> <pre><code>ln -s /etc/nginx/sites-available/seat /etc/nginx/sites-enabled/seat\nrm /etc/nginx/sites-enabled/default\n</code></pre> <p>Finally, reload <code>nginx</code> and <code>php-fpm</code> for the new changes to take affect:</p> <pre><code>systemctl restart nginx.service\nsystemctl restart php8.2-fpm.service\n</code></pre>"},{"location":"installation/manual_installation/#esi-configuration","title":"ESI Configuration","text":"<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions how to do this, please refer to the ESI Setup Guide.</p> <p>Info</p> <p>You may want to serve your SeAT installation over SSL (using HTTPS) - which is a recommanded behavior. There are many way to do it, you can have a look on Let's Encrypt which provide you valid certificates for free. Put an eye to their Certbot Documentation.</p> <p>Success</p> <p>You made it! Use a browser and browse to the IP address / hostname of your server to access SeAT!</p>"},{"location":"installation/requirements/","title":"Requirements","text":""},{"location":"installation/requirements/#requirements","title":"Requirements","text":""},{"location":"installation/requirements/#hardware-requirements","title":"Hardware Requirements","text":"<p>As far as hardware goes, there isn't really a hard and fast rule on what is needed. The more resources you make available, the faster API updates will occur. However, there are some minimum recommended specifications.</p> <p>Info</p> <p>Required CPU cores are indicative and may changes depending on your processor. They have been based on a one tier deployment (app, workers and database are hosted on the same server).</p> <p>To improve accuracy regarding CPU requirements, we provide a Coremark value. Since Cloud providers like Azure and Google Cloud are providing their instance benchmark using this test, it should give you a more meaningful idea of what we are talking about.</p> <p>Warning</p> <p>If you intend to process a large amount of data, plan your storage accordingly. The SeAT database can grow incredibly quickly depending on the amount of tokens you process.</p> <p>Due to high I/O traffic generated by SeAT, we recommand NVMe storage usage for best performances.</p>"},{"location":"installation/requirements/#up-to-25-characters","title":"Up to 25 characters","text":"Type Requirement CPU 2 virtual cores (Coremark 20 000+) Memory 2GB of RAM with a swap file Core Storage Space 1GB (tend to be stable) ESI Cache Storage Space 2GB (tend to grow with characters) Database Storage Space 5GB (tend to grow with characters and history)"},{"location":"installation/requirements/#up-to-500-characters","title":"Up to 500 characters","text":"Type Requirement CPU 2 virtual cores (Coremark 20 000+) Memory 4GB of RAM Core Storage Space 1GB (tend to be stable) ESI Cache Storage Space 5GB (tend to grow with characters) Database Storage Space 10GB (tend to grow with characters and history)"},{"location":"installation/requirements/#up-to-1-000-characters","title":"Up to 1 000 characters","text":"Type Requirement CPU 4 virtual cores (Coremark 40 000+) Memory 8GB of RAM Core Storage Space 1GB (tend to be stable) ESI Cache Storage Space 10GB (tend to grow with characters) Database Storage Space 20GB (tend to grow with characters and history)"},{"location":"installation/requirements/#more-than-1-000-characters","title":"More than 1 000 characters","text":"<p>If you plan to run SeAT for more than 1 000 characters, you will have to fine tune your installation and carefully monitoring it. At time this documentation is wrote, a standard character is queuing around 50 jobs per wave. Since all jobs are not doing the same thing, it's difficult to provide you accurate figures.</p> <p>A single worker is consuming around 200 MB of memory. Most jobs are requiring less than 5% of CPU - however, a few of them need more than 20% of it. The more jobs you'll get, the more workers you'll need to process queue in less than 60 minutes.</p> <p>Warning</p> <p>With such installation, you shouldn't share SeAT server resources with other services. Also, you should consider deploying database on another server.</p>"},{"location":"installation/requirements/#software-requirements","title":"Software Requirements","text":""},{"location":"installation/requirements/#docker-environment","title":"Docker Environment","text":"<p>For Docker based installations, all you need is <code>docker</code>. If you already have it installed, check your current version with <code>docker version</code>.</p> Type Requirement Version Check Docker Docker: ^24.0 <code>docker -v</code> <p>Info</p> <p>If you plan to deploy SeAT on a Windows host, you will need Docker for Windows</p> <p>Warning</p> <p>Do not install Docker directly from your distributions repositories. These are usually out of date. Instead, rather follow the steps provided on dockers official documentation</p> <p>When considering a VPS provider, make sure you choose one that does not make use of OpenVZ or similar operating-system level virtualization technologies. These virtualization technologies limit you in terms of kernel access as they purely containerize an existing Linux installation.</p> <p>For a successful docker installation, choose a provider that uses para-virtualized technologies such as KVM, VMWare or XEN allowing you full control to the instance (and therefor the kernel itself). Examples of such providers are Digital Ocean, Linode and Vultr.</p>"},{"location":"installation/requirements/#bare-metal-environment","title":"Bare metal Environment","text":"<p>Info</p> <p>We consider \"bare metal\", any environment on which SeAT has been deployed manually (instead using containers).</p> <p>If you plan to deploy SeAT on a Windows host, you will have to use Docker</p> <p>Software version requirements are based on a minimum requirement.</p> Type Requirement State Check Operating System Linux (any distribution is suitable, however, Ubuntu tends to get more up-to-date packages on official repositories). Usually, running <code>cat /etc/issue</code> should give you a good idea. Architecture 64-bit only <code>uname -p</code> PHP PHP: ^8.3 including mysql, gd, bz2, intl, pcntl, gmp, openssl, zip, opcache and redis extensions <code>php -v</code> and <code>php -i</code> Database MariaDB: ^10.2.7 <code>mysql -V</code> Caching Service Redis <code>redis-server -v</code> Service Supervisor Supervisor : 3 <code>supervisord -v</code> Web Server NGinX or Apache <code>nginx -v</code> or <code>httpd -v</code> <p>Tip</p> <p>In case you want to deploy SeAT with Apache as web server, plan to configure it with Fast CGI using php-fpm instead embedded php process. Doing it so will make you benefit of significant improved performances.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/","title":"Docker Installation (4.x)","text":""},{"location":"installation/old_versions/docker_installation_seat_4/#docker","title":"Docker","text":"<p>Docker is ideally the installation route you want to go. Docker enables us to run SeAT on any platform capable of running docker itself (which includes Windows!). Additionally, upgrades and service maintenance are really low effort as you don't have to care about any dependencies. All of it is maintained within a docker stack and dockerhub.</p> <p>Info</p> <p>If you plan on running Docker on Windows, for the best performance it is suggested that you run Docker using the Windows Subsystem for Linux 2 (WSL2) backend, available starting in Windows 10/Windows Server 20H1 (build 2004) releases.</p> <p>Hint</p> <p>Before starting the installation process, be sure you read this complete document first. It will help you understand all of the steps from an installation process.</p> <p>If you feel like docker might not be your cup of tea, checkout some of the other getting started guides that are available.</p> <p>Warning</p> <p>If you are using Docker on Windows, you will need to use the Manual Deployment option below.</p> <p>Eve Application and ESI</p> <p>SeAT used CCP's ESI service in order to retrieve EVE Online-related information. Before you can make any authenticated calls to ESI, you have to register a third-party EVE application on the developers portal. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#internal-container-setup-overview","title":"Internal Container Setup Overview","text":"<p>The setup for SeAT's docker installation orchestrated using docker-compose. With docker-compose, we can use a single <code>docker-compose.yml</code> file to define the entire stack complete with all of the dependencies required to run SeAT. A pre-built and recommended compose file (which is also used by the bootstrapping script) is hosted in the seat-docker repository here.</p> <p>The previously mentioned compose file is really simple. A high-level overview of its contents is:</p> <ul> <li>A single docker network called <code>seat-network</code> is defined. All containers are connected to this network and is used as the primary means for inter-container communications.</li> <li>A single volume called <code>mariadb-data</code> is defined. This is the most important volume as it contains all of the database data. This is the one volume that you should configure a backup solution for!</li> <li>Six services (or containers) are used within the SeAT docker stack. Three services use basic images pulled directly from Dockerhub and three others use a custom-built image, also hosted on DockerHub. The container images used are:</li> </ul> Image Name Image Repository <code>mariadb:10</code> https://hub.docker.com/_/mariadb/ <code>redis:5-alpine</code> https://hub.docker.com/_/redis/ <code>traefik:2.2</code> https://hub.docker.com/_/traefik <code>eveseat/seat</code> https://hub.docker.com/r/eveseat/seat <ul> <li>The environment is configured using a top-level <code>.env</code> file (not to be confused with the SeAT specific <code>.env</code> file.</li> <li>Only two ports are exposed by default. Those are <code>tcp/80</code> and <code>tcp/443</code>. These can be connected to in order to access the SeAT web interface.</li> <li>All containers are configured to restart on failure, so if your server reboots or a container dies for whatever reason it should automatically start up again.</li> </ul>"},{"location":"installation/old_versions/docker_installation_seat_4/#seat-docker-installation","title":"SeAT Docker Installation","text":"<p>Depending on whether you already have <code>docker</code> and <code>docker-compose</code> already installed, you may choose how to start the installation. If you already have the required tooling installed and running their latest versions, all you need to do is download the latest <code>docker-compose.yml</code> and <code>.env</code> files to get started.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#automated-setup-script","title":"Automated Setup Script","text":"<p>If you do not have the required software installed yet, consider running the bootstrap script that will check for <code>docker</code> and <code>docker-compose</code>, install it and start the SeAT stack up for you. The script can be run with:</p> <pre><code>bash <(curl -fsSL https://git.io/get-seat)\n</code></pre> <p>Once the script is finished, you can skip to the monitoring the stack section of this guide.</p> <p>If you don't want to run this script, follow along in the next section of this guide.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#manual-deployment","title":"Manual Deployment","text":""},{"location":"installation/old_versions/docker_installation_seat_4/#docker-download","title":"Docker Download","text":"<p>If you do not have <code>docker</code>, install it now with the following command as <code>root</code>:</p> <pre><code>sh <(curl -fsSL get.docker.com)\n</code></pre> <p>If you are on Windows, download and install Docker Desktop.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#docker-compose-download","title":"Docker-compose Download","text":"<p>If you do not have <code>docker-compose</code>, install it now with the following command as <code>root</code> (Docker Compose is included with Docker Desktop on Windows):</p> <pre><code># Downloads docker-compose\ncurl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose\n\n# Makes docker-compose executable\nchmod +x /usr/local/bin/docker-compose\n</code></pre>"},{"location":"installation/old_versions/docker_installation_seat_4/#docker-compose-working-directory","title":"Docker compose working directory","text":"<p>With <code>docker</code> and <code>docker-compose</code> ready, create yourself a directory in <code>/opt</code> with <code>mkdir -p /opt/seat-docker</code> and <code>cd</code> to it. Remember this directory as you will need to come back to it often.</p> <p>On Windows, create the <code>C:\\seat-docker</code> directory with <code>mkdir C:\\seat-docker</code> and <code>cd</code> to it.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#seat-docker-composeyml-and-env-file","title":"SeAT docker-compose.yml and .env File","text":"<p>Then, download the <code>docker-compose.yml</code> file with:</p> LinuxWindows <pre><code>curl -fsSL https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml -o docker-compose.yml\n</code></pre> <pre><code>Invoke-WebRequest -Uri https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml -OutFile docker-compose.yml\n</code></pre> <p>Next, download the docker <code>.env</code> file with:</p> LinuxWindows <pre><code>curl -fsSL https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env -o .env\n</code></pre> <pre><code>Invoke-WebRequest -Uri https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env -OutFile .env\n</code></pre> <p>Next, we will generate a unique application key - this is used internally for encryption:</p> LinuxWindows <pre><code>sed -i -- 's/APP_KEY=insecure/APP_KEY='$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32 ; echo '')'/g' .env\n</code></pre> <pre><code>$appkey = (-join ((65..90) + (97..122) | Get-Random -Count 32 | % {[char]$_})); (Get-Content .env -Raw) -replace \"APP_KEY=insecure\", \"APP_KEY=$appkey\" | Set-Content .env\n</code></pre>"},{"location":"installation/old_versions/docker_installation_seat_4/#seat-docker-configuration","title":"SeAT docker configuration","text":"<p>Open up the <code>.env</code> file in a text editor and fill in a few of the configuration items needed.</p> <p><code>TRAEFIK_DOMAIN</code> should be set to the base domain your installation lives on. <code>SEAT_SUBDOMAIN</code> sould be the subdomain for the SeAT web UI. eg: seat.domain.local</p> <p>For TLS configuration, you need to set the <code>TRAEFIK_ACME_EMAIL</code> value, and then in the <code>docker-compose.yml</code> file uncomment the labels that relating to <code>certResolver</code>. They typically look like this: <code>traefik.http.routers.api.tls.certResolver=primary</code>. Finally, create an ACME configuration file with:</p> <pre><code>mkdir acme\ntouch acme/acme.json\nchmod 600 acme/acme.json\n</code></pre> <p>Info</p> <p>SeAT docker template is shipped with Traefik to hide your container behind a proxy and securing traffic up to it. In case you want to manage traffic proxying and certification on your own, you can disable traefik container from the stack by adding <code>#</code> [front of lines] from the <code>docker-compose.yml</code> file.</p> <p>Warning</p> <p>The location of the <code>docker-compose.yml</code> and <code>.env</code> files are important. You need to <code>cd</code> back to the directory where these are stored in order to be able to execute commands for this stack at a later stage.</p> <p>Also, be sure you provide a valid e-mail address as it will be used to register your account against Let's Encrypt. For those unfamiliar with this, it's CA that provides valid certificates for free.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#esi-configuration","title":"ESI Configuration","text":"<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions on how to do this, please refer to the ESI Setup Guide.</p> <p>With the configuration files ready, start up the stack with:</p> <pre><code>docker-compose up -d\n</code></pre>"},{"location":"installation/old_versions/docker_installation_seat_4/#monitoring-the-stack","title":"Monitoring the Stack","text":"<p>Knowing what is going on inside of your containers is crucial to understanding how everything is running as well as useful when debugging any problems that may occur. While the containers are starting up or have been running for a while, you can always <code>cd</code> to the directory where your <code>docker-compose.yml</code> file lives and run the <code>logs</code> command to see the output of all of the containers in the stack. For example:</p> <pre><code>cd /opt/seat-docker\ndocker-compose logs --tail 10 -f\n</code></pre> <p>These commands will <code>cd</code> to the directory containing the stacks <code>docker-compose.yml</code> file and run the <code>logs</code> command, showing the last 10 log entries and then printing new ones as they arrive.</p>"},{"location":"installation/old_versions/docker_installation_seat_4/#configuration-changes","title":"Configuration Changes","text":"<p>All of the relevant configuration lives inside the <code>.env</code> file, next to your <code>docker-compose.yml</code> file. Modify their values by opening it in a text editor, making the appropriate changes, and saving it again. Once that is done, run <code>docker-compose up -d</code> again to restart the container environment.</p> <p>Success</p> <p>You made it! Use a browser and browse to the domain / subdomain of your server to access SeAT!</p>"},{"location":"installation/old_versions/manual_installation_seat_4/","title":"Manual Installation (4.x)","text":""},{"location":"installation/old_versions/manual_installation_seat_4/#manual-installation","title":"Manual Installation","text":"<p>This guide attempts to explain how to manually install SeAT onto an Ubuntu Server. A small amount of Linux experience is preferred when it comes to this guide, although it is not entirely mandatory.</p> <p>Info</p> <p>This guide has been written targetting Ubuntu. However, you can use it to deploy SeAT on any linux distribution. Just be sure you adapt commands to targetted distribution (mostly those related to the package manager).</p> <p>Hint</p> <p>Before starting to do anything, be sure you read the complete workflow once. It will help you to understand all steps from the installation process.</p> <p>Eve Application and ESI</p> <p>SeAT consumes CCP's ESI service in order to retrieve EVE Online related information. Before you can make any authenticated calls to ESI, you have to register a third party EVE application on the developers portal. This is an absolute must for SeAT to be of any use. The configuration of this step is covered in a later stage of the documentation.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#getting-started","title":"Getting started","text":"<p>We are going to assume you have root access to a fresh Ubuntu Server. Typically access is gained via SSH. All of the below commands are to be entered in the SSH terminal session for the installation & configuration of SeAT. If the server you want to install SeAT on is being used for other things too (such as hosting MySQL databases and or websites), then please keep that in mind while following this guide.</p> <p>Packages are installed using the <code>aptitude</code> package manager as the <code>root</code> user.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#os-installation","title":"OS Installation","text":""},{"location":"installation/old_versions/manual_installation_seat_4/#operating-system","title":"Operating System","text":"<p>Before we get to installing SeAT, lets ensure that your operating system is up to date. We can do that with basics :</p> <ul> <li><code>apt-get update</code> to refresh the repositories cache.</li> <li><code>apt-get full-upgrade</code> to update any installed packages.</li> <li><code>reboot</code> in order to ensure any updated software is the current running version.</li> <li><code>apt-get autoremove</code> (after the reboot) to cleanup any unneeded packages.</li> </ul>"},{"location":"installation/old_versions/manual_installation_seat_4/#database","title":"Database","text":"<p>SeAT relies heavily on a database to function. Everything it learns is stored here, along with things such as user accounts for your users. It comes without saying that database security is a very important aspect too. So, ensure that you choose very strong passwords for your installation where required.</p> <p>This document describes using MariaDB, but you can use MySQL as well. Just double check the requirements.</p> <p>We need to ensure that we have the latest MariaDB installed. To help with this, MariaDB provides an official repository to get the latest versions. Let's add this repository with:</p> <pre><code>curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash\n</code></pre> <p>With the repository now setup, lets install the database server:</p> <p>Warning<p>During the installation, you may be asked to set a password for the <code>root</code> MariaDB user account. Make sure you set a long, strong password and remember it. It will be needed for the next step.</p> </p> <pre><code>apt-get install mariadb-server\n</code></pre> <p>Next, we are going to secure the database server by removing anonymous access and setting a <code>root</code> password (if you have not been prompted for it yet).</p> <p>Note</p> <p>The database <code>root</code> password should not be confused with the operating systems <code>root</code> passwords. They are both completely different. They should also not have the same password.</p> <p>To secure the database, run:</p> <pre><code>mysql_secure_installation\n</code></pre> <p>This will ask you a series of questions where you should generally just answer yes to. If you already set a <code>root</code> password in the previous step then you dont have to set it again, otherwise, make sure you choose a long, strong password for the <code>root</code> account. An example run is shown below:</p> <pre><code>[...]\nEnter current password for root (enter for none): IF ONE WAS SET, IGNORE THIS\nOK, successfully used password, moving on...\n\n[...]\nSet root password? [Y/n] y\nNew password: SET A STRONG PASSWORD HERE\nRe-enter new password: SET A STRONG PASSWORD HERE\nPassword updated successfully!\nReloading privilege tables..\n ... Success!\n\n[...]\nRemove anonymous users? [Y/n] y\n ... Success!\n\n[...]\nDisallow root login remotely? [Y/n] y\n ... Success!\n\n[...]\nRemove test database and access to it? [Y/n] y\n\n[...]\nReload privilege tables now? [Y/n] y\n ... Success!\n\n[...]\n</code></pre> <p>That concludes the installation of the database server and securing it.</p> <p>Next, we need to create an actual user and database for SeAT to use on the newly installed server. To do this we use the <code>mysql</code> command line client and enter a few commands as the <code>root</code> user to create the database and the user that will be accessing the server. Let get to it.</p> <p>Fire up the <code>mysql</code> client as root by running:</p> <pre><code>mysql -uroot -p\n</code></pre> <p>This will prompt you for a password. Use the password you configured for the <code>root</code> account when we ran <code>mysql_secure_installation</code>. This will most probably be the last time you need to use this password :)</p> <p>If the password was correct, you should see a prompt similar to the one below:</p> <pre><code>root@ubuntu:~# mysql -uroot -p\nEnter password:\nWelcome to the MariaDB monitor. Commands end with ; or \\g.\nYour MariaDB connection id is 16\nCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.\n\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n\nMariaDB [(none)]>\n</code></pre> <p>Create a new database for SeAT to use with:</p> <pre><code>create database seat;\n</code></pre> <p>The output should be similar to the below:</p> <pre><code>MariaDB [(none)]> create database seat;\nQuery OK, 1 row affected (0.00 sec)\n</code></pre> <p>Next, we need to create the user that SeAT itself will use to connect and use the new <code>seat</code> database:</p> <pre><code>GRANT ALL ON seat.* to seat@localhost IDENTIFIED BY 's_p3rs3c3r3tp455w0rd';\n</code></pre> <p>Of course, you need to replace <code>s_p3rs3c3r3tp455w0rd</code> with your own unique and strong password. Successfully running this should present you with output similar to the below:</p> <pre><code>MariaDB [(none)]> GRANT ALL ON seat.* to seat@localhost IDENTIFIED BY 's_p3rs3c3r3tp455w0rd';\nQuery OK, 0 rows affected (0.00 sec)\n</code></pre> <p>In the example above, we have effectively declared that SeAT will be using the database as <code>seat:s_p3rs3c3r3tp455w0rd@localhost/seat</code>.</p> <p>Finally, we will flush the database server privileges:</p> <pre><code>FLUSH PRIVILEGES;\n</code></pre> <p>That concludes the database server setup. You can exit the prompt with <code>exit</code>;</p> <p>Note</p> <p>Remember the password for the <code>seat</code> database user as we will need it later to configure SeAT.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#php","title":"PHP","text":"<p>Since SeAT is written primarily in PHP, we will need to install PHP packages. Ubuntu based systems can make use of the ondrej PPA which is a very popular repository used for specific PHP versions.</p> <p>Depending on the version of Ubuntu you are using, a release specific repository URL should be used for the PPA. Select the tab applicable to your Ubuntu version and run the commands within.</p> Bionic 18.04Focal 20.04 <pre><code>echo \"deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main\" >> /etc/apt/sources.list.d/php.list\necho \"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu bionic main\" >> /etc/apt/sources.list.d/php.list\n</code></pre> <pre><code>echo \"deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main\" >> /etc/apt/sources.list.d/php.list\necho \"deb-src http://ppa.launchpad.net/ondrej/php/ubuntu focal main\" >> /etc/apt/sources.list.d/php.list\n</code></pre> <p>Next, we will have to download the new repositories GPG signing key and add it into our keychain</p> <pre><code>apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4F4EA0AAE5267A6C\n</code></pre> <p>With the new repository configured, update the package lists with:</p> <pre><code>apt-get update\n</code></pre> <p>Finally, install the required PHP packages with:</p> <pre><code>apt-get install libpng-dev libfreetype6-dev libjpeg-dev\napt-get install curl openssl zip php7.3-bz2 php7.3-cli php7.3-curl php7.3-dom php7.3-gd php7.3-gmp php7.3-intl php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-redis php7.3-zip\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#redis","title":"Redis","text":"<p>SeAT makes use of Redis as a cache and message broker for the Queue back end. Installing it is really easy. Do it with:</p> <pre><code>apt-get install redis-server\n</code></pre> <p>Hint</p> <p>By default, redis is making backup from its database - so it ensure integrity in case of failure. However, in certain condition, like power outage, this backup might be unprocessable and avoid redis to run.</p> <p>Since we don't store anything critical in it, you may want to disable this. To do so, edit the configuration file using <code>nano /etc/redis/redis.conf</code> and search line <code>appendonly no</code>, change it for <code>appendonly yes</code></p> <p>If you are on a small server, You may also want to limit the part of memory used by redis (by default, it will consume all available memory). To do so, into the redis configuration file, search line <code># maxmemory <bytes></code> and change it for <code>maxmemory xGB</code> where <code>x</code> is the memory limit you want to set.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#seat-installation","title":"SeAT Installation","text":""},{"location":"installation/old_versions/manual_installation_seat_4/#prerequisites","title":"Prerequisites","text":"<p>Excellent progress! All of the operating system level requirements are now met and we are almost ready to install SeAT itself. The only thing that is outstanding is the package manager called <code>composer</code> as well as the <code>git</code> client. The combination of <code>composer</code> and <code>git</code> will let us download the SeAT source code from Github and install it locally.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#git","title":"Git","text":"<p>Install <code>git</code> with:</p> <pre><code>apt-get install git\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#composer","title":"Composer","text":"<p>Next, install <code>composer</code> with:</p> <pre><code>curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && hash -r\n</code></pre> <p>Thats it. Lets install SeAT! By default, we suggest you run SeAT from within <code>/var/www/seat</code>. As part of the installation, the <code>seat</code> directory will be created for us, but we will need to create <code>/var/www</code> for now as we have not yet configured the web server.</p> <p>Create the <code>www</code> directory with:</p> <pre><code>mkdir -p /var/www\n</code></pre> <p>Next, <code>cd</code> to the new <code>/var/www</code> directory with:</p> <pre><code>cd /var/www\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#seat-download","title":"SeAT Download","text":"<p>With all of the prerequisites installed as well as our <code>www</code> directory ready we can finally download SeAT. Do that with:</p> <pre><code>composer create-project eveseat/seat --no-dev --no-interaction\n</code></pre> <p>Once the download is done, you should have seen output such as:</p> <pre><code>Writing lock file\nGenerating optimized autoload files\n> Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\n> @php artisan package:discover\nDiscovered Package: darkaonline/l5-swagger\nDiscovered Package: eveseat/api\nDiscovered Package: eveseat/console\nDiscovered Package: eveseat/eveapi\nDiscovered Package: eveseat/notifications\nDiscovered Package: eveseat/services\nDiscovered Package: eveseat/web\nPackage manifest generated successfully.\n> @php artisan key:generate\nApplication key [base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k=] set successfully.\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#permissions","title":"Permissions","text":"<p>You may have noticed a warning about <code>composer</code> running as <code>root</code>. For now this can be safely ignored. Post the installation of the SeAT source code, we need to fix up the permissions of the downloaded files. Do that with:</p> <pre><code>chown -R www-data:www-data /var/www/seat\nchmod -R guo+w /var/www/seat/storage/\n</code></pre> <p>This will ensure that the web server, cron jobs and workers have access to the source code as well as logs.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#seat-setup","title":"SeAT Setup","text":"<p>With SeAT downloaded, we need to configure it. There are a number of configuration tasks needed. These include editing the applications <code>.env</code> file as well as running some commands that setup and seed the database. A configuration value reference can be found here.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#env-setup","title":".env setup","text":"<p>The first task would be to configure the applications database connection. Open the file located at <code>/var/www/seat/.env</code> with something like <code>vi</code> or <code>nano</code> and update the database options with your values. Typically, only the password would really need to be updated. If you are making use of an existing database somewhere else over the network, update the applicable fields such as <code>DB_HOST</code> accordingly.</p> <pre><code>DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=seat\nDB_USERNAME=seat\nDB_PASSWORD=s_p3rs3c3r3tp455w0rd # <-- this is the value you probably need to edit.\nDB_DEBUG=false\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#database-migrations-and-seeds","title":"Database Migrations and Seeds","text":"<p>Next we need to publish the database migrations and web assets (such as JavaScript scripts and CSS Style sheets), run those migrations and finally seed the SeAT job schedule.</p> <p>Publish the assets and database migrations with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan vendor:publish --force --all'\n</code></pre> <p>Run the database migrations with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan migrate'\n</code></pre> <p>Seed the SeAT schedule with:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan db:seed --class=Seat\\\\Console\\\\database\\\\seeds\\\\ScheduleSeeder'\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#eve-sde-update","title":"EVE Sde Update","text":"<p>SeAT makes use of a number of tables from the EVE Static Data Exports. MySQL conversions of this data is available at https://www.fuzzwork.co.uk/dump/ and used in SeAT.</p> <p>To update to the latest SDE within SeAT, run:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan eve:update:sde'\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#supervisor","title":"Supervisor","text":"<p>The jobs ecosystem within SeAT requires a process supervisor to ensure that the job runner stays alive. The job runner itself is implemented using Laravel Horizon and is monitored using supervisord.</p> <p>To configure the Horizon process monitor, first install <code>supervisor</code>:</p> <pre><code>apt-get install supervisor\n</code></pre> <p>Next, we will create a dedicated configuration file which will ask supervisor to keep an eye on Horizon. This file will live in <code>/etc/supervisor/conf.d/seat.conf</code>. Create this file with its recommended configuration with:</p> <pre><code>cat > /etc/supervisor/conf.d/seat.conf << EOL\n[program:seat]\ncommand=/usr/bin/php /var/www/seat/artisan horizon\nprocess_name = %(program_name)s-80%(process_num)02d\nstdout_logfile = /var/log/seat-80%(process_num)02d.log\nstdout_logfile_maxbytes=100MB\nstdout_logfile_backups=10\nnumprocs=1\ndirectory=/var/www/seat\nstopwaitsecs=600\nuser=www-data\nEOL\n</code></pre> <p>Finally, reload supervisor to apply the new configuration with the following command:</p> <pre><code>systemctl restart supervisor.service\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#crontab","title":"Crontab","text":"<p>A crontab entry is needed for SeAT. While simple in implementation, this crontab entry simply helps the application invoke a job checker very minute. The actual schedule is stored within SeAT itself and managed entirely via the Web Interface.</p> <p>To configure the crontab entry required for SeAT, run the following commands:</p> <pre><code>echo '* * * * * php /var/www/seat/artisan schedule:run >> /dev/null 2>&1' > /tmp/seat-crontab.tmp\n</code></pre> <p>Next, add this crontab for the <code>www-data</code> user with:</p> <pre><code>crontab -u www-data /tmp/seat-crontab.tmp\n</code></pre> <p>If you want to confirm that the crontab successfully installed, you can check it with <code>crontab -u www-data -l</code>.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#web-server","title":"Web Server","text":"<p>Almost there!<p>You almost made it to the end! Just one more step.</p> </p> <p>The SeAT web interface requires a web server to serve the HTML goodies it has. We highly recommend you to use <code>nginx</code> and will be covered in this document. You don't have to use it, so if you prefer something else, feel free.</p>"},{"location":"installation/old_versions/manual_installation_seat_4/#nginx-install","title":"Nginx Install","text":"<p>Together with an <code>nginx</code> installation we also need to install <code>php-fpm</code> to handle the PHP execution for us. Let's install <code>nginx</code> and <code>php-fpm</code> with:</p> <pre><code>apt-get install nginx php7.3-fpm\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#nginx-configuration","title":"Nginx Configuration","text":"<p>With the webserver installed, we need to configure <code>nginx</code> to serve SeAT. For that, a configuration file needs to be created that will tell <code>nginx</code> where to find <code>php-fpm</code> as well as where the assets are for SeAT.</p> <p>The configuration file will live at <code>/etc/nginx/sites-available/seat</code>. It can be created with the following command:</p> <pre><code>cat > /etc/nginx/sites-available/seat << EOL\nserver {\n listen 80;\n listen [::]:80;\n # If you are hosting this instance on a domain, set that\n # name here.\n #server_name seat.yourdomain.com;\n # SeAT public directory. This is the only directory that\n # should be exposed by the webserver. If one has to expose\n # the parent directory then things like the .env file will\n # be available for anyone to download.\n root /var/www/seat/public;\n index index.php;\n location / {\n try_files \\$uri \\$uri/ /index.php?\\$query_string;\n }\n # PHP-FPM configuration.\n location ~ \\.php\\$ {\n try_files \\$uri /index.php =404;\n fastcgi_pass unix:/run/php/php7.3-fpm.sock;\n fastcgi_param SCRIPT_FILENAME \\$document_root\\$fastcgi_script_name;\n include fastcgi_params;\n }\n # Even though .htaccess rules mean nothing in the nginx\n # world, prevent those from being downloaded anyways.\n location ~ /\\.ht {\n deny all;\n }\n # In case someone messes up, prevent .env files from\n # being downloaded as well.\n location ~ /\\.env {\n deny all;\n }\n}\nEOL\n</code></pre> <p>Warning</p> <p>The code block above should not be copied directly into a file. It is a script and should be pasted directly into the linux terminal. It will create the nginx config for you. If you create the file yourself with the above content then the file will not be valid and you will receive errors from nginx.</p> <p>The configuration file as is at <code>/etc/nginx/sites-available/seat</code> itself won't be loaded by <code>nginx</code> yet. Storing configuration files in a <code>*sites-available*</code> directory is simply a convention used to allow administrators to quickly add & remove sites if needed. To apply the changes made by the new configuration file it needs to be symlinked to a <code>*sites-enabled*</code> directory.</p> <p>Let's symlink to the new configuration and drop the default one as a hardening exercise at the same time:</p> <pre><code>ln -s /etc/nginx/sites-available/seat /etc/nginx/sites-enabled/seat\nrm /etc/nginx/sites-enabled/default\n</code></pre> <p>Finally, reload <code>nginx</code> and <code>php-fpm</code> for the new changes to take affect:</p> <pre><code>systemctl restart nginx.service\nsystemctl restart php7.3-fpm.service\n</code></pre>"},{"location":"installation/old_versions/manual_installation_seat_4/#esi-configuration","title":"ESI Configuration","text":"<p>As mentioned at the start of the guide, it is necessary for you to configure ESI. For instructions how to do this, please refer to the ESI Setup Guide.</p> <p>Info</p> <p>You may want to serve your SeAT installation over SSL (using HTTPS) - which is a recommanded behavior. There are many way to do it, you can have a look on Let's Encrypt which provide you valid certificates for free. Put an eye to their Certbot Documentation.</p> <p>Success</p> <p>You made it! Use a browser and browse to the IP address / hostname of your server to access SeAT!</p>"},{"location":"upgrading/from_seat_1_0/","title":"From SeAT 1.0","text":""},{"location":"upgrading/from_seat_1_0/#seat-10-to-20","title":"SeAT 1.0 to 2.0","text":"<p>The upgrade path from SeAT 1.x to SeAT 2.0 requires some manual work. This is mainly due to the number of fundamental changes that were made in the SeAT 2.x release.</p>"},{"location":"upgrading/from_seat_1_0/#notes-on-the-upgrade","title":"Notes on the upgrade","text":"<p>The way SeAT is structured has not changed much since its version 1x days. The biggest change is a Laravel framework upgrade to version 5.3. This introduced a new base layout for the application which is why the manual upgrade is needed.</p> <p>The upgrade process has a large amount of database migrations that need to run so grab a coffee depending on how big your database is!</p>"},{"location":"upgrading/from_seat_1_0/#requirements","title":"Requirements","text":"<ul> <li>SeAT 2.0 requires PHP 7.0. At the time of writing this document, PHP 7.1 is not supported due to bug in PhealNG (the component SeAT uses to talk to the EVE API).</li> <li>MySQL 5.7 is recommended but not required.</li> <li>A database backup is an absolute must. Everything in SeAT can be recovered is some way or form except for your database. Make 100% sure you backed this up before proceeding with the upgrade!</li> <li>Take note of where SeAT is installed. This is usually in <code>/var/www/seat</code>.</li> </ul>"},{"location":"upgrading/from_seat_1_0/#upgrade-procedure","title":"Upgrade procedure","text":""},{"location":"upgrading/from_seat_1_0/#preparation","title":"Preparation","text":"<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely). Its therefore recommended that you start by putting SeAT into maintenance mode before starting the upgrade. Do this by running the following command in your SeAT path.</p> <pre><code>$ cd /var/www/seat\n$ php artisan down\n</code></pre> <p>You should see the message Application is now in maintenance mode..</p>"},{"location":"upgrading/from_seat_1_0/#backups","title":"Backups","text":"<ul> <li>Make a backup of your SeAT database and store it somewhere safe! Do not skip this step!</li> <li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all of your SeAT configuration. These values are needed to reconnect to the database once SeAT 2.0 is installed.</li> </ul>"},{"location":"upgrading/from_seat_1_0/#php-7","title":"Php 7","text":"<p>Install PHP7 if you don't have it already. You can check your PHP version by running <code>php -v</code>:</p> <pre><code>$ php -v\nPHP 7.0.14 (cli) (built: Dec 7 2016 10:25:25) ( NTS )\nCopyright (c) 1997-2016 The PHP Group\nZend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies\n</code></pre>"},{"location":"upgrading/from_seat_1_0/#get-the-new-code","title":"Get the new code","text":"<p>SeAT 2.0 can be installed in exactly the same place as where you had your v1.x installation. If you reuse this path then no webserver re-configuration will be needed. We will move the old installation out of the way, and install SeAT 2.0. To do this, run the following commands:</p> <ul> <li>First, move the old installation out of the way:</li> </ul> <pre><code>$ cd /var/www\n$ mv seat seat.old\n</code></pre> <p>You can double check that this was successful by running <code>ls</code> and ensuring that there is a folder named <code>seat.old</code> now.</p> <ul> <li>Next, get the new SeAT code by running <code>composer create-project eveseat/seat seat --no-dev</code>:</li> </ul> <pre><code>$ cd /var/www\n$ composer create-project eveseat/seat seat --no-dev\nInstalling eveseat/seat (2.0.0)\n- Installing eveseat/seat (2.0.0)\nLoading from cache\n\nCreated project in seat\n> php -r \"file_exists('.env') || copy('.env.example', '.env');\"\nLoading composer repositories with package information\nUpdating dependencies\n\n[ ... snip ... ]\n</code></pre>"},{"location":"upgrading/from_seat_1_0/#publish-the-assets","title":"Publish the assets","text":"<p>Next, we need to publish the new SeAT 2.0 CSS & Javascript and database migrations. This can be done with <code>php artisan vendor:publish --force</code>.</p>"},{"location":"upgrading/from_seat_1_0/#reconfigure-env-file","title":"Reconfigure <code>.env</code> file","text":"<p>With the new code ready to use, the next thing that is required is to reconnect the database. Remember that <code>.env</code> file you backed up earlier? Refer to it for the values needed in the newly installed env file that can be found at <code>/var/www/seat/.env</code>.</p> <p>Important keys to populate with the correct values are:</p> <pre><code>DB_HOST=\nDB_PORT=\nDB_DATABASE=\nDB_USERNAME=\nDB_PASSWORD=\n</code></pre> <p>SeAT 2.0 introduced new configuration items in the <code>.env</code> that you can review. There is also the option to configure Supervisor & SeAT integration, which can be done by following the admin guide titled SeAT & Supervisor Integration.</p>"},{"location":"upgrading/from_seat_1_0/#run-migrations","title":"Run migrations","text":"<p>With the database reconnected, its time to run the migrations for SeAT 2.0. This is the part that may take some time, depending on how big your database is.</p> <p>To run the migrations, make sure you are still in your seat path (<code>/var/www/seat</code>) and run <code>php artisan migrate</code>:</p> <pre><code>$ cd /var/www/seat\n$ php artisan migrate\n</code></pre> <p>You will see a bunch of messages and eventually your shell prompt again, indicating that it has completed. If you receive errors here, double check that you have entered the correct database settings in the <code>.env</code> file previously mentioned.</p>"},{"location":"upgrading/from_seat_1_0/#database-seeders","title":"Database seeders","text":"<p>With the database migration complete, its time to seed it with some of the static data SeAT needs. Do this with the following commands:</p> <pre><code>php artisan db:seed --class=Seat\\\\Notifications\\\\database\\\\seeds\\\\ScheduleSeeder\nphp artisan db:seed --class=Seat\\\\Services\\\\database\\\\seeds\\\\NotificationTypesSeeder\nphp artisan db:seed --class=Seat\\\\Services\\\\database\\\\seeds\\\\ScheduleSeeder\n</code></pre>"},{"location":"upgrading/from_seat_1_0/#update-worker-jobs","title":"Update worker jobs","text":"<p>The Laravel 5.3 upgrade in SeAT changed the way worker jobs are started. You can edit the command used to start a worker in your <code>seat.conf</code> file in supervisor. Normally, this file will be somewhere like in <code>/etc/supervisor/conf.d/</code>.</p> <p>The only line you really need to edit is the one that starts with <code>command</code>, replacing it with:</p> <pre><code>command=/usr/bin/php /var/www/seat/artisan queue:work --queue=high,medium,low,default --tries 1 --timeout=86100\n</code></pre> <p>A full block for SeAT 2.0 should therefore be:</p> <pre><code>[program:seat]\ncommand=/usr/bin/php /var/www/seat/artisan queue:work --queue=high,medium,low,default --tries 1 --timeout=86100\nprocess_name = %(program_name)s-80%(process_num)02d\nstdout_logfile = /var/log/seat-80%(process_num)02d.log\nstdout_logfile_maxbytes=100MB\nstdout_logfile_backups=10\nnumprocs=4\ndirectory=/var/www/seat\nstopwaitsecs=600\nuser=www-data\n</code></pre> <p>Note</p> <p>Keep in mind the <code>user</code> value and the path to <code>artisan</code> should be correct. Update them to the correct values of you made changes to the defaults. The <code>user</code> value differs many times based on Linux distribution too!</p>"},{"location":"upgrading/from_seat_1_0/#finishing-off","title":"Finishing off","text":"<p>With all of that done, bring your application back up with <code>php artisan up</code> and start the supervisor workers again. Watch the logs for any errors in case things have not gone as expected. If you need any help, feel free to join the Slack channel details in the Contact page on the left.</p>"},{"location":"upgrading/from_seat_2_0/","title":"From SeAT 2.0","text":""},{"location":"upgrading/from_seat_2_0/#seat-20-to-30","title":"SeAT 2.0 to 3.0","text":"<p>The upgrade path from SeAT 2.x to SeAT 3.0 requires some manual work. This is mainly due to the number of fundamental database changes that were made in SeAT 3.x.</p>"},{"location":"upgrading/from_seat_2_0/#notes-on-the-upgrade","title":"Notes on the upgrade","text":"<p>Most of the database has been revamped to match ESI models. Therefore, we can't offer you a simple update as we do for minor patches. However, once migrated, updates can be done as per usual.</p> <p>The process described bellow handles data conversion between the SeAT 2.x structure and SeAT 3.x one.</p>"},{"location":"upgrading/from_seat_2_0/#requirements","title":"Requirements","text":"<ul> <li>Check SeAT 3.0 Requirements</li> <li>A database backup is an absolute must. Everything in SeAT can be recovered is some way or form except for your database. Make 100% sure you backed this up before proceeding with the upgrade!</li> <li>Enough storage space to contains SeAT 2, SeAT 3, a backup of SeAT 2 database and a backup of SeAT 3 database.</li> <li>Take note of where SeAT 2 is installed. This is usually in <code>/var/www/seat</code>.</li> </ul>"},{"location":"upgrading/from_seat_2_0/#upgrade-procedure","title":"Upgrade procedure","text":""},{"location":"upgrading/from_seat_2_0/#preparation","title":"Preparation","text":"<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely). Its therefore recommended that you start by putting SeAT into maintenance mode before starting the upgrade. Do this by running the following command in your SeAT path. </p> <pre><code>php artisan down\n</code></pre> <p>If you are running this migration after CCP killed the XML API then there is probably no risk of the updaters doing anything useful anyways :D</p>"},{"location":"upgrading/from_seat_2_0/#backups","title":"Backups","text":"<ul> <li>Make a backup of your SeAT database and store it somewhere safe! Do not skip this step!</li> <li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all of your SeAT configuration. These values may be useful in case of failure.</li> </ul>"},{"location":"upgrading/from_seat_2_0/#installing-seat-30","title":"Installing SeAT 3.0","text":"<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat2</code>. You don't have to update any config since we will only use the command line for the process. <code>mv /var/www/seat /var/www/seat2</code></p> <p>Follow standard installation instructions for SeAT 3.0.</p> <p>Warning</p> <p>You need to keep the current SeAT 2.0 installed in order to migrate data to a newly installed 3.0 instance. It doesn't have to be reachable from internet though since we will only use the command line for the process.</p>"},{"location":"upgrading/from_seat_2_0/#installing-the-migrator-package-on-seat-20","title":"Installing the migrator package on SeAT 2.0","text":"<ul> <li>Move to your SeAT 2.0 installation directory (should be <code>/var/www/seat2</code> - unless you changed it)</li> <li>Add the package called <code>seat-migrator</code> using <code>composer require warlof/seat-migrator</code></li> <li>Edit the <code>app.php</code> file inside the <code>config</code> folder by appending <code>Warlof\\Seat\\Migrator\\MigratorServiceProvider::class,</code> to the end of <code>providers</code> array.</li> <li>Once done, publish the package files using <code>php artisan vendor:publish --force</code></li> <li>Run migration scripts with <code>php artisan migrate</code></li> <li>Finally, run <code>php artisan seat:migrator:upgrade</code> and follow the wizard</li> </ul> <p>At the end of the process, you will have most of your data transferred into the specified SeAT 3.0 database. Next, you can remove the seat2 directory with <code>rm -R /var/www/seat2</code> and the old database.</p> <p>Enjoy SeAT 3.0</p> <p>Note</p> <p>In case of any troubles, the migrator package did a backup before starting the migration process. The output is specified in the prompt while it is being done, but you will also find it in <code>/var/www/seat2/storage/backup</code>.</p>"},{"location":"upgrading/general/","title":"General","text":""},{"location":"upgrading/general/#general-upgrades","title":"General Upgrades","text":"<p>As with anything, it is a very good idea to have backups ready before attempting any upgrades. In the case of SeAT, the most important component needs to be backed up is the SeAT database. Should something go wrong, then you can simply re-install SeAT, restore the database, and you should be good to go.</p>"},{"location":"upgrading/general/#docker-installation","title":"Docker installation","text":"<p>As expected, updates for SeAT are deployed via images on the GitHub Container Registry. Every package version release will automatically start the build process to generate a new docker image. This means updates are super simple in the docker world. To update your instance, simply run:</p> SeAT 4.xSeAT 5.x - TraefikSeAT 5.x - Proxy <pre><code># Update to the latest dockerhub images\ndocker-compose pull\n\n# Take the stack down\ndocker-compose down\n\n# Bring the stack back up\ndocker-compose up -d\n\n# Cleanup any dangling images\ndocker image prune -f\n</code></pre> <pre><code># Update to the latest dockerhub images\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml pull\n\n# Take the stack down\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml down\n\n# Bring the stack back up\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d\n\n# Cleanup any dangling images\ndocker image prune -f\n</code></pre> <pre><code># Update to the latest dockerhub images\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml pull\n\n# Take the stack down\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml down\n\n# Bring the stack back up\ndocker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d\n\n# Cleanup any dangling images\ndocker image prune -f\n</code></pre> <p>Better safe then sorry</p> <p>Always perform a database backup of your database before doing an update. Always.</p>"},{"location":"upgrading/general/#blade-installation","title":"Blade installation","text":"<ul> <li>Ensure that you are in the path where you installed. By default this should be <code>/var/www/seat</code>.</li> <li>Cut jobs processing.</li> </ul> <pre><code>supervisorctl stop all\n</code></pre> <ul> <li>Put your application into maintenance mode. This will ensure that no request from the outside will hit your applications logic, and also help you perform an upgrade uninterrupted. Do this with:</li> </ul> <pre><code>php artisan down\n</code></pre> <ul> <li>Its a good thing to update <code>composer</code> itself. This is not a hard requirement, but definitely recommended. Do this with:</li> </ul> <pre><code>composer self-update\n</code></pre> <ul> <li>The next thing to do is get the latest SeAT packages. The below example adds the <code>--no-dev</code> argument as these packages are generally not needed in production. Upgrade the packages with:</li> </ul> <pre><code>composer update --no-dev\n</code></pre> <ul> <li>With the packages upgraded, we can now publish any new migrations/assets/configs. This can be done with:</li> </ul> <pre><code>php artisan vendor:publish --force --all\n</code></pre> <ul> <li>Once the needed files are published, run any new/outstanding migrations with:</li> </ul> <pre><code>php artisan migrate\n</code></pre> <ul> <li>With the migrations done, run the seeders to update any static data:</li> </ul> SeAT 4.xSeAT 5.x <pre><code>php artisan db:seed --class=Seat\\\\Console\\\\database\\\\seeds\\\\ScheduleSeeder\n</code></pre> <pre><code>php artisan db:seed --class=Seat\\\\Services\\\\Database\\\\Seeders\\\\PluginDatabaseSeeder\n</code></pre> <ul> <li>Finally, we can simply bring our application back out of maintenance mode with:</li> </ul> <pre><code>php artisan up\n</code></pre> <ul> <li>Prune job queue, this will prevent already queued jobs to use old codebase</li> </ul> <pre><code>php artisan cache:clear\n</code></pre> <ul> <li>Renew cached configuration and routes</li> </ul> <pre><code>php artisan config:cache\nphp artisan route:cache\n</code></pre> <ul> <li>Restart the supervisor workers to ensure they also pickup the latest code:</li> </ul> <pre><code>supervisorctl start all\n</code></pre> <p>Better safe then sorry</p> <p>Always perform a database backup of your database before doing an update. Always.</p> <p>You can use <code>mysqldump -uroot -p seat > backup.sql</code> (change root and seat according to your configuration)</p>"},{"location":"upgrading/from_seat_3_0/bare_metal/","title":"SeAT 3.0 to 4.0 (Bare metal)","text":"<p>The upgrade path from SeAT 3.0 to SeAT 4.0 requires some manual work. This is primarily due to large amounts of refactoring that made it into SeAT 4.</p> <p>Info</p> <p>Major changes have been made to the way packages workg together, especially the eveapi, web and services packages.</p> <p>The way jobs are queued and queues themselves have also changed, mostly to reduce resource usage and to improve fluency.</p> <p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 4. If you are unsure, join us on Slack so that we can tru and assist or redirect you to proper person.</p> <p>Warning</p> <p>Before you do anything, read and understand this entire upgrade guide.</p> <p>Those instructions are valid for bare metal deployment only (non-docker installation). Please refer to docker instructions for a Docker installation.</p> <p>Remember to do a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p>"},{"location":"upgrading/from_seat_3_0/bare_metal/#requirements","title":"Requirements","text":"<ul> <li>Check SeAT 4.0 requirements</li> <li>A database backup is an absolute must. Everything in SeAT can be recovered in some way or form except for your database.</li> <li>Enough storage space to have SeAT 3, SeAT 4 and a backup of your SeAT 3 database.</li> <li>Ensure all your SeAT 3 packages are up-to-date (check this in Settings > SeAT Settings)</li> </ul>"},{"location":"upgrading/from_seat_3_0/bare_metal/#upgrade-procedure","title":"Upgrade Procedure","text":""},{"location":"upgrading/from_seat_3_0/bare_metal/#preparation","title":"Preparation","text":"<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely) - or cause crash during database conversion. Please start to turning SeAT in maintenance mode, cutting jobs and clearing caches before starting the upgrade.</p> <p>Turn workers down, use the command</p> <pre><code>service supervisor stop\n</code></pre> <p>Put SeAT in maintenance mode</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan down'\n</code></pre> <p>Clear cache</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan seat:cache:clear'\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#backups","title":"Backups","text":"<ul> <li>Make a backup of your SeAT database and store it somewhere safe! Do no skip this step!</li> <li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all your SeAT configuration, including tokens watermark required to update your registered users content. These values might be useful in case of failure.</li> </ul>"},{"location":"upgrading/from_seat_3_0/bare_metal/#installing-seat-40","title":"Installing SeAT 4.0","text":"<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat3</code>. You don't have to update any config since we will only use the command line for the process.</p> <pre><code>mv /var/www/seat /var/www/seat3\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#php","title":"PHP","text":"<p>If it's not already the case, you'll have to deploy at least PHP 7.3 on the server. The provided command bellow will help you in this task and add newly required PHP extensions in the meantime.</p> <pre><code>apt-get update\napt-get install libpng-dev libfreetype6-dev libjpeg-dev\napt-get install curl openssl zip php7.3-bz2 php7.3-cli php7.3-curl php7.3-dom php7.3-gd php7.3-gmp php7.3-intl php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-redis php7.3-zip\n</code></pre> <p>Remember to update your NGinX configuration to use the new CGI version. To do so, open configuration file located at <code>/etc/nginx/sites-available/seat</code> and replace</p> <pre><code> fastcgi_pass unix:/run/php/php7.1-fpm.sock;\n</code></pre> <p>with</p> <pre><code> fastcgi_pass unix:/run/php/php7.3-fpm.sock;\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#seat","title":"SeAT","text":"<p>Once packages have been updated, we will deploy the new SeAT's version using composer.</p> <pre><code>composer create-project eveseat/seat /var/www/seat \"4.0.*\" --no-dev --no-interaction\n</code></pre> <p>Once the download is done, you should have seen output such as:</p> <pre><code>Writing lock file\nGenerating optimized autoload files\n> Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\n> @php artisan package:discover\nDiscovered Package: darkaonline/l5-swagger\nDiscovered Package: eveseat/api\nDiscovered Package: eveseat/console\nDiscovered Package: eveseat/eveapi\nDiscovered Package: eveseat/notifications\nDiscovered Package: eveseat/services\nDiscovered Package: eveseat/web\nPackage manifest generated successfully.\n> @php artisan key:generate\nApplication key [base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k=] set successfully.\n</code></pre> <p>Finally, fix directories permissions using the two commands bellow:</p> <pre><code>chown -R www-data:www-data /var/www/seat\nchmod -R guo+w /var/www/seat/storage/\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#setup","title":"Setup","text":"<p>Now sources have been deployed, we have to update <code>.env</code> configuration file. Use information from backup located at <code>/var/www/seat3/.env</code> to update the newly generated file located at <code>/var/www/seat/.env</code>.</p> <p>Info</p> <p>In case you had third party packages installed, it's time to deploy them back. We invite you to report to their own documentation regarding any specific guideline.</p> <p>Warning</p> <p>Please pay special attention to APP_KEY, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD, EVE_CLIENT_ID, EVE_CLIENT_SECRET and EVE_CALLBACK_URL parameters.</p>"},{"location":"upgrading/from_seat_3_0/bare_metal/#database","title":"Database","text":"<p>We will convert database to work with new SeAT version. To do so, we're using common commands disclosed bellow:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan vendor:publish --force --all'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan migrate'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan db:seed --class=Seat\\\\Console\\\\database\\\\seeds\\\\ScheduleSeeder'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan eve:update:sde --force'\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#complete","title":"Complete","text":"<p>Finally, restore workers states and put SeAT online using initial commands in reverse order.</p> <p>Put SeAT online</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan up'\n</code></pre> <p>Convert user tokens format from previous version</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan seat:token:upgrade'\n</code></pre> <p>Turn workers up</p> <pre><code>service supervisor start\n</code></pre>"},{"location":"upgrading/from_seat_3_0/bare_metal/#access","title":"Access","text":"<p>SeAT 4.0 is coming with a complete revamp of permissions system. As a result, your previous roles haven't been converted. However, they've been keep - so you can configure them with the new system.</p> <p>You will have to use built-in admin account for your first connexion.</p> <p>Info</p> <p>Super administrator is now an user flag and have to be defined at user level instead of Access Permissions. You'll get more information regarding the new system on Admin Login and Authorizations pages.</p>"},{"location":"upgrading/from_seat_3_0/docker/","title":"SeAT 3.0 to 4.0 (Docker)","text":"<p>The upgrade path from SeAT 3.0 to SeAT 4.0 requires some manual work. This is primarily due to large amounts of refactoring that made it into SeAT 4.</p> <p>Info</p> <p>Major changes have been made to the way packages workg together, especially the eveapi, web and services packages.</p> <p>The way jobs are queued and queues themselves have also changed, mostly to reduce resource usage and to improve fluency.</p> <p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 4. If you are unsure, join us on Slack so that we can tru and assist or redirect you to proper person.</p> <p>Warning</p> <p>Before you do anything, read and understand this entire upgrade guide.</p> <p>Those instructions are valid for Docker deployment only. Please refer to bare metal instructions for a non-docker installation.</p> <p>Remember to do make a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p>"},{"location":"upgrading/from_seat_3_0/docker/#requirements","title":"Requirements","text":"<ul> <li>Check SeAT 4.0 requirements</li> <li>A database backup is an absolute must. Everything in SeAT can be recovered in some way or form except for your database.</li> <li>Enough storage space to have SeAT 3, SeAT 4 and a backup of your SeAT 3 database.</li> <li>Ensure all your SeAT 3 packages are up-to-date (check this in Settings > SeAT Settings)</li> </ul>"},{"location":"upgrading/from_seat_3_0/docker/#docker-upgrade-procedure","title":"Docker Upgrade Procedure","text":"<p>If you are currently using a docker installation for SeAT 3, you are in for a treat because upgrading is super easy. All we are going to do is bring the v4 stack up, connect your database and watch as the Docker entrypoint takes care of the rest.</p> <p>This guide is going to step through some quick preparation steps, then perform the upgrade and finally, check that everything worked out as expected. Let's dive in.</p>"},{"location":"upgrading/from_seat_3_0/docker/#tldr-upgrades","title":"tl;dr upgrades","text":"<p>We highly reccomend that you read the details of this upgrade guide to get familiar with what has changed. But, if this is your nth upgrade, maybe you just want to get the summary of everything, so here it is:</p> <ul> <li>Make a backup of your database.</li> <li><code>cd</code> to your install dir (which is probably <code>/opt/seat-docker</code>) and bring the stack down with <code>docker-compose down</code></li> <li>Make a copy of your <code>.env</code> and <code>docker-compose.yml</code> files.</li> <li>Download the new <code>docker-compose.yml</code> file with <code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml -o docker-compose.yml</code>.</li> <li>Down the new <code>.env</code> file with <code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env -o .env</code>.</li> <li>Upgrade your <code>docker-compose</code> installation. It should be version <code>1.26</code> and up.</li> <li>Configure the new <code>.env</code> file. Important configs include the <code>TRAEFIK_</code> variables, the <code>SEAT_SUBDOMAIN</code> variable. Copy over existing values from your old <code>.env</code> file for the <code>EVE_CLIENT_</code> variables, the <code>APP_KEY</code> varaible and finally the <code>DB_</code> variables.</li> <li>Bring the stack back up with <code>docker-compose up -d</code> and watch the migration process.</li> <li>Finally, once the migration process is complete, update the EVE SDE to populate the tables with static data with: <code>docker-compose exec seat-web php artisan eve:update:sde --force -n</code></li> </ul> <p>\ud83c\udf89</p>"},{"location":"upgrading/from_seat_3_0/docker/#docker-changes-since-seat-3","title":"Docker changes since SeAT 3","text":"<p>A number of changes have been made how the docker-compose stack is glued together.</p> <p>First, the docker repository for SeAT 4 has a new home here, and a new image here.</p> <p>In SeAT 3, services such as web, workers and cron were all using seperate images. For SeAT 4, we have consilidated all of that into a single image, with a service-aware entrypoint. The code for all of this lives in a new dedicated repository instead of being \"hidden\" away in the script repo here. All of these changes also mean that we now have the ability to properly tag the docker images instead of relying on the <code>latest</code> tag like we did in SeAT 3. Finally.</p> <p>Next, the default <code>nginx</code> web server has been replaced with Traefik. For the majority of users this means little to no change to what you were used to. However, if you were fronting your instance with another reverse proxy, it is important to be aware of this change. The base image used for the SeAT docker image uses apache2 to serve the web UI, and Traefik reverse proxies to this, exposing it to the world. Advanced users can rip this out, expose the apache server directly and continue using the setup you have. The options are limitless.</p>"},{"location":"upgrading/from_seat_3_0/docker/#preperation","title":"Preperation","text":"<p>Before you upgrade, you need to backup.</p>"},{"location":"upgrading/from_seat_3_0/docker/#backup-your-database","title":"Backup your database","text":"<p>The single most important thing you need is a backup of your SeAT 3 database. Without a backup you will not be able to recover in case of a disaster. So, head on over to the docker db backup section and do that right now.</p>"},{"location":"upgrading/from_seat_3_0/docker/#backup-your-env-file","title":"Backup your env file","text":"<p>The <code>.env</code> file is the one that has your SeAT installations' configuration. It contains things like your SSO Client ID and Secret (aka: credentials). By default, SeAT docker installations live in <code>/opt/seat-docker</code> meaning your <code>.env</code> file will be at <code>/opt/seat-docker/.env</code>. Make a copy of this file and store it somewhere safe.</p>"},{"location":"upgrading/from_seat_3_0/docker/#upgrade-docker-compose","title":"Upgrade docker-compose","text":"<p>The <code>docker-compose</code> binary should be upgraded so that we can make use of <code>${VARIABLES}</code> inside <code>.env</code> files.</p> <p>If you installed <code>docker-compose</code> using your OS' package manager, upgrade the tool using that. Otherwise, a <code>curl</code> invocation to download the latest version should also work.</p> <pre><code>curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose\nchmod +x /usr/local/bin/docker-compose\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#stop-seat-3","title":"Stop SeAT 3","text":"<p>First, we need to stop the SeAT 3 stack. Assuming you have the default <code>/opt/seat-docker</code> location for your installation, cd to it first and then run:</p> <pre><code>docker-compose down\n</code></pre> <p>The output should be similar to this:</p> <pre><code>root@seat:/opt/seat-docker# docker-compose down\nStopping seat-nginx ... done\nStopping seat-cron ... done\nStopping seat-worker ... done\nStopping seat-app ... done\nStopping seat-mariadb ... done\nStopping seat-redis ... done\nRemoving seat-nginx ... done\nRemoving seat-cron ... done\nRemoving seat-worker ... done\nRemoving seat-app ... done\nRemoving seat-mariadb ... done\nRemoving seat-redis ... done\nRemoving network seat-docker_seat-network\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#upgrading-to-seat-4","title":"Upgrading to SeAT 4","text":""},{"location":"upgrading/from_seat_3_0/docker/#get-the-new-docker-compose-file","title":"Get the new docker-compose file","text":"<p>Warning</p> <p>If you have made customisations to how you deployed SeAT with docker-compose, then you should probably not be replacing the compose file like we are about to do. Instead, have a look at the new one here and adapt.</p> <p>Next, we will download the new SeAT 4 docker-compose file. Do that with:</p> <pre><code>mv docker-compose.yml docker-compose.yml.back\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml -o docker-compose.yml\n</code></pre> <p>With this we have created a copy of the older docker-compose file (just in case), and downloaded the new one.</p>"},{"location":"upgrading/from_seat_3_0/docker/#get-the-new-env-file","title":"Get the new .env file","text":"<p>The next step is to get a fresh copy of the new <code>.env</code> file to use together with the new docker-compose setup. There have been a number of changes to this file (primarily as a result of the web server swap out) which we will describe in the next section.</p> <p>Get it with:</p> <pre><code>mv .env .env.back\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env -o .env\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#configure-the-new-env-file","title":"Configure the new .env file","text":"<p>Info</p> <p>This is admitedly the hardest part of the migtation, so pay close attention. Take it slowly and think about what you are doing here.</p> <p>There are four main settings categories that need to be updated in the new <code>.env</code> file. Those are:</p> <ul> <li>Traefik (webserver)</li> <li>EVE Online SSO Config</li> <li>The application key</li> <li>Database credentials</li> </ul> <p>All of these categories will be described below in detail. For all of them, you have to open the newly downloaded <code>.env</code> file in a text editor and update the values. To be sure you are editing the correct file, check its header. It should say:</p> <pre><code># SeAT Docker Compose Configuration\n\n# Web server configuration.\n# SeAT running in a docker-compose setup ships with Traefik\n# as the default web server. You only need to configure the\n# parent domain and port where the web server will listen.\n# In most cases, just configuring the domain will be all\n# you need to do.\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#traefik","title":"Traefik","text":"<p>As mentioned earlier. The web server has been swapped out in favour of Traefik. As a result, you need to set a few configuration options to get the web UI to work. If you have a setup where you have configured something like <code>nginx</code> outside of your Docker installation, we highly reccomend you just remove that and switch over to Traefik. Of anything, it's handling of TLS with Let's Encrypt is quite literally a one-time setup and forget thing.</p> <p>Inside the <code>.env</code> file, Traefik specific configuration options are prefixed with <code>TRAEFIK_</code>. They are:</p> <pre><code>TRAEFIK_DOMAIN=seat.local\nTRAEFIK_HTTPS_PORT=443\nTRAEFIK_HTTP_PORT=80\nTRAEFIK_ACME_EMAIL=you@domain.com\n</code></pre> <p>These fields need to be updated as follows:</p> <ul> <li><code>TRAEFIK_DOMAIN</code>: This is the base domain where your SeAT installation lives. For example, if your SeAT 3 installation lives at seat.domain.com, you enter domain.com here.</li> <li><code>TRAEFIK_HTTPS_PORT</code>: This is the external port that will be open to the world. SeAT 4 in docker with Traefik will only listen on TLS as well. Since its configured to be <code>443</code>, it will most likely clash with your external web server. We reccomend that you just disable your external web server and use Traefik. TLS configuration with it is a breeze!</li> <li><code>TRAEFIK_HTTPS_PORT</code>: This is the non-TLS port that Let's Encrypt (as part of the ACME protocol) will connect to during certificate renewals. SeAT will not be available here.</li> <li><code>TRAEFIK_ACME_EMAIL</code>: The email address used for Let's Encrypt certificate renewals.</li> </ul> <p>A <code>SEAT_SUBDOMAIN</code> value is also present, which sets the subdomain where the SeAT web UI lives. This value needs to match what your SeAT 3 installation used, especially so that the existing SSO application you have configured on the EVE SSO portal matches the configured callback url.</p> <p>By default, most folks will only configure the domain, subdomain and email and be done. Of course, if you have custom configurations and needs, feel free to adapt.</p>"},{"location":"upgrading/from_seat_3_0/docker/#traefik-tls","title":"Traefik - TLS","text":"<p>Traefik should handle all of the relevant configuration to get your site to listen with a valid TLS certificate. The secrets for the TLS configuration in Traefik relies on an <code>acme.json</code> file which you should mount into the Traefik container from the outside so that it persists restart.</p> <p>Prepare the json file from within <code>/opt/seat-docker</code> with:</p> <pre><code>mkdir acme\ntouch acme/acme.json\nchmod 600 acme/acme.json\n</code></pre> <p>Next, make sure you have the <code>TRAEFIK_ACME_EMAIL</code> variable set, and finally, uncomment the labels that will make use of the Let's Encrypt cert resolver in the <code>docker-compose.yml</code> file. By default, they will look like this, whereby you need to remove the <code>#</code> in front.</p> <p>(Note: the line below in <code>docker-compose.yml</code> is located in two places, only remove the <code>#</code> from seat-web)</p> <pre><code>#- \"traefik.http.routers.seat-web.tls.certResolver=primary\"\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#eve-online-sso","title":"EVE Online SSO","text":"<p>Since SeAT's authentication relies on EVE's SSO, you need to configure the relevant client id and secret. You can find your old values in the backup you have made of the <code>.env</code> file. The values you need to set are:</p> <ul> <li><code>EVE_CLIENT_ID</code></li> <li><code>EVE_CLIENT_SECRET</code></li> </ul> <p>For the callback URL, ensure that you have correctly configured the <code>SEAT_SUBDOMAIN</code> value in the previous step.</p>"},{"location":"upgrading/from_seat_3_0/docker/#the-seat-application-key","title":"The SeAT Application Key","text":"<p>By default, the <code>APP_KEY</code> value for a fresh <code>.env</code> file will be <code>insecure</code>. This is a purposefully incorrectly formatted value. You can simply set this to the value you have for the same variable in your backup <code>.env</code> file.</p>"},{"location":"upgrading/from_seat_3_0/docker/#database-details","title":"Database details","text":"<p>This is one of the more important steps. The database configuration needs to match what your SeAT 3 installation used because the database data lives in a docker volume. When the stack will start up for the first time again, the SeAT 4 container will have access to the SeAT 3 database volume, and run migrations there. So, you need to copy the database credentials from the old <code>.env</code> file to the new one.</p> <p>The variable names have remained unchanged, but for referece they are:</p> <pre><code>DB_DATABASE=seat\nDB_USERNAME=seat\nDB_HOST=mariadb\nDB_PASSWORD=i_should_be_changed\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#bringing-seat-4-up","title":"Bringing SeAT 4 up","text":"<p>The only thing that is left to do is to start the stack up again. The first time we are goin to start SeAT 4 we wont use the <code>-d</code> flag. This is just so that you can see what's happening during the upgrade procedure. So, start SeAT with:</p> <pre><code>docker-compose up\n</code></pre> <p>You should see something like this happen when you run the above command:</p> <pre><code>root@seat:/opt/seat-docker# docker-compose up\nCreating network \"seat-docker_seat-network\" with the default driver\nPulling mariadb (mariadb:10)...\n10: Pulling from library/mariadb\n3ff22d22a855: Already exists\ne7cb79d19722: Already exists\n323d0d660b6a: Already exists\n\n...\n</code></pre> <p>After a while, migrations should start running:</p> <pre><code>...\n\nseat-web_1 | starting web service\nseat-web_1 | Starting first run routines\nseat-web_1 | Migrating: 2018_06_05_110000_drop_assets_from_outposts\nseat-web_1 | Migrated: 2018_06_05_110000_drop_assets_from_outposts (0.02 seconds)\nseat-web_1 | Migrating: 2019_02_09_110731_drop_type_from_notification_groups\nseat-web_1 | Migrated: 2019_02_09_110731_drop_type_from_notification_groups (0.01 seconds)\nseat-web_1 | Migrating: 2019_05_11_164831_add_permission_role_filter\n\n...\n</code></pre> <p>Warning</p> <p>Do not interrupt the database migration phase. It will leave your database in a potentially corrupt state, meaning you are going to have to do some extra pluming to get a backup restored. Not a train smash, but not worth it.</p> <p>Be patient, there are many, many database changes that need to apply.</p> <p>Eventually, when everything is done you should start seeing the following output:</p> <pre><code>seat-worker_1 | [2020-08-19 21:11:45][2] Processing: Seat\\Eveapi\\Jobs\\Status\\Status\nseat-worker_1 | [2020-08-19 21:11:45][1] Processing: Seat\\Eveapi\\Jobs\\Status\\Esi\nseat-worker_1 | [2020-08-19 21:11:46][2] Processed: Seat\\Eveapi\\Jobs\\Status\\Status\nseat-worker_1 | [2020-08-19 21:11:46][1] Processed: Seat\\Eveapi\\Jobs\\Status\\Esi\n</code></pre> <p>This is a good sign, and means everything is now ready!</p>"},{"location":"upgrading/from_seat_3_0/docker/#check-your-installation","title":"Check your installation","text":"<p>The first obvious step will be to check that you can access the web UI. If not, something is probably weird with the web server configuration and needs some tweaking.</p> <p>If everything seems to be working fine, you can hit <code>crtl + c</code> which will bring the stack down gracefully.</p> <pre><code>^CGracefully stopping... (press Ctrl+C again to force)\nStopping seat-docker_seat-cron_1 ...\nStopping seat-docker_seat-worker_1 ...\nStopping seat-docker_seat-web_1 ...\nStopping seat-docker_traefik_1 ... done\nStopping seat-docker_redis_1 ...\n</code></pre> <p>Then, bring it back up with the <code>-d</code> flag.</p> <pre><code>docker-compose up -d\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#convert-user-tokens","title":"Convert User Tokens","text":"<p>SeAT 4.x is using the new CCP Token format (v2). In order to use registered tokens from your previous installation, you'll have to run the following command:</p> <pre><code>docker-compose exec seat-web php artisan seat:token:upgrade\n</code></pre>"},{"location":"upgrading/from_seat_3_0/docker/#update-eve-sde","title":"Update EVE SDE","text":"<p>This is the final step, for real. You need to update the EVE SDE. With your stack up and running (after executing <code>docker-compose up -d</code>), you can now force an SDE update with:</p> <pre><code>docker-compose exec seat-web php artisan eve:update:sde --force -n\n</code></pre> <p>Congrats, and welcome to SeAT 4!</p> <p>Info</p> <p>Super administrator is now an user flag and have to be defined at user level instead of Access Permissions. You'll get more information regarding the new system on Admin Login and Authorizations pages.</p>"},{"location":"upgrading/from_seat_4_0/bare_metal/","title":"SeAT 4.x to 5.0 (Bare metal)","text":"<p>The upgrade path from SeAT 4.0 to SeAT 5.0 requires a tiny amount of manual work.</p> <p>Warning</p> <p>Before you do anything, read and understand this entire upgrade guide.</p> <p>Those instructions are valid for bare metal deployment only (non-docker installation). Please refer to docker instructions for a Docker installation.</p> <p>Remember to do a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p> <p>Info</p> <p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 5. If you are unsure, join us on Discord so that we can assist or redirect you to the proper person.</p>"},{"location":"upgrading/from_seat_4_0/bare_metal/#requirements","title":"Requirements","text":"<ul> <li>Check [SeAT 5.0 requirements]</li> <li>A database backup is an absolute must. Everything in SeAT can be recovered in some way or form except for your database.</li> <li>Enough storage space to have SeAT 5, SeAT 4 and a backup of your SeAT 4 database.</li> <li>Ensure all your SeAT 4 packages are up-to-date (check this in Settings > SeAT Settings)</li> </ul>"},{"location":"upgrading/from_seat_4_0/bare_metal/#upgrade-procedure","title":"Upgrade Procedure","text":""},{"location":"upgrading/from_seat_4_0/bare_metal/#preparation","title":"Preparation","text":"<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely) - or cause crash during database conversion. Please start to turning SeAT in maintenance mode, cutting jobs and clearing caches before starting the upgrade.</p> <p>Turn workers down, use the command</p> <pre><code>systemctl stop supervisor.service\n</code></pre> <p>Put SeAT in maintenance mode</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan down'\n</code></pre> <p>Clear cache</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan seat:cache:clear'\n</code></pre>"},{"location":"upgrading/from_seat_4_0/bare_metal/#backups","title":"Backups","text":"<ul> <li>Make a backup of your SeAT database and store it somewhere safe! Do no skip this step!</li> <li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all your SeAT configuration, including the keys to the ESI tokens required to update your registered users content. These values might be useful in case of failure.</li> </ul>"},{"location":"upgrading/from_seat_4_0/bare_metal/#installing-seat-50","title":"Installing SeAT 5.0","text":"<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat4</code>. You don't have to update any config since we will only use the command line for the process.</p> <pre><code>mv /var/www/seat /var/www/seat4\n</code></pre>"},{"location":"upgrading/from_seat_4_0/bare_metal/#php","title":"PHP","text":"<p>SeAT 5 needs PHP 8.2 on the server. The provided command bellow will help you in this task and add newly required PHP extensions in the meantime.</p> <pre><code>apt-get update\napt-get install libpng-dev libfreetype6-dev libjpeg-dev\napt-get install openssl zip php8.2-fpm php8.2-bz2 php8.2-cli php8.2-curl php8.2-dom php8.2-gd php8.2-gmp php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-redis php8.2-zip\n</code></pre> <p>Remember to update your NGinX configuration to use the new CGI version. To do so, open configuration file located at <code>/etc/nginx/sites-available/seat</code> and replace</p> <pre><code>fastcgi_pass unix:/run/php/php7.3-fpm.sock;\n</code></pre> <p>with</p> <pre><code>fastcgi_pass unix:/run/php/php8.2-fpm.sock;\n</code></pre> <p>Restart nginx to load the changes:</p> <pre><code>systemctl restart nginx.service\n</code></pre>"},{"location":"upgrading/from_seat_4_0/bare_metal/#seat","title":"SeAT","text":"<p>Once packages have been updated, we will deploy the new SeAT's version using composer.</p> <pre><code>composer create-project eveseat/seat /var/www/seat \"5.0\" --no-dev --no-interaction\n</code></pre> <p>Once the download is done, you should have seen output such as:</p> <pre><code>76 packages you are using are looking for funding.\nUse the `composer fund` command to find out more!\n> @php artisan vendor:publish --tag=laravel-assets --ansi --force\n\nINFO Publishing [laravel-assets] assets. Copying directory [vendor/laravel/horizon/public] to [public/vendor/horizon] DONE\n Copying directory [vendor/opcodesio/log-viewer/public] to [public/vendor/log-viewer] DONE\n\nNo security vulnerability advisories found.\n> @php artisan key:generate --ansi\n\nINFO Application key set successfully. </code></pre> <p>Finally, fix directories permissions using the two commands bellow:</p> <pre><code>chown -R www-data:www-data /var/www/seat\nchmod -R guo+w /var/www/seat/storage/\n</code></pre>"},{"location":"upgrading/from_seat_4_0/bare_metal/#setup","title":"Setup","text":"<p>Now sources have been deployed, we have to update <code>.env</code> configuration file. Use information from backup located at <code>/var/www/seat4/.env</code> to update the newly generated file located at<code>/var/www/seat/.env</code>.</p> <p>Info</p> <p>In case you had third party packages installed, it's time to deploy them back. We invite you to report to their own documentation regarding any specific guideline.</p> <p>Warning</p> <p>Please pay special attention to APP_KEY, APP_URL, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD, EVE_CLIENT_ID, EVE_CLIENT_SECRET and EVE_CALLBACK_URL parameters.</p>"},{"location":"upgrading/from_seat_4_0/bare_metal/#database","title":"Database","text":"<p>We will convert database to work with new SeAT version. To do so, we're using common commands disclosed bellow:</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan vendor:publish --force --all'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan migrate'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan db:seed --class=Seat\\\\Services\\\\Database\\\\Seeders\\\\PluginDatabaseSeeder'\nsudo -H -u www-data bash -c 'php /var/www/seat/artisan eve:update:sde --force'\n</code></pre>"},{"location":"upgrading/from_seat_4_0/bare_metal/#complete","title":"Complete","text":"<p>Finally, restore workers states and put SeAT online using initial commands in reverse order.</p> <p>Put SeAT online</p> <pre><code>sudo -H -u www-data bash -c 'php /var/www/seat/artisan up'\n</code></pre> <p>Turn workers up</p> <pre><code>systemctl start supervisor.service\n</code></pre>"},{"location":"upgrading/from_seat_4_0/docker/","title":"SeAT 4.x to 5.0 (Docker)","text":"<p>The upgrade path from SeAT 4.0 to SeAT 5.0 requires a tiny amount of manual work.</p> <p>Info</p> <p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 5. A compatibility table can be found on the Community Packages page. If you are unsure, join us on Discord so that we can tru and assist or redirect you to proper person.</p> <p>Users of recursivetree/seat-info need to follow separate instructions after the migrating the core to seat 5.</p> <p>Warning</p> <p>Before you do anything, read and understand this entire upgrade guide.</p> <p>Those instructions are valid for Docker deployment only. Please refer to bare metal instructions for a non-docker installation.</p> <p>Remember to do make a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p>"},{"location":"upgrading/from_seat_4_0/docker/#requirements","title":"Requirements","text":"<ul> <li>A database backup is an absolute must. Everything in SeAT can be recovered in some way or form except for your database.</li> <li>Enough storage space to have SeAT 4, SeAT 5 and a backup of your SeAT 4 database.</li> <li>Ensure all your SeAT 4 packages are up-to-date (check this in Settings > SeAT Settings)</li> </ul>"},{"location":"upgrading/from_seat_4_0/docker/#docker-upgrade-procedure","title":"Docker Upgrade Procedure","text":"<p>If you are currently using a docker installation for SeAT 4, upgrading is easy as never before. You need to make a few changes to your docker stack configuration, restart the stack, and you're good to go.</p> <p>This guide is going to step through some quick preparation steps, then perform the upgrade and finally, check that everything worked out as expected. Let's dive in.</p>"},{"location":"upgrading/from_seat_4_0/docker/#tldr-upgrades","title":"tl;dr upgrades","text":"<p>We highly recommend that you read the details of this upgrade guide to get familiar with what has changed. But, if this is your nth upgrade, maybe you just want to get the summary of everything, so here it is:</p> <ul> <li>Make a backup of your database.</li> <li><code>cd</code> to your install dir (which is probably <code>/opt/seat-docker</code>) and bring the stack down with <pre><code>docker compose down\n</code></pre></li> <li>Make a copy of your <code>.env</code> file using <pre><code>cp .env .env.seat4.bak\n</code></pre></li> <li>Make a copy of your current compose file using <pre><code>cp docker-compose.yml docker-compose.yml.seat4.bak\n</code></pre></li> <li>Download the new <code>docker-compose.yml</code> file with <pre><code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.yml -o docker-compose.yml`\n</code></pre></li> <li>Download the new database override <code>docker-compose.mariadb.yml</code> file with <pre><code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.mariadb.yml -o docker-compose.mariadb.yml\n</code></pre></li> <li>Download the new traefik override <code>docker-compose.traefik.yml</code> file with <pre><code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.traefik.yml -o docker-compose.traefik.yml\n</code></pre></li> <li>Download the new proxy override <code>docker-compose.proxy.yml</code> file with <pre><code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.proxy.yml -o docker-compose.proxy.yml\n</code></pre></li> <li>If you are using a custom stylesheet, open your <code>docker-compose.override.yml</code> file and replace the container name <code>seat-web</code> with <code>front</code>.</li> <li>Download the new <code>.env</code> file template using <pre><code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/.env -o .env\n</code></pre></li> <li>Update the new <code>.env</code> file using your backup <code>.env.seat4.bak</code> </li> </ul> <p>The table bellow is provided as a variable mapping between SeAT 4.x and SeAT 5.x. You can use it as a reference.</p> SeAT 4.x SeAT 5.x <code>TRAEFIK_DOMAIN=seat.local</code> <code>SEAT_DOMAIN=seat.seat.local</code> <code>SEAT_SUBDOMAIN=seat</code> <code>SEAT_DOMAIN=seat.seat.local</code> <code>REDIS_HOST=redis</code> <code>REDIS_HOST=cache</code> <code>PROXY_BACKEND_HTTP_PORT=8080</code> <code>LOG_LEVEL=error</code> <p>Info</p> <p>With SeAT 5.x, there is non longer default database and proxy. You can mix services are your needs. However, we continue to provide a few default layout usable out of the box as an option.</p> Using TraefikUsing reverse proxy <p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up</code></p> <p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up</code></p> <p>Since we didn't startup the stack using daemon mode - the overall migration and process is run at front. This will allow you to detect any issue without having a container running in panic mode. When SeAT will be ready to serve your requests and have successfully been upgrade, you'll see the following output :</p> <pre><code>2023-06-02 09:49:33 ****//////////// \n2023-06-02 09:49:33 *** /// \n2023-06-02 09:49:33 *** // \n2023-06-02 09:49:33 ** ** // /// // \n2023-06-02 09:49:33 ** *** /// // ////////@@@@@@@@@@@@@@@(/////@@@//////////\n2023-06-02 09:49:33 **/ /// ///////// *///&@@@@@@@&/////#@@@@%//%///#@@@@@(///@ \n2023-06-02 09:49:33 ** *** //////// / @///////@@///@@@///@@@///@@///@@@@@(///@ \n2023-06-02 09:49:33 ** *** /// // // @@@@@////@/////////@@//////////@@@@(///@ \n2023-06-02 09:49:33 ** /// // / // *////////@@@///////@@///@@@@@@///@@@(///@ \n2023-06-02 09:49:33 *** //// /// /// \n2023-06-02 09:49:33 *** /// \n2023-06-02 09:49:33 ****////////////\n2023-06-02 09:49:33 \n2023-06-02 09:49:33 \n2023-06-02 09:49:33 SeAT is now ready to serve requests\n2023-06-02 09:49:33 \n2023-06-02 09:49:33 Open your browser and go to 'https://seat.domain.tld'\n2023-06-02 09:49:33 Run 'docker compose exec front php artisan seat:admin:login' to get a temporary link in order to sign-in as built-in admin user account (or use bellow one)\n2023-06-02 09:49:33 \n2023-06-02 09:49:33 SeAT Admin Login URL Generator\n2023-06-02 09:49:33 Checking if 'admin' is a super user\n2023-06-02 09:49:33 Generating authentication token\n2023-06-02 09:49:33 \n2023-06-02 09:49:33 Your authentication URL is valid for 60 seconds.\n2023-06-02 09:49:33 https://seat.domain.tld/auth/login/admin/aDvMAcd7GQPXFfhS3aIH9dh4opwcvASB\n2023-06-02 09:49:33 \n2023-06-02 09:49:33 \n2023-06-02 09:49:33 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message\n2023-06-02 09:49:33 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message\n2023-06-02 09:49:33 [Fri Jun 02 07:49:33.524019 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.56 (Debian) PHP/8.2.6 configured -- resuming normal operations\n2023-06-02 09:49:33 [Fri Jun 02 07:49:33.524084 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'\n</code></pre> <p>Try to authenticate yourself and verify everything is working well. If you don't find any issue, you can now restart the stack in daemon mode \ud83c\udf89.</p> <p>Use Ctrl+C in order to kill the stack and restart it in background:</p> Using TraefikUsing reverse proxy <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up\n</code></pre> <pre><code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up\n</code></pre>"},{"location":"upgrading/from_seat_4_0/docker/#docker-changes-since-seat-4","title":"Docker changes since SeAT 4","text":"<p>There have been a few minor changes to the <code>docker-compose.yml</code> file. Most notably, the containers have been renamed to disclose their purpose easier, we have moved from Dockerhub to GitHub Container Registry, and the stack now has a persistent storage volume.</p> <p>If you customized your docker stack deployment, it is recommended that you take a look at the new <code>docker-compose.yml</code> file yourselves to see what exactly changed. Last but not least, try to avoid tuning standard files as must as possible and use override syntax instead with a <code>docker-compose.override.yml</code> file (see official documentation).</p>"},{"location":"upgrading/from_seat_4_0/docker/#preperation","title":"Preperation","text":"<p>Before you upgrade, you need to backup.</p>"},{"location":"upgrading/from_seat_4_0/docker/#backup-your-database","title":"Backup your database","text":"<p>The single most important thing you need is a backup of your SeAT 4 database. Without a backup you will not be able to recover in case of a disaster. So, head on over to the docker db backup section and do that right now.</p>"},{"location":"upgrading/from_seat_4_0/docker/#backup-your-env-file","title":"Backup your env file","text":"<p>The <code>.env</code> file is the one that has your SeAT installations' configuration. It contains things like your SSO Client ID and Secret (aka: credentials). By default, SeAT docker installations live in <code>/opt/seat-docker</code> meaning your <code>.env</code> file will be at <code>/opt/seat-docker/.env</code>. Make a copy of this file and store it somewhere safe.</p>"},{"location":"upgrading/from_seat_4_0/docker/#stop-seat-4","title":"Stop SeAT 4","text":"<p>First, we need to stop the SeAT 4 stack. Assuming you have the default <code>/opt/seat-docker</code> location for your installation, cd to it first and then run:</p> <pre><code>docker compose down\n</code></pre> <p>The output should be similar to this:</p> <pre><code>root@seat:/opt/seat-docker# docker compose down\nStopping seat-web ... done\nStopping seat-cron ... done\nStopping seat-worker ... done\nRemoving seat-traefik ... done\nStopping seat-mariadb ... done\nStopping seat-redis ... done\nRemoving seat-web ... done\nRemoving seat-cron ... done\nRemoving seat-worker ... done\nRemoving seat-traefik ... done\nRemoving seat-mariadb ... done\nRemoving seat-redis ... done\nRemoving network seat-docker_seat-network\n</code></pre>"},{"location":"upgrading/from_seat_4_0/docker/#upgrading-to-seat-5","title":"Upgrading to SeAT 5","text":""},{"location":"upgrading/from_seat_4_0/docker/#get-the-new-docker-compose-files","title":"Get the new docker-compose files","text":"<p>Warning</p> <p>If you have made customisations to how you deployed SeAT with docker-compose, then you should probably not </p> <p>be replacing the compose file like we are about to do. Instead, have a look at the new one here and adapt.</p> <p>Next, we will download the new SeAT 5 docker-compose files. Do that with:</p> <pre><code>mv docker-compose.yml docker-compose.yml.seat4.bak\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.yml -o docker-compose.yml\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.mariadb.yml -o docker-compose.mariadb.yml\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.traefik.yml -o docker-compose.traefik.yml\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.proxy.yml -o docker-compose.proxy.yml\n</code></pre> <p>With this we have created a copy of the older docker-compose file (just in case), and downloaded the new one.</p>"},{"location":"upgrading/from_seat_4_0/docker/#updating-custom-styles","title":"Updating custom styles","text":"<p>If you've customized the appearance of seat using this guide, follow these additional steps. Otherwise, skip to the next section and update your <code>.env</code> file.</p> <p>Open your <code>docker-compose.override.yml</code> file using nano: <pre><code>nano docker-compose.override.yml\n</code></pre></p> <p>Go to the following line that says <code>seat-web</code>: <pre><code> services:\nseat-web: # <--- Here\nvolumes:\n</code></pre></p> <p>Update the line to say <code>front</code> instead of <code>seat-web</code>: <pre><code> services:\nfront: # <--- Here\nvolumes:\n</code></pre> It is important to keep the indentation as it is.</p> <p>Exit using Control-X and type <code>y</code> for yes when asked whether you want to save the changes.</p>"},{"location":"upgrading/from_seat_4_0/docker/#update-the-env-file","title":"Update the .env file","text":"<p>This is one of the more important steps. The database configuration needs to be updated.</p> <p>The easier is probably to download the new template and adapt variables according to your previous configuration as some of them have been removed, newest appeared and overall have been reordered.</p> <pre><code>mv .env .env.seat4.bak\ncurl -L https://raw.githubusercontent.com/eveseat/seat-docker/master/.env -o .env\n</code></pre> <p>You can refer at any time to the online version of <code>.env</code> file on GitHub The table bellow is provided as a variable mapping between SeAT 4.x and SeAT 5.x. You can use it as a reference.</p> SeAT 4.x SeAT 5.x <code>TRAEFIK_DOMAIN=seat.local</code> <code>SEAT_DOMAIN=seat.seat.local</code> <code>SEAT_SUBDOMAIN=seat</code> <code>SEAT_DOMAIN=seat.seat.local</code> <code>REDIS_HOST=redis</code> <code>REDIS_HOST=cache</code> <code>PROXY_BACKEND_HTTP_PORT=8080</code> <code>LOG_LEVEL=error</code>"},{"location":"upgrading/from_seat_4_0/docker/#bringing-seat-5-up","title":"Bringing SeAT 5 up","text":"<p>The only thing that is left to do is to start the stack up again. The first time we are going to start SeAT 5 we won't use the <code>-d</code> flag. This is just so that you can see what's happening during the upgrade procedure. So, start SeAT with:</p> Using TraefikUsing reverse proxy <p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up</code></p> <p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up</code></p> <p>You should first see some download progress bars downloading the new SeAT version.</p> <p>After a while, seat should start up similar to this:</p> <pre><code>...\n\nseat_local-front-1 | mysqld is alive\nseat_local-front-1 | PONG\nseat_local-front-1 | starting web service\nseat_local-front-1 | Processing plugins from SEAT_PLUGINS\nseat_local-front-1 | Loading composer repositories with package information\nseat_local-front-1 | Info from https://repo.packagist.org: #StandWithUkraine\nseat_local-front-1 | Updating dependencies\n...\n</code></pre> <p>Warning</p> <p>Do not interrupt SeAT during this phase. It will leave your database in a potentially corrupt state, meaning you are going to have to do some extra pluming to get a backup restored. Not a train smash, but not worth it.</p> <p>Eventually, when everything is done you should start seeing the following output:</p> <pre><code>seat_local-front-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.25.0.5. Set the 'ServerName' directive globally to suppress this message\nseat_local-front-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.25.0.5. Set the 'ServerName' directive globally to suppress this message\nseat_local-front-1 | [Sun May 21 21:10:46.869842 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.56 (Debian) PHP/8.1.19 configured -- resuming normal operations\nseat_local-front-1 | [Sun May 21 21:10:46.869944 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'\n</code></pre> <p>This is a good sign, and means everything is now ready!</p>"},{"location":"upgrading/from_seat_4_0/docker/#check-your-installation","title":"Check your installation","text":"<p>The first obvious step will be to check that you can access the web UI. If not, something is probably weird with the web server configuration and needs some tweaking.</p> <p>If everything seems to be working fine, you can hit ++crtl+c++ which will bring the stack down gracefully. This might take up to 30 seconds.</p> <pre><code>^CGracefully stopping... (press Ctrl+C again to force)\nStopping seat-docker_scheduler_1 ...\nStopping seat-docker_worker_1 ...\nStopping seat-docker_front_1 ...\nStopping seat-docker_traefik_1 ... done\nStopping seat-docker_cache_1 ...\n</code></pre> <p>Then, bring it back up with the <code>-d</code> flag.</p> Using TraefikUsing reverse proxy <p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d</code></p> <p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d</code></p> <p>Congrats, and welcome to SeAT 5!</p>"},{"location":"upgrading/from_seat_4_0/docker/#problems","title":"Problems","text":"<p>Should you have any issue with the installation, please contact us on Discord.</p>"},{"location":"user_guides/moons_reporter/","title":"Moons Reporter","text":""},{"location":"user_guides/moons_reporter/#moons-reporter","title":"Moons Reporter","text":"<p>Introduced in SeAT 4.0, a new tool is available to assist you in your moon management task by leveraging your intelligence desk. Like your old google/excel sheet, it will gather all your intel related to moon probing. It provides a centralized and convenient way to store reports and search through them.</p> <p>Of course, like other modules, you are able to restrict its usage using ACL by choosing who can view it and/or import reports.</p> <p></p>"},{"location":"user_guides/moons_reporter/#importing-reports","title":"Importing reports","text":"<p>Seeding an intelligence database is usually a really long task. The Moons Reporter simplifies the process as much as possible by accepting your raw moon report collected by the in-game moon probing interface.</p> <p>Here is the process which need to be follow in order to be able to import a new moon report :</p> <ul> <li>fire your probe in-game and wait for the report to land</li> <li>use the \"Copy to Clipboard\" button from your \"Moon Probe and Analysis\" window </li> <li>go on the Moons Report and hit the \"Import\" button located on top right (1)</li> <li>paste copied content in the opening modal and hit \"Post report\"</li> </ul> <p>That's all, SeAT will take care of your report and apply change accordingly.</p> <p>Tip</p> <p>You can paste multiple moon report in once - so, to gain time and save clicks, you will probably prefer to scans all moons in a system before importing them into SeAT.</p> <p>Info</p> <p>When importing a report targeting an already imported moon report, existing data will be erased and replaced by the new report.</p> <p>Caution</p> <p>In case you have to import data from an existing sheet, you will have to generate report based on your information. Please put an eye into migrate section from this documentation.</p>"},{"location":"user_guides/moons_reporter/#advanced-search","title":"Advanced Search","text":"<p>The Moons Reporter is shipped with an advanced search panel (2) which allow you to search moons by different criteria :</p> <ul> <li>region</li> <li>constellation</li> <li>system</li> <li>rank</li> <li>produces</li> </ul> <p>Region, Constellation and System filters will be driven together depending on what you're doing - making your search easier.</p> <p>You are able to provide multiple rank into the rank filter (like ubiquitous, common, uncommon, rare and exceptional). When you are using this filter, only moon which contain all criteria will be displayed. For example, if you are searching for a moon which contain common and uncommon materials, simply select both criteria.</p> <p>Like rank filter, the produces filter is allowing you to track for moons containing multiple materials. As an example, you can search for moons producing both Vanadium and Cobalt.</p> <p>To make a search, once you put your criteria, use the search button.</p>"},{"location":"user_guides/moons_reporter/#moon-information","title":"Moon Information","text":""},{"location":"user_guides/moons_reporter/#moon-metadata","title":"Moon Metadata","text":"<p>Main pane (3) is showing you the list of all probed moons. You'll get quick intel on them with indicator and sovereignty columns. However, in case you want more information regarding a moon, you can click on the eye button which will show you the moon card.</p> <p>Displayed sovereignty depends on public in-game collected intel regarding systems. Those data are updated once a day - after down-time.</p>"},{"location":"user_guides/moons_reporter/#moon-card","title":"Moon Card","text":"<p>You are able to access details regarding a moon, simple by clicking on the eye button, located in the action column. Moon card will give you some valuable information like contained raw materials, reprocessed materials and reactions candidates.</p> <p>The Moons Reporter is not only showing you types but also figures like volume, quantity and estimated value. All of them are computed based on a regular chunk of 20,000.00m3 - and upgraded to 30 days for convenience. The base reprocessing yield is 80% - however, you are able to determine which yield must be used into your user profile.</p>"},{"location":"user_guides/moons_reporter/#moon-stats","title":"Moon Stats","text":"<p>Some stats are provide in Moons Reporter footer (4). They are showing you the number of raw materials, per rank, from all your scanned moons. Those stats are list in the same order as the indicator column :</p> <ul> <li>Gaz or Ubiquitous asteroids</li> <li>R8 or Common asteroids</li> <li>R16 or Uncommon asteroids</li> <li>R32 or Rare asteroids</li> <li>R64 or Exceptional asteroids</li> <li>Ore (standard asteroids - like Scordite, Spodumain, etc...)</li> </ul>"},{"location":"user_guides/moons_reporter/#migrating","title":"Migrating","text":"<p>Moons Reporter can only accept reports using Eve Online raw format. As a result, you will probably not be able to import data from an existing sheet without process. Luckily, the used format is quite simple to recover from collected data. You will find bellow a sample :</p> <pre><code>Moon Moon Product Quantity Ore TypeID SolarSystemID PlanetID MoonID\n\nOP9L-F II - Moon 1\n Glossy Scordite 0.300030559301 46687 30002173 40138526 40138527\n Immaculate Jaspet 0.328855156898 46682 30002173 40138526 40138527\n Pellucid Crokite 0.287893354893 46677 30002173 40138526 40138527\n Sylvite 0.083220936358 45491 30002173 40138526 40138527\n</code></pre> <p>Keep the two first lines as it, it's the report header. You will then have same format for every moon you need to put inside the report :</p> <ul> <li>The full qualified moon name</li> <li>One line per moon compound - indented by a tabulation</li> </ul> <p>Moon compound line are built using :</p> <ul> <li>Type name</li> <li>Rate (number between 0 and 1, using <code>.</code> a decimal separator - without thousands separator)</li> <li>Type identifier (number without either decimal or thousands separator)</li> <li>Solar system identifier (number without either decimal or thousands separator)</li> <li>Planet identifier (number without either decimal or thousands separator)</li> <li>Moon identifier (number without either decimal or thousands separator)</li> </ul> <p>If you need either the type name or the type identifier, you can use the amazing work from Fuzzy Steve :</p> <ul> <li>Types information</li> <li>Celestial information</li> </ul> <p>Caution</p> <p>Take care of separators. Report is using tabulations between column and not simple spaces. Also, each line must end with an end line and a carriage return character (CRLF - or Windows carriage return format)</p>"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..f15e34ac --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> + <url> + <loc>https://eveseat.github.io/docs/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/community_packages/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/styling/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/troubleshooting/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/about/contact/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/about/reporting_bugs/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/admin_login/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/authorizations/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/buckets/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/docker_admin/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/scaled_deployments/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/squads/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/admin_guides/understanding_tracking/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/configuration_overload/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/env_file_reference/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/esi_configuration/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/eve_administrative_contact/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/sde_overload/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/email_setup/gmail/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/configuration/email_setup/mailgun/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/core_package_breakdown/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/developer_installation/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/development_tips/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/job_queue_flow/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/notifications_implementation/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/package_development/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/seat_api/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/developer_guides/updating_plugins/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/installation/docker_installation/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/installation/manual_installation/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/installation/requirements/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/installation/old_versions/docker_installation_seat_4/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/installation/old_versions/manual_installation_seat_4/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_1_0/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_2_0/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/general/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_3_0/bare_metal/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_3_0/docker/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_4_0/bare_metal/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/upgrading/from_seat_4_0/docker/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> + <url> + <loc>https://eveseat.github.io/docs/user_guides/moons_reporter/</loc> + <lastmod>2024-04-06</lastmod> + <changefreq>daily</changefreq> + </url> +</urlset> \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..baeafbac4b09e2f88c1ccd942b1b4b654ef24901 GIT binary patch literal 633 zcmV-<0*3t`iwFof=n!TC|8r?{Wo=<_E_iKh0M(hzj@mE~fbaVhi2D+jqN=SRd+QUl zXUmBv#>Ms+|3K-}cTAuQ()Q9rm5GqBM}zZuGM*o@dHw0^><BR#^xOH%VmY6I?@<}A zxAX7czCM4NzqU`C5^aJ!BW0hq^Igv2OVgZAr$sUuoD6A!Q8%gI(IhojVY6I(p0`gk zy6OVs=yGi=_HA7y(K2v^1TrtQ$-B}m3^oe;)NGonbpIQfvP0FbmaFyil0F|v<tn>V z>vz&?7$O{6C5=6Anmfq|)BK_N2d*BSE8gU@2(sTx4bw$U`E2PyPL?l6ES-h4L(Eg= zlpU5#58h|l=ZRBB2pFq1MOXB6T~jJ&ywJrcxJ@i-<Cy@Lyu)aI$xLCBiIKa~?;$gR zCCMJ5xX5@Ar(Rl6LP4;2cHp^KIvt8sOjwIoRH<a?Yk4Aar2ISOv_T1DFuKG`lz5y8 zq?*g3R7~K(AH`rShzJ8jst|z-crxNq!i4(>WArmAR}oF8UVl7pASqzy<c{tksLv^( z(RIv_yAE}ku9qv4TMU%juQ9#H2)9m3bP?oU;fWFdo4|NVP1a63%KVMLRxBc$kob`Q zz)l<r6cB^O6CZ9*&F*0Ov3C&01q;>s%>3qdWbgck4}4V;G8jI@B`A66>VqxRCQtX6 zK19K58^<CtK0rF@i?j^EY0Y9HOuGSnAV#ai^$+Oup2LXCVO=xa%sWmr_05!^qpaO^ zGemSF?Tc8l;$5-e)!-pY%gVAJ$g-WJdfh>0h&~1vR@iI47GE>4czP?a9M)=le0%ag TkS|}<v$wwinraHSgB<_>MCdps literal 0 HcmV?d00001 diff --git a/styling/index.html b/styling/index.html new file mode 100644 index 00000000..69f1c40b --- /dev/null +++ b/styling/index.html @@ -0,0 +1,1503 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/styling/"> + + + <link rel="prev" href="../developer_guides/seat_api/"> + + + <link rel="next" href="../community_packages/"> + + <link rel="icon" href="../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Styling - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../css/extra_footer.css"> + + <link rel="stylesheet" href="../css/extra_typo.css"> + + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#styling" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href=".." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Styling + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href=".." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href=".." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <a href="./" class="md-nav__link md-nav__link--active"> + Styling + </a> + + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="styling">Styling<a class="headerlink" href="#styling" title="Permanent link">¶</a></h1> +<p>By default, SeAT uses <a href="https://getbootstrap.com/docs/3.4/">Bootstrap 3</a> and the <a href="https://adminlte.io/">Admin LTE</a> template.</p> +<p>You may want to customise SeAT design to match either your corporation or alliance colours.</p> +<p>To do so, you can use two available css hooks :</p> +<ul> +<li><code>custom-layout-mini.css</code> used by the sign-in page</li> +<li><code>custom-layout.css</code> used by all the entier application, globally</li> +</ul> +<h1 id="bare-metal-installs">Bare Metal Installs<a class="headerlink" href="#bare-metal-installs" title="Permanent link">¶</a></h1> +<p>Both files must be located into your <code>public</code> directory.</p> +<div class="admonition example"> +<p class="admonition-title">Example</p> +<p>Using the default base directory, you'll get the following path : +- <code>/var/www/seat/public/custom-layout-mini.css</code> +- <code>/var/www/seat/public/custom-layout.css</code></p> +</div> +<p>These files are loaded automatically if they are detected - you have nothing else to do to enable them.</p> +<h1 id="docker-installs">Docker Installs<a class="headerlink" href="#docker-installs" title="Permanent link">¶</a></h1> +<p>An example of adding these to your Web UI container is provided below:</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Do note the version in <code>docker-compose.yml</code> and reflect this in your override file otherwise version mismatches will occur.</p> +</div> +<ul> +<li>Creating <code>custom</code> directory in <code>/opt/seat-docker/</code> and add files to new directory</li> +<li>Creating <code>docker-compose.override.yml</code> in <code>/opt/seat-docker/</code> directory</li> +<li>Adding following code to <code>docker-compose.override.yml</code> Note: Uncomment the needed file(s) by removing the <code>#</code></li> +</ul> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">SeAT 4</label><label for="__tabbed_1_2">SeAT 5 (using Traefik)</label><label for="__tabbed_1_3">SeAT 5 (using proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-YAML highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span> +<span class="normal"><a href="#__codelineno-0-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">"3.2"</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a><span class="nt">services</span><span class="p">:</span> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a> +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a><span class="w"> </span><span class="nt">seat-web</span><span class="p">:</span> +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css</span> +</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css</span> +</span></code></pre></div></td></tr></table></div> +<p>Once you have placed the files you will need to run <code>docker-compose up -d</code> for it to take effect.</p> +</div> +<div class="tabbed-block"> +<div class="language-YAML highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span> +<span class="normal"><a href="#__codelineno-1-3">3</a></span> +<span class="normal"><a href="#__codelineno-1-4">4</a></span> +<span class="normal"><a href="#__codelineno-1-5">5</a></span> +<span class="normal"><a href="#__codelineno-1-6">6</a></span> +<span class="normal"><a href="#__codelineno-1-7">7</a></span> +<span class="normal"><a href="#__codelineno-1-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">"3.2"</span> +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a> +</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a><span class="nt">services</span><span class="p">:</span> +</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a> +</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a><span class="w"> </span><span class="nt">front</span><span class="p">:</span> +</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css</span> +</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css</span> +</span></code></pre></div></td></tr></table></div> +<p>Once you have placed the files you will need to run <code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d</code> for it to take effect.</p> +</div> +<div class="tabbed-block"> +<div class="language-YAML highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span> +<span class="normal"><a href="#__codelineno-2-3">3</a></span> +<span class="normal"><a href="#__codelineno-2-4">4</a></span> +<span class="normal"><a href="#__codelineno-2-5">5</a></span> +<span class="normal"><a href="#__codelineno-2-6">6</a></span> +<span class="normal"><a href="#__codelineno-2-7">7</a></span> +<span class="normal"><a href="#__codelineno-2-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">"3.2"</span> +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a> +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a><span class="nt">services</span><span class="p">:</span> +</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a> +</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a><span class="w"> </span><span class="nt">front</span><span class="p">:</span> +</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout-mini.css:/var/www/seat/public/custom-layout-mini.css</span> +</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8"></a><span class="c1"># - /opt/seat-docker/custom/custom-layout.css:/var/www/seat/public/custom-layout.css</span> +</span></code></pre></div></td></tr></table></div> +<p>Once you have placed the files you will need to run <code>docker-compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d</code> for it to take effect.</p> +</div> +</div> +</div> +<p>An example of a customized login page using <code>custom-layout-mini.css</code> would be:</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Valid <code>corporations</code> or <code>alliances</code> ids in the URL can be used for <code>login.logo::before</code> section.</p> +</div> +<div class="language-CSS highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-3-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-3-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-3-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-3-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-3-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-3-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-3-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-3-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-3-10">10</a></span> +<span class="normal"><a href="#__codelineno-3-11">11</a></span> +<span class="normal"><a href="#__codelineno-3-12">12</a></span> +<span class="normal"><a href="#__codelineno-3-13">13</a></span> +<span class="normal"><a href="#__codelineno-3-14">14</a></span> +<span class="normal"><a href="#__codelineno-3-15">15</a></span> +<span class="normal"><a href="#__codelineno-3-16">16</a></span> +<span class="normal"><a href="#__codelineno-3-17">17</a></span> +<span class="normal"><a href="#__codelineno-3-18">18</a></span> +<span class="normal"><a href="#__codelineno-3-19">19</a></span> +<span class="normal"><a href="#__codelineno-3-20">20</a></span> +<span class="normal"><a href="#__codelineno-3-21">21</a></span> +<span class="normal"><a href="#__codelineno-3-22">22</a></span> +<span class="normal"><a href="#__codelineno-3-23">23</a></span> +<span class="normal"><a href="#__codelineno-3-24">24</a></span> +<span class="normal"><a href="#__codelineno-3-25">25</a></span> +<span class="normal"><a href="#__codelineno-3-26">26</a></span> +<span class="normal"><a href="#__codelineno-3-27">27</a></span> +<span class="normal"><a href="#__codelineno-3-28">28</a></span> +<span class="normal"><a href="#__codelineno-3-29">29</a></span> +<span class="normal"><a href="#__codelineno-3-30">30</a></span> +<span class="normal"><a href="#__codelineno-3-31">31</a></span> +<span class="normal"><a href="#__codelineno-3-32">32</a></span> +<span class="normal"><a href="#__codelineno-3-33">33</a></span> +<span class="normal"><a href="#__codelineno-3-34">34</a></span> +<span class="normal"><a href="#__codelineno-3-35">35</a></span> +<span class="normal"><a href="#__codelineno-3-36">36</a></span> +<span class="normal"><a href="#__codelineno-3-37">37</a></span> +<span class="normal"><a href="#__codelineno-3-38">38</a></span> +<span class="normal"><a href="#__codelineno-3-39">39</a></span> +<span class="normal"><a href="#__codelineno-3-40">40</a></span> +<span class="normal"><a href="#__codelineno-3-41">41</a></span> +<span class="normal"><a href="#__codelineno-3-42">42</a></span> +<span class="normal"><a href="#__codelineno-3-43">43</a></span> +<span class="normal"><a href="#__codelineno-3-44">44</a></span> +<span class="normal"><a href="#__codelineno-3-45">45</a></span> +<span class="normal"><a href="#__codelineno-3-46">46</a></span> +<span class="normal"><a href="#__codelineno-3-47">47</a></span> +<span class="normal"><a href="#__codelineno-3-48">48</a></span> +<span class="normal"><a href="#__codelineno-3-49">49</a></span> +<span class="normal"><a href="#__codelineno-3-50">50</a></span> +<span class="normal"><a href="#__codelineno-3-51">51</a></span> +<span class="normal"><a href="#__codelineno-3-52">52</a></span> +<span class="normal"><a href="#__codelineno-3-53">53</a></span> +<span class="normal"><a href="#__codelineno-3-54">54</a></span> +<span class="normal"><a href="#__codelineno-3-55">55</a></span> +<span class="normal"><a href="#__codelineno-3-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a><span class="c">/**</span> +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a><span class="c"> * SeAT login page layout</span> +</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a><span class="c"> */</span> +</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="p">@</span><span class="k">media</span><span class="w"> </span><span class="nt">all</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="w"> </span><span class="nt">html</span><span class="o">,</span><span class="w"> </span><span class="nt">body</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a><span class="w"> </span><span class="k">height</span><span class="p">:</span><span class="w"> </span><span class="kc">auto</span><span class="p">;</span> +</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a> +</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9"></a><span class="w"> </span><span class="p">.</span><span class="nc">login-page</span><span class="o">,</span><span class="w"> </span><span class="p">.</span><span class="nc">register</span><span class="p">.</span><span class="nc">body</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10"></a><span class="w"> </span><span class="k">color</span><span class="p">:</span><span class="w"> </span><span class="nb">rgb</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span><span class="mi">255</span><span class="p">,</span><span class="mi">255</span><span class="p">);</span> +</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11"></a><span class="w"> </span><span class="k">background-image</span><span class="p">:</span><span class="w"> </span><span class="nb">url</span><span class="p">(</span><span class="sx">https://web.ccpgamescdn.com/aws/eveonline/sso/background.jpg</span><span class="p">);</span> +</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12"></a><span class="w"> </span><span class="k">background-position</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span> +</span><span id="__span-3-13"><a id="__codelineno-3-13" name="__codelineno-3-13"></a><span class="w"> </span><span class="k">background-repeat</span><span class="p">:</span><span class="w"> </span><span class="kc">no-repeat</span><span class="p">;</span> +</span><span id="__span-3-14"><a id="__codelineno-3-14" name="__codelineno-3-14"></a><span class="w"> </span><span class="k">background-size</span><span class="p">:</span><span class="w"> </span><span class="kc">cover</span><span class="p">;</span> +</span><span id="__span-3-15"><a id="__codelineno-3-15" name="__codelineno-3-15"></a><span class="w"> </span><span class="k">background-attachment</span><span class="p">:</span><span class="w"> </span><span class="kc">fixed</span><span class="p">;</span> +</span><span id="__span-3-16"><a id="__codelineno-3-16" name="__codelineno-3-16"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-17"><a id="__codelineno-3-17" name="__codelineno-3-17"></a> +</span><span id="__span-3-18"><a id="__codelineno-3-18" name="__codelineno-3-18"></a><span class="w"> </span><span class="p">.</span><span class="nc">login-box</span><span class="o">,</span><span class="w"> </span><span class="p">.</span><span class="nc">register-box</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-19"><a id="__codelineno-3-19" name="__codelineno-3-19"></a><span class="w"> </span><span class="k">width</span><span class="p">:</span><span class="w"> </span><span class="mi">360</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-20"><a id="__codelineno-3-20" name="__codelineno-3-20"></a><span class="w"> </span><span class="k">margin</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> +</span><span id="__span-3-21"><a id="__codelineno-3-21" name="__codelineno-3-21"></a><span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">absolute</span><span class="p">;</span> +</span><span id="__span-3-22"><a id="__codelineno-3-22" name="__codelineno-3-22"></a><span class="w"> </span><span class="k">top</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> +</span><span id="__span-3-23"><a id="__codelineno-3-23" name="__codelineno-3-23"></a><span class="w"> </span><span class="k">left</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> +</span><span id="__span-3-24"><a id="__codelineno-3-24" name="__codelineno-3-24"></a><span class="w"> </span><span class="k">background</span><span class="p">:</span><span class="w"> </span><span class="nb">rgba</span><span class="p">(</span><span class="mi">48</span><span class="p">,</span><span class="mi">48</span><span class="p">,</span><span class="mi">48</span><span class="p">,</span><span class="mf">.8</span><span class="p">);</span> +</span><span id="__span-3-25"><a id="__codelineno-3-25" name="__codelineno-3-25"></a><span class="w"> </span><span class="k">transform</span><span class="p">:</span><span class="w"> </span><span class="nb">translate</span><span class="p">(</span><span class="nv">-50</span><span class="err">%</span><span class="p">,</span><span class="w"> </span><span class="nv">-50</span><span class="err">%</span><span class="p">);</span> +</span><span id="__span-3-26"><a id="__codelineno-3-26" name="__codelineno-3-26"></a><span class="w"> </span><span class="k">border</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="kt">px</span><span class="w"> </span><span class="kc">solid</span><span class="w"> </span><span class="mh">#ecf0f1</span><span class="p">;</span> +</span><span id="__span-3-27"><a id="__codelineno-3-27" name="__codelineno-3-27"></a><span class="w"> </span><span class="k">border-radius</span><span class="p">:</span><span class="w"> </span><span class="mi">40</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-28"><a id="__codelineno-3-28" name="__codelineno-3-28"></a><span class="w"> </span><span class="k">box-shadow</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="mi">1</span><span class="kt">px</span><span class="w"> </span><span class="mi">1</span><span class="kt">px</span><span class="w"> </span><span class="nb">rgba</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mf">0.05</span><span class="p">);</span> +</span><span id="__span-3-29"><a id="__codelineno-3-29" name="__codelineno-3-29"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-30"><a id="__codelineno-3-30" name="__codelineno-3-30"></a> +</span><span id="__span-3-31"><a id="__codelineno-3-31" name="__codelineno-3-31"></a><span class="w"> </span><span class="p">.</span><span class="nc">login-logo</span><span class="o">,</span><span class="w"> </span><span class="p">.</span><span class="nc">register-logo</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-32"><a id="__codelineno-3-32" name="__codelineno-3-32"></a><span class="w"> </span><span class="k">font-size</span><span class="p">:</span><span class="w"> </span><span class="mi">35</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-33"><a id="__codelineno-3-33" name="__codelineno-3-33"></a><span class="w"> </span><span class="k">text-align</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span> +</span><span id="__span-3-34"><a id="__codelineno-3-34" name="__codelineno-3-34"></a><span class="w"> </span><span class="k">margin-bottom</span><span class="p">:</span><span class="w"> </span><span class="mi">25</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-35"><a id="__codelineno-3-35" name="__codelineno-3-35"></a><span class="w"> </span><span class="k">font-weight</span><span class="p">:</span><span class="w"> </span><span class="mi">300</span><span class="p">;</span> +</span><span id="__span-3-36"><a id="__codelineno-3-36" name="__codelineno-3-36"></a><span class="w"> </span><span class="k">margin-top</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-37"><a id="__codelineno-3-37" name="__codelineno-3-37"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-38"><a id="__codelineno-3-38" name="__codelineno-3-38"></a> +</span><span id="__span-3-39"><a id="__codelineno-3-39" name="__codelineno-3-39"></a><span class="w"> </span><span class="p">.</span><span class="nc">login-logo</span><span class="p">::</span><span class="nd">before</span><span class="o">,</span><span class="w"> </span><span class="p">.</span><span class="nc">register-logo</span><span class="p">::</span><span class="nd">before</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-40"><a id="__codelineno-3-40" name="__codelineno-3-40"></a><span class="w"> </span><span class="k">content</span><span class="p">:</span><span class="w"> </span><span class="s2">" "</span><span class="p">;</span> +</span><span id="__span-3-41"><a id="__codelineno-3-41" name="__codelineno-3-41"></a><span class="w"> </span><span class="k">display</span><span class="p">:</span><span class="w"> </span><span class="kc">block</span><span class="p">;</span> +</span><span id="__span-3-42"><a id="__codelineno-3-42" name="__codelineno-3-42"></a><span class="w"> </span><span class="k">width</span><span class="p">:</span><span class="w"> </span><span class="mi">128</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-43"><a id="__codelineno-3-43" name="__codelineno-3-43"></a><span class="w"> </span><span class="k">height</span><span class="p">:</span><span class="mi">128</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-44"><a id="__codelineno-3-44" name="__codelineno-3-44"></a><span class="w"> </span><span class="k">margin</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="kc">auto</span><span class="p">;</span> +</span><span id="__span-3-45"><a id="__codelineno-3-45" name="__codelineno-3-45"></a><span class="w"> </span><span class="k">background-image</span><span class="p">:</span><span class="w"> </span><span class="nb">url</span><span class="p">(</span><span class="sx">https://images.evetech.net/corporations/98482334/logo?size=128</span><span class="p">);</span> +</span><span id="__span-3-46"><a id="__codelineno-3-46" name="__codelineno-3-46"></a><span class="w"> </span><span class="k">border-radius</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">%</span><span class="p">;</span> +</span><span id="__span-3-47"><a id="__codelineno-3-47" name="__codelineno-3-47"></a><span class="w"> </span><span class="k">margin-bottom</span><span class="p">:</span><span class="w"> </span><span class="mi">50</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-48"><a id="__codelineno-3-48" name="__codelineno-3-48"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-49"><a id="__codelineno-3-49" name="__codelineno-3-49"></a> +</span><span id="__span-3-50"><a id="__codelineno-3-50" name="__codelineno-3-50"></a><span class="w"> </span><span class="p">.</span><span class="nc">login-box-body</span><span class="o">,</span><span class="w"> </span><span class="p">.</span><span class="nc">register-box-body</span><span class="w"> </span><span class="p">{</span> +</span><span id="__span-3-51"><a id="__codelineno-3-51" name="__codelineno-3-51"></a><span class="w"> </span><span class="k">background</span><span class="p">:</span><span class="w"> </span><span class="kc">transparent</span><span class="p">;</span> +</span><span id="__span-3-52"><a id="__codelineno-3-52" name="__codelineno-3-52"></a><span class="w"> </span><span class="k">padding</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="kt">px</span><span class="p">;</span> +</span><span id="__span-3-53"><a id="__codelineno-3-53" name="__codelineno-3-53"></a><span class="w"> </span><span class="k">border-top</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> +</span><span id="__span-3-54"><a id="__codelineno-3-54" name="__codelineno-3-54"></a><span class="w"> </span><span class="k">color</span><span class="p">:</span><span class="w"> </span><span class="kc">inherit</span><span class="p">;</span> +</span><span id="__span-3-55"><a id="__codelineno-3-55" name="__codelineno-3-55"></a><span class="w"> </span><span class="p">}</span> +</span><span id="__span-3-56"><a id="__codelineno-3-56" name="__codelineno-3-56"></a><span class="p">}</span> +</span></code></pre></div></td></tr></table></div> +<p>The above code will create the login page below:</p> +<p><img alt="Customized Login Page" src="../img/customized-signin-page.png" /></p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "..", "features": ["content.code.copy"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/troubleshooting/index.html b/troubleshooting/index.html new file mode 100644 index 00000000..889e9ed8 --- /dev/null +++ b/troubleshooting/index.html @@ -0,0 +1,1633 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/troubleshooting/"> + + + <link rel="prev" href="../community_packages/"> + + + <link rel="next" href="../about/contact/"> + + <link rel="icon" href="../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Troubleshooting - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../css/extra_footer.css"> + + <link rel="stylesheet" href="../css/extra_typo.css"> + + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#troubleshooting" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href=".." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Troubleshooting + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href=".." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href=".." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Troubleshooting + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Troubleshooting + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#whoops" class="md-nav__link"> + Whoops + </a> + +</li> + + <li class="md-nav__item"> + <a href="#memory-errors" class="md-nav__link"> + Memory Errors + </a> + +</li> + + <li class="md-nav__item"> + <a href="#enabling-debug-mode" class="md-nav__link"> + Enabling Debug Mode + </a> + + <nav class="md-nav" aria-label="Enabling Debug Mode"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#debug-mode-host-installs" class="md-nav__link"> + Debug Mode - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#debug-mode-docker-installs" class="md-nav__link"> + Debug Mode - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#checking-log-files" class="md-nav__link"> + Checking Log Files + </a> + + <nav class="md-nav" aria-label="Checking Log Files"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#live-logs-host-installs" class="md-nav__link"> + Live Logs - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#live-logs-docker-installs" class="md-nav__link"> + Live Logs - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#diagnose-command" class="md-nav__link"> + Diagnose command + </a> + + <nav class="md-nav" aria-label="Diagnose command"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#diagnose-host-installs" class="md-nav__link"> + Diagnose - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#diagnose-docker-installs" class="md-nav__link"> + Diagnose - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#whoops" class="md-nav__link"> + Whoops + </a> + +</li> + + <li class="md-nav__item"> + <a href="#memory-errors" class="md-nav__link"> + Memory Errors + </a> + +</li> + + <li class="md-nav__item"> + <a href="#enabling-debug-mode" class="md-nav__link"> + Enabling Debug Mode + </a> + + <nav class="md-nav" aria-label="Enabling Debug Mode"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#debug-mode-host-installs" class="md-nav__link"> + Debug Mode - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#debug-mode-docker-installs" class="md-nav__link"> + Debug Mode - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#checking-log-files" class="md-nav__link"> + Checking Log Files + </a> + + <nav class="md-nav" aria-label="Checking Log Files"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#live-logs-host-installs" class="md-nav__link"> + Live Logs - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#live-logs-docker-installs" class="md-nav__link"> + Live Logs - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#diagnose-command" class="md-nav__link"> + Diagnose command + </a> + + <nav class="md-nav" aria-label="Diagnose command"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#diagnose-host-installs" class="md-nav__link"> + Diagnose - Host Installs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#diagnose-docker-installs" class="md-nav__link"> + Diagnose - Docker Installs + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="troubleshooting">Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permanent link">¶</a></h1> +<p>So the inevitable happened. Something broke or simply isn't working as expected! That's OK. Usually its possible to recover from almost any type of error. The <em>only</em> thing that you can't recover from is not making database backups!</p> +<p>There are a few things you can do to perform general troubleshooting. These range from flipping SeAT into debug mode to simply running a self diagnostics command. Lets take a look at a few steps you can take:</p> +<h2 id="whoops">Whoops<a class="headerlink" href="#whoops" title="Permanent link">¶</a></h2> +<blockquote> +<p>Whoops, looks like something went wrong.</p> +</blockquote> +<p><img alt="whoops" src="https://i.imgur.com/esebPtv.png" /></p> +<p>The dreaded "Whoops" message has appeared and now you need to figure out why. Normally, this means that something serious broke and the application simply can't recover by itself. In many cases it could either be a quick fix you can do yourself, or something that could result in the need to fix some code.</p> +<p>In either case, the next steps to perform when seeing this would be to either <a href="#enabling-debug-mode">enable debug mode</a> and reloading the page / request that failed, or by viewing the log file while retrying the failed request.</p> +<h2 id="memory-errors">Memory Errors<a class="headerlink" href="#memory-errors" title="Permanent link">¶</a></h2> +<blockquote> +<p>Fatal error: Allowed memory size of #### bytes exhausted (tried to allocate 4096 bytes)...</p> +</blockquote> +<p>If you are presented with an error below similar to this after "Updating Dependencies" you must append your .ENV file with <code>COMPOSER_MEMORY_LIMIT= -1</code> and restart the stack with the following if you are using docker:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Docker (SeAT 4.x)</label><label for="__tabbed_1_2">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_1_3">Docker (SeAT 5.x - using reverse proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +</div> +</div> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Note: spacing is important for this parameter, if you are unsure copy/paste the needed line into your .ENV file.</p> +</div> +<h2 id="enabling-debug-mode">Enabling Debug Mode<a class="headerlink" href="#enabling-debug-mode" title="Permanent link">¶</a></h2> +<p>Debug mode controls how much information about an error condition is displayed to the user. When debug mode is enabled, the error message will be <em>extremely verbose</em>, whereas when its disabled, it simply states that an error had occurred. In either case, the error will always be written to the logs. By default, SeAT does not have debug mode enabled. There are many reasons for this with the primary reason being security related. It goes without saying that once you have completed debugging and fixing your instance, always make sure you <strong>disable debug mode</strong> afterwards.</p> +<p>Once you have enabled debug mode, any errors that may occur would look something like the following instead of the default "Whoops" message. Depending on if you have development packages installed (which you wouldn't by default in non-development installations), the debug page may look slightly different.</p> +<p><img alt="debugerror" src="https://i.imgur.com/4gs154m.png" /></p> +<p>Irrespective of how you installed SeAT, enabling debug mode is always a matter of changing the <code>APP_DEBUG</code> configuration option in the <code>.env</code> to `true. However, for it to apply depends on how you installed, so follow the appropriate steps below.</p> +<h3 id="debug-mode-host-installs">Debug Mode - Host Installs<a class="headerlink" href="#debug-mode-host-installs" title="Permanent link">¶</a></h3> +<p>Assuming you installed SeAT on your host using either the SeAT tool or manually, cd to your SeAT installation directory. If you followed the guides on this documentation website, that would be in <code>/var/www/seat</code>. Next, open the <code>.env</code> file in a text editor and modify the line that says <code>APP_DEBUG=false</code> to say <code>APP_DEBUG=true</code>.</p> +<p>The change would immediately take effect and you can simply reload the failed request for a detailed error message and code stack trace.</p> +<h3 id="debug-mode-docker-installs">Debug Mode - Docker Installs<a class="headerlink" href="#debug-mode-docker-installs" title="Permanent link">¶</a></h3> +<p>If you installed using Docker, cd to the directory where the <code>docker-compose.yml</code> file is located. Assuming you followed the guides on this website, that would be in <code>/opt/seat-docker</code>. Next, open the <code>.env</code> file in a text editor and modify the line that says <code>APP_DEBUG=false</code> to say <code>APP_DEBUG=true</code>.</p> +<p>For the change to take effect, you need to reload the stack:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:3"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Docker (SeAT 4.x)</label><label for="__tabbed_2_2">Docker (SeAT 5.x - using Traefik)</label><label for="__tabbed_2_3">Docker (SeAT 5.x - using reverse proxy)</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +</div> +</div> +</div> +<p>The containers will take a few moments to settle down after which you can reload the failed the request for a detailed error message and code stack trace.</p> +<h2 id="checking-log-files">Checking Log Files<a class="headerlink" href="#checking-log-files" title="Permanent link">¶</a></h2> +<p>Logs are always written to one of two log files irrespective of whether the application is in debug mode or not. Application logs go to the Laravel frameworks log files. API requests sent to ESI are stored int he Eseye log file. Logs are stored in the applications storage directory which can be found in the <code>storage/logs</code> folder.</p> +<p>Assuming you followed the guides on this documentation site, the full path to the directory where log files are will be <code>/var/www/seat/storage/logs/</code>. In the case of Docker installations, this will also be the path within the <code>seat-web</code>/<code>front</code> or <code>seat-worker</code>/<code>worker</code> container. Log files are rotated daily and are kept for a maximum of 10 days by default. Therefore, to get to todays application logs, the log file itself may be called <code>laravel-2018-05-31.log</code>. To find today's ESI requests logs, the log file will be called <code>eseye-2018-05-31.log</code>.</p> +<h3 id="live-logs-host-installs">Live Logs - Host Installs<a class="headerlink" href="#live-logs-host-installs" title="Permanent link">¶</a></h3> +<p>Irrespective of which log file you want to look at, getting todays live logs written to screen can be done with the following commands:</p> +<p>Application Logs:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>tail<span class="w"> </span>-f<span class="w"> </span>/var/www/seat/storage/logs/laravel-<span class="k">$(</span>date<span class="w"> </span>+%Y-%m-%d<span class="k">)</span>.log +</span></code></pre></div> +<p>Esye / ESI Logs:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>tail<span class="w"> </span>-f<span class="w"> </span>/var/www/seat/storage/logs/eseye-<span class="k">$(</span>date<span class="w"> </span>+%Y-%m-%d<span class="k">)</span>.log +</span></code></pre></div> +<h3 id="live-logs-docker-installs">Live Logs - Docker Installs<a class="headerlink" href="#live-logs-docker-installs" title="Permanent link">¶</a></h3> +<p>Application source code and log files are shared between the <code>seat-web</code>/<code>front</code>, <code>seat-worker</code>/<code>worker</code> and <code>seat-cron</code>/<code>scheduler</code> containers. Therefore, the following commands can be executed on any of those containers. For purposes of demonstration, we are going to tail the logs from the <code>seat-web</code>/<code>front</code> container.</p> +<p>First, enter get a shell within the <code>seat-web</code>/<code>front</code> container while in the <code>/opt/seat-docker/</code> directory with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">SeAT 4.x</label><label for="__tabbed_3_2">SeAT 5.x</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>seat-web<span class="w"> </span>sh +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>front<span class="w"> </span>sh +</span></code></pre></div> +</div> +</div> +</div> +<p>Next, tail the log files you want to see.</p> +<p>Application Logs:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>tail<span class="w"> </span>-f<span class="w"> </span>/var/www/seat/storage/logs/laravel-<span class="k">$(</span>date<span class="w"> </span>+%Y-%m-%d<span class="k">)</span>.log +</span></code></pre></div> +<p>Esye / ESI Logs:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>tail<span class="w"> </span>-f<span class="w"> </span>/var/www/seat/storage/logs/eseye-<span class="k">$(</span>date<span class="w"> </span>+%Y-%m-%d<span class="k">)</span>.log +</span></code></pre></div> +<h2 id="diagnose-command">Diagnose command<a class="headerlink" href="#diagnose-command" title="Permanent link">¶</a></h2> +<p>A diagnostics command exists that aims to perform a number of self-checks to help you diagnose problems. This command should be run as the same user the SeAT workers are running as, which is typically either <code>www-data</code> on Ubuntu / Debian based systems and <code>nginx</code> on CentOS based systems. If you have created yourself a separate user for SeAT, then running the diagnose command as that user is what you need to do.</p> +<h3 id="diagnose-host-installs">Diagnose - Host Installs<a class="headerlink" href="#diagnose-host-installs" title="Permanent link">¶</a></h3> +<p>Host installs require you to first <code>cd</code> to the directory where you installed SeAT. If you followed the guides on this website, that would be <code>/var/www/seat</code>. Next, run the diagnose command as the user you are running the workers as. If you are the <code>root</code> user, you can run it with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>su<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php artisan seat:admin:diagnose'</span><span class="w"> </span>-s<span class="w"> </span>/bin/sh<span class="w"> </span>www-data +</span></code></pre></div> +<h3 id="diagnose-docker-installs">Diagnose - Docker Installs<a class="headerlink" href="#diagnose-docker-installs" title="Permanent link">¶</a></h3> +<p>For Docker installations, the only requirement to run the diagnose command would be to ensure that you are currently in the same folder as that where the stacks <code>docker-compose.yml</code> file lives. If you followed the guides on this website that would be in <code>/opt/seat-docker</code>. Next, run the command with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">SeAT 4.x</label><label for="__tabbed_4_2">SeAT 5.x</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>seat-web<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>seat:admin:diagnose +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>docker<span class="w"> </span>compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>front<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>seat:admin:diagnose +</span></code></pre></div> +</div> +</div> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "..", "features": ["content.code.copy"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_1_0/index.html b/upgrading/from_seat_1_0/index.html new file mode 100644 index 00000000..fdafe009 --- /dev/null +++ b/upgrading/from_seat_1_0/index.html @@ -0,0 +1,1663 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_1_0/"> + + + <link rel="prev" href="../from_seat_2_0/"> + + + <link rel="next" href="../../configuration/esi_configuration/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>From SeAT 1.0 - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-10-to-20" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + From SeAT 1.0 + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + From SeAT 1.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + From SeAT 1.0 + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#notes-on-the-upgrade" class="md-nav__link"> + Notes on the upgrade + </a> + +</li> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade procedure + </a> + + <nav class="md-nav" aria-label="Upgrade procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php-7" class="md-nav__link"> + Php 7 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#get-the-new-code" class="md-nav__link"> + Get the new code + </a> + +</li> + + <li class="md-nav__item"> + <a href="#publish-the-assets" class="md-nav__link"> + Publish the assets + </a> + +</li> + + <li class="md-nav__item"> + <a href="#reconfigure-env-file" class="md-nav__link"> + Reconfigure .env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#run-migrations" class="md-nav__link"> + Run migrations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-seeders" class="md-nav__link"> + Database seeders + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update-worker-jobs" class="md-nav__link"> + Update worker jobs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#finishing-off" class="md-nav__link"> + Finishing off + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#notes-on-the-upgrade" class="md-nav__link"> + Notes on the upgrade + </a> + +</li> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade procedure + </a> + + <nav class="md-nav" aria-label="Upgrade procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#php-7" class="md-nav__link"> + Php 7 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#get-the-new-code" class="md-nav__link"> + Get the new code + </a> + +</li> + + <li class="md-nav__item"> + <a href="#publish-the-assets" class="md-nav__link"> + Publish the assets + </a> + +</li> + + <li class="md-nav__item"> + <a href="#reconfigure-env-file" class="md-nav__link"> + Reconfigure .env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#run-migrations" class="md-nav__link"> + Run migrations + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-seeders" class="md-nav__link"> + Database seeders + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update-worker-jobs" class="md-nav__link"> + Update worker jobs + </a> + +</li> + + <li class="md-nav__item"> + <a href="#finishing-off" class="md-nav__link"> + Finishing off + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="seat-10-to-20">SeAT 1.0 to 2.0<a class="headerlink" href="#seat-10-to-20" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 1.x to SeAT 2.0 requires some manual work. This is mainly due to the number of fundamental changes that were made in the SeAT 2.x release.</p> +<h2 id="notes-on-the-upgrade">Notes on the upgrade<a class="headerlink" href="#notes-on-the-upgrade" title="Permanent link">¶</a></h2> +<p>The way SeAT is structured has not changed much since its version 1x days. The biggest change is a Laravel framework upgrade to version 5.3. This introduced a new base layout for the application which is why the manual upgrade is needed.</p> +<p>The upgrade process has a large amount of database migrations that need to run so grab a coffee depending on how big your database is!</p> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>SeAT 2.0 requires PHP 7.0. At the time of writing this document, PHP 7.1 is not supported due to bug in PhealNG (the component SeAT uses to talk to the EVE API).</li> +<li>MySQL 5.7 is recommended but not required.</li> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered is some way or form <em>except for your database</em>. Make 100% sure you backed this up before proceeding with the upgrade!</li> +<li>Take note of where SeAT is installed. This is usually in <code>/var/www/seat</code>.</li> +</ul> +<h2 id="upgrade-procedure">Upgrade procedure<a class="headerlink" href="#upgrade-procedure" title="Permanent link">¶</a></h2> +<h3 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permanent link">¶</a></h3> +<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely). Its therefore recommended that you start by putting SeAT into maintenance mode before starting the upgrade. Do this by running the following command in your SeAT path.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/var/www/seat +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>$<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>down +</span></code></pre></div></td></tr></table></div> +<p>You should see the message <em>Application is now in maintenance mode.</em>.</p> +<h3 id="backups">Backups<a class="headerlink" href="#backups" title="Permanent link">¶</a></h3> +<ul> +<li>Make a backup of your SeAT database and store it somewhere safe! <strong>Do not skip this step!</strong></li> +<li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all of your SeAT configuration. These values are needed to reconnect to the database once SeAT 2.0 is installed.</li> +</ul> +<h3 id="php-7">Php 7<a class="headerlink" href="#php-7" title="Permanent link">¶</a></h3> +<p>Install PHP7 if you don't have it already. You can check your PHP version by running <code>php -v</code>:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span> +<span class="normal"><a href="#__codelineno-1-2">2</a></span> +<span class="normal"><a href="#__codelineno-1-3">3</a></span> +<span class="normal"><a href="#__codelineno-1-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>$<span class="w"> </span>php<span class="w"> </span>-v +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>PHP<span class="w"> </span><span class="m">7</span>.0.14<span class="w"> </span><span class="o">(</span>cli<span class="o">)</span><span class="w"> </span><span class="o">(</span>built:<span class="w"> </span>Dec<span class="w"> </span><span class="m">7</span><span class="w"> </span><span class="m">2016</span><span class="w"> </span><span class="m">10</span>:25:25<span class="o">)</span><span class="w"> </span><span class="o">(</span><span class="w"> </span>NTS<span class="w"> </span><span class="o">)</span> +</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a>Copyright<span class="w"> </span><span class="o">(</span>c<span class="o">)</span><span class="w"> </span><span class="m">1997</span>-2016<span class="w"> </span>The<span class="w"> </span>PHP<span class="w"> </span>Group +</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a>Zend<span class="w"> </span>Engine<span class="w"> </span>v3.0.0,<span class="w"> </span>Copyright<span class="w"> </span><span class="o">(</span>c<span class="o">)</span><span class="w"> </span><span class="m">1998</span>-2016<span class="w"> </span>Zend<span class="w"> </span>Technologies +</span></code></pre></div></td></tr></table></div> +<h3 id="get-the-new-code">Get the new code<a class="headerlink" href="#get-the-new-code" title="Permanent link">¶</a></h3> +<p>SeAT 2.0 can be installed in exactly the same place as where you had your v1.x installation. If you reuse this path then no webserver re-configuration will be needed. We will move the old installation out of the way, and install SeAT 2.0. To do this, run the following commands:</p> +<ul> +<li>First, move the old installation out of the way:</li> +</ul> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span> +<span class="normal"><a href="#__codelineno-2-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/var/www +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>$<span class="w"> </span>mv<span class="w"> </span>seat<span class="w"> </span>seat.old +</span></code></pre></div></td></tr></table></div> +<p>You can double check that this was successful by running <code>ls</code> and ensuring that there is a folder named <code>seat.old</code> now.</p> +<ul> +<li>Next, get the new SeAT code by running <code>composer create-project eveseat/seat seat --no-dev</code>:</li> +</ul> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-3-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-3-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-3-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-3-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-3-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-3-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-3-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-3-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-3-10">10</a></span> +<span class="normal"><a href="#__codelineno-3-11">11</a></span> +<span class="normal"><a href="#__codelineno-3-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/var/www +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a>$<span class="w"> </span>composer<span class="w"> </span>create-project<span class="w"> </span>eveseat/seat<span class="w"> </span>seat<span class="w"> </span>--no-dev +</span><span id="__span-3-3"><a id="__codelineno-3-3" name="__codelineno-3-3"></a>Installing<span class="w"> </span>eveseat/seat<span class="w"> </span><span class="o">(</span><span class="m">2</span>.0.0<span class="o">)</span> +</span><span id="__span-3-4"><a id="__codelineno-3-4" name="__codelineno-3-4"></a><span class="w"> </span>-<span class="w"> </span>Installing<span class="w"> </span>eveseat/seat<span class="w"> </span><span class="o">(</span><span class="m">2</span>.0.0<span class="o">)</span> +</span><span id="__span-3-5"><a id="__codelineno-3-5" name="__codelineno-3-5"></a><span class="w"> </span>Loading<span class="w"> </span>from<span class="w"> </span>cache +</span><span id="__span-3-6"><a id="__codelineno-3-6" name="__codelineno-3-6"></a> +</span><span id="__span-3-7"><a id="__codelineno-3-7" name="__codelineno-3-7"></a>Created<span class="w"> </span>project<span class="w"> </span><span class="k">in</span><span class="w"> </span>seat +</span><span id="__span-3-8"><a id="__codelineno-3-8" name="__codelineno-3-8"></a>><span class="w"> </span>php<span class="w"> </span>-r<span class="w"> </span><span class="s2">"file_exists('.env') || copy('.env.example', '.env');"</span> +</span><span id="__span-3-9"><a id="__codelineno-3-9" name="__codelineno-3-9"></a>Loading<span class="w"> </span>composer<span class="w"> </span>repositories<span class="w"> </span>with<span class="w"> </span>package<span class="w"> </span>information +</span><span id="__span-3-10"><a id="__codelineno-3-10" name="__codelineno-3-10"></a>Updating<span class="w"> </span>dependencies +</span><span id="__span-3-11"><a id="__codelineno-3-11" name="__codelineno-3-11"></a> +</span><span id="__span-3-12"><a id="__codelineno-3-12" name="__codelineno-3-12"></a><span class="o">[</span><span class="w"> </span>...<span class="w"> </span>snip<span class="w"> </span>...<span class="w"> </span><span class="o">]</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="publish-the-assets">Publish the assets<a class="headerlink" href="#publish-the-assets" title="Permanent link">¶</a></h3> +<p>Next, we need to publish the new SeAT 2.0 CSS & Javascript and database migrations. This can be done with <code>php artisan vendor:publish --force</code>.</p> +<h3 id="reconfigure-env-file">Reconfigure <code>.env</code> file<a class="headerlink" href="#reconfigure-env-file" title="Permanent link">¶</a></h3> +<p>With the new code ready to use, the next thing that is required is to reconnect the database. Remember that <code>.env</code> file you backed up earlier? Refer to it for the values needed in the newly installed env file that can be found at <code>/var/www/seat/.env</code>.</p> +<p>Important keys to populate with the correct values are:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span> +<span class="normal"><a href="#__codelineno-4-3">3</a></span> +<span class="normal"><a href="#__codelineno-4-4">4</a></span> +<span class="normal"><a href="#__codelineno-4-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a><span class="nv">DB_HOST</span><span class="o">=</span> +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a><span class="nv">DB_PORT</span><span class="o">=</span> +</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a><span class="nv">DB_DATABASE</span><span class="o">=</span> +</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4"></a><span class="nv">DB_USERNAME</span><span class="o">=</span> +</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5"></a><span class="nv">DB_PASSWORD</span><span class="o">=</span> +</span></code></pre></div></td></tr></table></div> +<p>SeAT 2.0 introduced new configuration items in the <code>.env</code> that you can review. There is also the option to configure Supervisor & SeAT integration, which can be done by following the admin guide titled <em>SeAT & Supervisor Integration</em>.</p> +<h3 id="run-migrations">Run migrations<a class="headerlink" href="#run-migrations" title="Permanent link">¶</a></h3> +<p>With the database reconnected, its time to run the migrations for SeAT 2.0. This is the part that may take some time, depending on how big your database is.</p> +<p>To run the migrations, make sure you are still in your seat path (<code>/var/www/seat</code>) and run <code>php artisan migrate</code>:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1">1</a></span> +<span class="normal"><a href="#__codelineno-5-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a>$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>/var/www/seat +</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a>$<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>migrate +</span></code></pre></div></td></tr></table></div> +<p>You will see a bunch of messages and eventually your shell prompt again, indicating that it has completed. If you receive errors here, double check that you have entered the correct database settings in the <code>.env</code> file previously mentioned.</p> +<h3 id="database-seeders">Database seeders<a class="headerlink" href="#database-seeders" title="Permanent link">¶</a></h3> +<p>With the database migration complete, its time to seed it with some of the static data SeAT needs. Do this with the following commands:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1">1</a></span> +<span class="normal"><a href="#__codelineno-6-2">2</a></span> +<span class="normal"><a href="#__codelineno-6-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>db:seed<span class="w"> </span>--class<span class="o">=</span>Seat<span class="se">\\</span>Notifications<span class="se">\\</span>database<span class="se">\\</span>seeds<span class="se">\\</span>ScheduleSeeder +</span><span id="__span-6-2"><a id="__codelineno-6-2" name="__codelineno-6-2"></a>php<span class="w"> </span>artisan<span class="w"> </span>db:seed<span class="w"> </span>--class<span class="o">=</span>Seat<span class="se">\\</span>Services<span class="se">\\</span>database<span class="se">\\</span>seeds<span class="se">\\</span>NotificationTypesSeeder +</span><span id="__span-6-3"><a id="__codelineno-6-3" name="__codelineno-6-3"></a>php<span class="w"> </span>artisan<span class="w"> </span>db:seed<span class="w"> </span>--class<span class="o">=</span>Seat<span class="se">\\</span>Services<span class="se">\\</span>database<span class="se">\\</span>seeds<span class="se">\\</span>ScheduleSeeder +</span></code></pre></div></td></tr></table></div> +<h3 id="update-worker-jobs">Update worker jobs<a class="headerlink" href="#update-worker-jobs" title="Permanent link">¶</a></h3> +<p>The Laravel 5.3 upgrade in SeAT changed the way worker jobs are started. You can edit the command used to start a worker in your <code>seat.conf</code> file in supervisor. Normally, this file will be somewhere like in <code>/etc/supervisor/conf.d/</code>.</p> +<p>The only line you really need to edit is the one that starts with <code>command</code>, replacing it with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nv">command</span><span class="o">=</span>/usr/bin/php<span class="w"> </span>/var/www/seat/artisan<span class="w"> </span>queue:work<span class="w"> </span>--queue<span class="o">=</span>high,medium,low,default<span class="w"> </span>--tries<span class="w"> </span><span class="m">1</span><span class="w"> </span>--timeout<span class="o">=</span><span class="m">86100</span> +</span></code></pre></div> +<p>A full block for SeAT 2.0 should therefore be:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-8-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-8-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-8-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-8-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-8-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-8-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-8-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-8-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-8-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a><span class="o">[</span>program:seat<span class="o">]</span> +</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2"></a><span class="nv">command</span><span class="o">=</span>/usr/bin/php<span class="w"> </span>/var/www/seat/artisan<span class="w"> </span>queue:work<span class="w"> </span>--queue<span class="o">=</span>high,medium,low,default<span class="w"> </span>--tries<span class="w"> </span><span class="m">1</span><span class="w"> </span>--timeout<span class="o">=</span><span class="m">86100</span> +</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3"></a><span class="nv">process_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>%<span class="o">(</span>program_name<span class="o">)</span>s-80%<span class="o">(</span>process_num<span class="o">)</span>02d +</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4"></a><span class="nv">stdout_logfile</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>/var/log/seat-80%<span class="o">(</span>process_num<span class="o">)</span>02d.log +</span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5"></a><span class="nv">stdout_logfile_maxbytes</span><span class="o">=</span>100MB +</span><span id="__span-8-6"><a id="__codelineno-8-6" name="__codelineno-8-6"></a><span class="nv">stdout_logfile_backups</span><span class="o">=</span><span class="m">10</span> +</span><span id="__span-8-7"><a id="__codelineno-8-7" name="__codelineno-8-7"></a><span class="nv">numprocs</span><span class="o">=</span><span class="m">4</span> +</span><span id="__span-8-8"><a id="__codelineno-8-8" name="__codelineno-8-8"></a><span class="nv">directory</span><span class="o">=</span>/var/www/seat +</span><span id="__span-8-9"><a id="__codelineno-8-9" name="__codelineno-8-9"></a><span class="nv">stopwaitsecs</span><span class="o">=</span><span class="m">600</span> +</span><span id="__span-8-10"><a id="__codelineno-8-10" name="__codelineno-8-10"></a><span class="nv">user</span><span class="o">=</span>www-data +</span></code></pre></div></td></tr></table></div> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>Keep in mind the <code>user</code> value and the path to <code>artisan</code> should be correct. +Update them to the correct values of you made changes to the defaults. +The <code>user</code> value differs many times based on Linux distribution too!</p> +</div> +<h3 id="finishing-off">Finishing off<a class="headerlink" href="#finishing-off" title="Permanent link">¶</a></h3> +<p>With all of that done, bring your application back up with <code>php artisan up</code> and start the supervisor workers again. +Watch the logs for any errors in case things have not gone as expected. +If you need any help, feel free to join the Slack channel details in the <a href="../../about/contact/">Contact</a> page on the left.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_2_0/index.html b/upgrading/from_seat_2_0/index.html new file mode 100644 index 00000000..bf6ee0a0 --- /dev/null +++ b/upgrading/from_seat_2_0/index.html @@ -0,0 +1,1492 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_2_0/"> + + + <link rel="prev" href="../from_seat_3_0/bare_metal/"> + + + <link rel="next" href="../from_seat_1_0/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>From SeAT 2.0 - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-20-to-30" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + From SeAT 2.0 + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + From SeAT 2.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + From SeAT 2.0 + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#notes-on-the-upgrade" class="md-nav__link"> + Notes on the upgrade + </a> + +</li> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade procedure + </a> + + <nav class="md-nav" aria-label="Upgrade procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-30" class="md-nav__link"> + Installing SeAT 3.0 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-the-migrator-package-on-seat-20" class="md-nav__link"> + Installing the migrator package on SeAT 2.0 + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#notes-on-the-upgrade" class="md-nav__link"> + Notes on the upgrade + </a> + +</li> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade procedure + </a> + + <nav class="md-nav" aria-label="Upgrade procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-30" class="md-nav__link"> + Installing SeAT 3.0 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-the-migrator-package-on-seat-20" class="md-nav__link"> + Installing the migrator package on SeAT 2.0 + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="seat-20-to-30">SeAT 2.0 to 3.0<a class="headerlink" href="#seat-20-to-30" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 2.x to SeAT 3.0 requires some manual work. This is mainly due to the number of fundamental database changes that were made in SeAT 3.x.</p> +<h2 id="notes-on-the-upgrade">Notes on the upgrade<a class="headerlink" href="#notes-on-the-upgrade" title="Permanent link">¶</a></h2> +<p>Most of the database has been revamped to match ESI models. Therefore, we can't offer you a simple update as we do for minor patches. However, once migrated, updates can be done as per usual.</p> +<p>The process described bellow handles data conversion between the SeAT 2.x structure and SeAT 3.x one.</p> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>Check <a href="../../installation/requirements/">SeAT 3.0 Requirements</a></li> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered is some way or + form <em>except for your database</em>. Make 100% sure you backed this up before proceeding with the upgrade!</li> +<li>Enough storage space to contains SeAT 2, SeAT 3, a backup of SeAT 2 database and a backup of SeAT 3 database.</li> +<li>Take note of where SeAT 2 is installed. This is usually in <code>/var/www/seat</code>.</li> +</ul> +<h2 id="upgrade-procedure">Upgrade procedure<a class="headerlink" href="#upgrade-procedure" title="Permanent link">¶</a></h2> +<h3 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permanent link">¶</a></h3> +<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may +risk losing some information (although unlikely). Its therefore recommended that you start by putting +SeAT into maintenance mode before starting the upgrade. Do this by running the following command in your SeAT path. </p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>down +</span></code></pre></div> +<p>If you are running this migration after CCP killed the XML API then there is probably no risk of the updaters doing anything useful anyways :D</p> +<h3 id="backups">Backups<a class="headerlink" href="#backups" title="Permanent link">¶</a></h3> +<ul> +<li>Make a backup of your SeAT database and store it somewhere safe! <strong>Do not skip this step!</strong></li> +<li>In your SeAT directory, make a copy of the <code>.env</code> file. This file contains all of your SeAT configuration. These values may be useful in case of failure.</li> +</ul> +<h3 id="installing-seat-30">Installing SeAT 3.0<a class="headerlink" href="#installing-seat-30" title="Permanent link">¶</a></h3> +<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat2</code>. +You don't have to update any config since we will only use the command line for the process. +<code>mv /var/www/seat /var/www/seat2</code></p> +<p>Follow standard installation instructions for SeAT 3.0.</p> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>You need to keep the current SeAT 2.0 installed in order to migrate data to a newly installed 3.0 instance. +It doesn't have to be reachable from internet though since we will only use the command line for the process.</p> +</div> +<h3 id="installing-the-migrator-package-on-seat-20">Installing the migrator package on SeAT 2.0<a class="headerlink" href="#installing-the-migrator-package-on-seat-20" title="Permanent link">¶</a></h3> +<ul> +<li>Move to your SeAT 2.0 installation directory (should be <code>/var/www/seat2</code> - unless you changed it)</li> +<li>Add the package called <code>seat-migrator</code> using <code>composer require warlof/seat-migrator</code></li> +<li>Edit the <code>app.php</code> file inside the <code>config</code> folder by appending <code>Warlof\Seat\Migrator\MigratorServiceProvider::class,</code> to the end of <code>providers</code> array.</li> +<li>Once done, publish the package files using <code>php artisan vendor:publish --force</code></li> +<li>Run migration scripts with <code>php artisan migrate</code></li> +<li>Finally, run <code>php artisan seat:migrator:upgrade</code> and follow the wizard</li> +</ul> +<p>At the end of the process, you will have most of your data transferred into the specified SeAT 3.0 database. +Next, you can remove the seat2 directory with <code>rm -R /var/www/seat2</code> and the old database.</p> +<p>Enjoy SeAT 3.0</p> +<div class="admonition note"> +<p class="admonition-title">Note</p> +<p>In case of any troubles, the migrator package did a backup before starting the migration process. +The output is specified in the prompt while it is being done, but you will also find it in <code>/var/www/seat2/storage/backup</code>.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_3_0/bare_metal/index.html b/upgrading/from_seat_3_0/bare_metal/index.html new file mode 100644 index 00000000..503b3a1a --- /dev/null +++ b/upgrading/from_seat_3_0/bare_metal/index.html @@ -0,0 +1,1651 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_3_0/bare_metal/"> + + + <link rel="prev" href="../docker/"> + + + <link rel="next" href="../../from_seat_2_0/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Bare metal - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-30-to-40-bare-metal" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Bare metal + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" checked> + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="true"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Bare metal + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Bare metal + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-40" class="md-nav__link"> + Installing SeAT 4.0 + </a> + + <nav class="md-nav" aria-label="Installing SeAT 4.0"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat" class="md-nav__link"> + SeAT + </a> + +</li> + + <li class="md-nav__item"> + <a href="#setup" class="md-nav__link"> + Setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#complete" class="md-nav__link"> + Complete + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#access" class="md-nav__link"> + Access + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-40" class="md-nav__link"> + Installing SeAT 4.0 + </a> + + <nav class="md-nav" aria-label="Installing SeAT 4.0"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat" class="md-nav__link"> + SeAT + </a> + +</li> + + <li class="md-nav__item"> + <a href="#setup" class="md-nav__link"> + Setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#complete" class="md-nav__link"> + Complete + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#access" class="md-nav__link"> + Access + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<h1 id="seat-30-to-40-bare-metal">SeAT 3.0 to 4.0 (Bare metal)<a class="headerlink" href="#seat-30-to-40-bare-metal" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 3.0 to SeAT 4.0 requires some manual work. This is primarily due to large amounts of refactoring that made it into SeAT 4.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Major changes have been made to the way packages workg together, especially the eveapi, web and services packages.</p> +<p>The way jobs are queued and queues themselves have also changed, mostly to reduce resource usage and to improve fluency.</p> +<p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 4. If you are unsure, join us on Slack so that we can tru and assist or redirect you to proper person.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Before you do anything, read and understand this entire upgrade guide.</p> +<p>Those instructions are valid for bare metal deployment only (non-docker installation). +Please refer to <a href="../docker/">docker instructions</a> for a Docker installation.</p> +<p><strong>Remember</strong> to do a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p> +</div> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>Check <a href="../../../installation/requirements/">SeAT 4.0 requirements</a></li> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered in some way or form except <em>for your database</em>.</li> +<li>Enough storage space to have SeAT 3, SeAT 4 and a backup of your SeAT 3 database.</li> +<li>Ensure all your SeAT 3 packages are up-to-date (check this in <strong>Settings > SeAT Settings</strong>)</li> +</ul> +<h2 id="upgrade-procedure">Upgrade Procedure<a class="headerlink" href="#upgrade-procedure" title="Permanent link">¶</a></h2> +<h3 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permanent link">¶</a></h3> +<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely) - or cause crash during database conversion. +Please start to turning SeAT in maintenance mode, cutting jobs and clearing caches before starting the upgrade.</p> +<p>Turn workers down, use the command</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>service<span class="w"> </span>supervisor<span class="w"> </span>stop +</span></code></pre></div> +<p>Put SeAT in maintenance mode</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan down'</span> +</span></code></pre></div> +<p>Clear cache</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan seat:cache:clear'</span> +</span></code></pre></div> +<h3 id="backups">Backups<a class="headerlink" href="#backups" title="Permanent link">¶</a></h3> +<ul> +<li>Make a backup of your SeAT database and store it somewhere safe! <strong>Do no skip this step!</strong></li> +<li>In your SeAT directory, make a copy of the <code>.env</code> file. +This file contains all your SeAT configuration, including tokens watermark required to update your registered users content. +These values might be useful in case of failure.</li> +</ul> +<h3 id="installing-seat-40">Installing SeAT 4.0<a class="headerlink" href="#installing-seat-40" title="Permanent link">¶</a></h3> +<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat3</code>. +You don't have to update any config since we will only use the command line for the process.</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>mv<span class="w"> </span>/var/www/seat<span class="w"> </span>/var/www/seat3 +</span></code></pre></div> +<h4 id="php">PHP<a class="headerlink" href="#php" title="Permanent link">¶</a></h4> +<p>If it's not already the case, you'll have to deploy at least PHP 7.3 on the server. +The provided command bellow will help you in this task and add newly required PHP extensions in the meantime.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span> +<span class="normal"><a href="#__codelineno-4-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>apt-get<span class="w"> </span>update +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a>apt-get<span class="w"> </span>install<span class="w"> </span>libpng-dev<span class="w"> </span>libfreetype6-dev<span class="w"> </span>libjpeg-dev +</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a>apt-get<span class="w"> </span>install<span class="w"> </span>curl<span class="w"> </span>openssl<span class="w"> </span>zip<span class="w"> </span>php7.3-bz2<span class="w"> </span>php7.3-cli<span class="w"> </span>php7.3-curl<span class="w"> </span>php7.3-dom<span class="w"> </span>php7.3-gd<span class="w"> </span>php7.3-gmp<span class="w"> </span>php7.3-intl<span class="w"> </span>php7.3-mbstring<span class="w"> </span>php7.3-mysql<span class="w"> </span>php7.3-opcache<span class="w"> </span>php7.3-redis<span class="w"> </span>php7.3-zip +</span></code></pre></div></td></tr></table></div> +<p>Remember to update your NGinX configuration to use the new CGI version. To do so, open configuration file located at <code>/etc/nginx/sites-available/seat</code> and replace</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a> fastcgi_pass unix:/run/php/php7.1-fpm.sock; +</span></code></pre></div> +<p>with</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a> fastcgi_pass unix:/run/php/php7.3-fpm.sock; +</span></code></pre></div> +<h4 id="seat">SeAT<a class="headerlink" href="#seat" title="Permanent link">¶</a></h4> +<p>Once packages have been updated, we will deploy the new SeAT's version using composer.</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>composer<span class="w"> </span>create-project<span class="w"> </span>eveseat/seat<span class="w"> </span>/var/www/seat<span class="w"> </span><span class="s2">"4.0.*"</span><span class="w"> </span>--no-dev<span class="w"> </span>--no-interaction +</span></code></pre></div> +<p>Once the download is done, you should have seen output such as:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-8-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-8-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-8-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-8-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-8-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-8-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-8-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-8-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-8-10">10</a></span> +<span class="normal"><a href="#__codelineno-8-11">11</a></span> +<span class="normal"><a href="#__codelineno-8-12">12</a></span> +<span class="normal"><a href="#__codelineno-8-13">13</a></span> +<span class="normal"><a href="#__codelineno-8-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a>Writing<span class="w"> </span>lock<span class="w"> </span>file +</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2"></a>Generating<span class="w"> </span>optimized<span class="w"> </span>autoload<span class="w"> </span>files +</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3"></a>><span class="w"> </span>Illuminate<span class="se">\F</span>oundation<span class="se">\C</span>omposerScripts::postAutoloadDump +</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4"></a>><span class="w"> </span>@php<span class="w"> </span>artisan<span class="w"> </span>package:discover +</span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>darkaonline/l5-swagger +</span><span id="__span-8-6"><a id="__codelineno-8-6" name="__codelineno-8-6"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/api +</span><span id="__span-8-7"><a id="__codelineno-8-7" name="__codelineno-8-7"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/console +</span><span id="__span-8-8"><a id="__codelineno-8-8" name="__codelineno-8-8"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/eveapi +</span><span id="__span-8-9"><a id="__codelineno-8-9" name="__codelineno-8-9"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/notifications +</span><span id="__span-8-10"><a id="__codelineno-8-10" name="__codelineno-8-10"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/services +</span><span id="__span-8-11"><a id="__codelineno-8-11" name="__codelineno-8-11"></a>Discovered<span class="w"> </span>Package:<span class="w"> </span>eveseat/web +</span><span id="__span-8-12"><a id="__codelineno-8-12" name="__codelineno-8-12"></a>Package<span class="w"> </span>manifest<span class="w"> </span>generated<span class="w"> </span>successfully. +</span><span id="__span-8-13"><a id="__codelineno-8-13" name="__codelineno-8-13"></a>><span class="w"> </span>@php<span class="w"> </span>artisan<span class="w"> </span>key:generate +</span><span id="__span-8-14"><a id="__codelineno-8-14" name="__codelineno-8-14"></a>Application<span class="w"> </span>key<span class="w"> </span><span class="o">[</span>base64:CmhqYNkaIcHo8nYC8LiEWa3U5/+BiTLih5dZftxlV2k<span class="o">=]</span><span class="w"> </span><span class="nb">set</span><span class="w"> </span>successfully. +</span></code></pre></div></td></tr></table></div> +<p>Finally, fix directories permissions using the two commands bellow:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>chown<span class="w"> </span>-R<span class="w"> </span>www-data:www-data<span class="w"> </span>/var/www/seat +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>chmod<span class="w"> </span>-R<span class="w"> </span>guo+w<span class="w"> </span>/var/www/seat/storage/ +</span></code></pre></div></td></tr></table></div> +<h4 id="setup">Setup<a class="headerlink" href="#setup" title="Permanent link">¶</a></h4> +<p>Now sources have been deployed, we have to update <code>.env</code> configuration file. +Use information from backup located at <code>/var/www/seat3/.env</code> to update the newly generated file located at <code>/var/www/seat/.env</code>.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>In case you had third party packages installed, it's time to deploy them back. +We invite you to report to their own documentation regarding any specific guideline.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Please pay special attention to <strong>APP_KEY</strong>, <strong>DB_HOST</strong>, <strong>DB_PORT</strong>, <strong>DB_DATABASE</strong>, <strong>DB_USERNAME</strong>, +<strong>DB_PASSWORD</strong>, <strong>EVE_CLIENT_ID</strong>, <strong>EVE_CLIENT_SECRET</strong> and <strong>EVE_CALLBACK_URL</strong> parameters.</p> +</div> +<h4 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h4> +<p>We will convert database to work with new SeAT version. To do so, we're using common commands disclosed bellow:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1">1</a></span> +<span class="normal"><a href="#__codelineno-10-2">2</a></span> +<span class="normal"><a href="#__codelineno-10-3">3</a></span> +<span class="normal"><a href="#__codelineno-10-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan vendor:publish --force --all'</span> +</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan migrate'</span> +</span><span id="__span-10-3"><a id="__codelineno-10-3" name="__codelineno-10-3"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan db:seed --class=Seat\\Console\\database\\seeds\\ScheduleSeeder'</span> +</span><span id="__span-10-4"><a id="__codelineno-10-4" name="__codelineno-10-4"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan eve:update:sde --force'</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="complete">Complete<a class="headerlink" href="#complete" title="Permanent link">¶</a></h3> +<p>Finally, restore workers states and put SeAT online using initial commands in reverse order.</p> +<p>Put SeAT online</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan up'</span> +</span></code></pre></div> +<p>Convert user tokens format from previous version</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan seat:token:upgrade'</span> +</span></code></pre></div> +<p>Turn workers up</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>service<span class="w"> </span>supervisor<span class="w"> </span>start +</span></code></pre></div> +<h2 id="access">Access<a class="headerlink" href="#access" title="Permanent link">¶</a></h2> +<p>SeAT 4.0 is coming with a complete revamp of permissions system. As a result, your previous roles haven't been converted. +However, they've been keep - so you can configure them with the new system.</p> +<p>You will have to use built-in admin account for your first connexion.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Super administrator is now an user flag and have to be defined at user level instead of Access Permissions. +You'll get more information regarding the new system on <a href="../../../admin_guides/admin_login/">Admin Login</a> and <a href="../../../admin_guides/authorizations/">Authorizations</a> pages.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_3_0/docker/index.html b/upgrading/from_seat_3_0/docker/index.html new file mode 100644 index 00000000..c3322be8 --- /dev/null +++ b/upgrading/from_seat_3_0/docker/index.html @@ -0,0 +1,1983 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_3_0/docker/"> + + + <link rel="prev" href="../../from_seat_4_0/bare_metal/"> + + + <link rel="next" href="../bare_metal/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Docker - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-30-to-40-docker" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Docker + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" checked> + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="true"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Docker + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Docker + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-upgrade-procedure" class="md-nav__link"> + Docker Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Docker Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#tldr-upgrades" class="md-nav__link"> + tl;dr upgrades + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-changes-since-seat-3" class="md-nav__link"> + Docker changes since SeAT 3 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#preperation" class="md-nav__link"> + Preperation + </a> + + <nav class="md-nav" aria-label="Preperation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#backup-your-database" class="md-nav__link"> + Backup your database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backup-your-env-file" class="md-nav__link"> + Backup your env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-docker-compose" class="md-nav__link"> + Upgrade docker-compose + </a> + +</li> + + <li class="md-nav__item"> + <a href="#stop-seat-3" class="md-nav__link"> + Stop SeAT 3 + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrading-to-seat-4" class="md-nav__link"> + Upgrading to SeAT 4 + </a> + + <nav class="md-nav" aria-label="Upgrading to SeAT 4"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#get-the-new-docker-compose-file" class="md-nav__link"> + Get the new docker-compose file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#get-the-new-env-file" class="md-nav__link"> + Get the new .env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configure-the-new-env-file" class="md-nav__link"> + Configure the new .env file + </a> + + <nav class="md-nav" aria-label="Configure the new .env file"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#traefik" class="md-nav__link"> + Traefik + </a> + + <nav class="md-nav" aria-label="Traefik"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#traefik-tls" class="md-nav__link"> + Traefik - TLS + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#eve-online-sso" class="md-nav__link"> + EVE Online SSO + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-seat-application-key" class="md-nav__link"> + The SeAT Application Key + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-details" class="md-nav__link"> + Database details + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#bringing-seat-4-up" class="md-nav__link"> + Bringing SeAT 4 up + </a> + +</li> + + <li class="md-nav__item"> + <a href="#check-your-installation" class="md-nav__link"> + Check your installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#convert-user-tokens" class="md-nav__link"> + Convert User Tokens + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update-eve-sde" class="md-nav__link"> + Update EVE SDE + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-upgrade-procedure" class="md-nav__link"> + Docker Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Docker Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#tldr-upgrades" class="md-nav__link"> + tl;dr upgrades + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-changes-since-seat-3" class="md-nav__link"> + Docker changes since SeAT 3 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#preperation" class="md-nav__link"> + Preperation + </a> + + <nav class="md-nav" aria-label="Preperation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#backup-your-database" class="md-nav__link"> + Backup your database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backup-your-env-file" class="md-nav__link"> + Backup your env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-docker-compose" class="md-nav__link"> + Upgrade docker-compose + </a> + +</li> + + <li class="md-nav__item"> + <a href="#stop-seat-3" class="md-nav__link"> + Stop SeAT 3 + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrading-to-seat-4" class="md-nav__link"> + Upgrading to SeAT 4 + </a> + + <nav class="md-nav" aria-label="Upgrading to SeAT 4"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#get-the-new-docker-compose-file" class="md-nav__link"> + Get the new docker-compose file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#get-the-new-env-file" class="md-nav__link"> + Get the new .env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#configure-the-new-env-file" class="md-nav__link"> + Configure the new .env file + </a> + + <nav class="md-nav" aria-label="Configure the new .env file"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#traefik" class="md-nav__link"> + Traefik + </a> + + <nav class="md-nav" aria-label="Traefik"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#traefik-tls" class="md-nav__link"> + Traefik - TLS + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#eve-online-sso" class="md-nav__link"> + EVE Online SSO + </a> + +</li> + + <li class="md-nav__item"> + <a href="#the-seat-application-key" class="md-nav__link"> + The SeAT Application Key + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database-details" class="md-nav__link"> + Database details + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#bringing-seat-4-up" class="md-nav__link"> + Bringing SeAT 4 up + </a> + +</li> + + <li class="md-nav__item"> + <a href="#check-your-installation" class="md-nav__link"> + Check your installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#convert-user-tokens" class="md-nav__link"> + Convert User Tokens + </a> + +</li> + + <li class="md-nav__item"> + <a href="#update-eve-sde" class="md-nav__link"> + Update EVE SDE + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<h1 id="seat-30-to-40-docker">SeAT 3.0 to 4.0 (Docker)<a class="headerlink" href="#seat-30-to-40-docker" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 3.0 to SeAT 4.0 requires some manual work. This is primarily due to large amounts of refactoring that made it into SeAT 4.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Major changes have been made to the way packages workg together, especially the eveapi, web and services packages.</p> +<p>The way jobs are queued and queues themselves have also changed, mostly to reduce resource usage and to improve fluency.</p> +<p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 4. If you are unsure, join us on Slack so that we can tru and assist or redirect you to proper person.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Before you do anything, read and understand this entire upgrade guide.</p> +<p>Those instructions are valid for Docker deployment only. +Please refer to <a href="../bare_metal/">bare metal instructions</a> for a non-docker installation.</p> +<p><strong>Remember</strong> to do make a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p> +</div> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>Check <a href="../../../installation/requirements/">SeAT 4.0 requirements</a></li> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered in some way or form except <em>for your database</em>.</li> +<li>Enough storage space to have SeAT 3, SeAT 4 and a backup of your SeAT 3 database.</li> +<li>Ensure all your SeAT 3 packages are up-to-date (check this in <strong>Settings > SeAT Settings</strong>)</li> +</ul> +<h2 id="docker-upgrade-procedure">Docker Upgrade Procedure<a class="headerlink" href="#docker-upgrade-procedure" title="Permanent link">¶</a></h2> +<p>If you are currently using a docker installation for SeAT 3, you are in for a treat because upgrading is super easy. All we are going to do is bring the v4 stack up, connect your database and watch as the Docker entrypoint takes care of the rest.</p> +<p>This guide is going to step through some quick preparation steps, then perform the upgrade and finally, check that everything worked out as expected. Let's dive in.</p> +<h3 id="tldr-upgrades">tl;dr upgrades<a class="headerlink" href="#tldr-upgrades" title="Permanent link">¶</a></h3> +<p>We highly reccomend that you read the details of this upgrade guide to get familiar with what has changed. But, if this is your nth upgrade, maybe you just want to get the summary of everything, so here it is:</p> +<ul> +<li>Make a <a href="../../../admin_guides/docker_admin/#database-backups-and-restore">backup</a> of your database.</li> +<li><code>cd</code> to your install dir (which is probably <code>/opt/seat-docker</code>) and bring the stack down with <code>docker-compose down</code></li> +<li>Make a copy of your <code>.env</code> and <code>docker-compose.yml</code> files.</li> +<li>Download the new <code>docker-compose.yml</code> file with <code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml -o docker-compose.yml</code>.</li> +<li>Down the new <code>.env</code> file with <code>curl -L https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env -o .env</code>.</li> +<li>Upgrade your <code>docker-compose</code> installation. It should be version <code>1.26</code> and up.</li> +<li>Configure the new <code>.env</code> file. Important configs include the <code>TRAEFIK_</code> variables, the <code>SEAT_SUBDOMAIN</code> variable. Copy over existing values from your old <code>.env</code> file for the <code>EVE_CLIENT_</code> variables, the <code>APP_KEY</code> varaible and finally the <code>DB_</code> variables.</li> +<li>Bring the stack back up with <code>docker-compose up -d</code> and watch the migration process.</li> +<li>Finally, once the migration process is complete, update the EVE SDE to populate the tables with static data with: <code>docker-compose exec seat-web php artisan eve:update:sde --force -n</code></li> +</ul> +<p>🎉</p> +<h3 id="docker-changes-since-seat-3">Docker changes since SeAT 3<a class="headerlink" href="#docker-changes-since-seat-3" title="Permanent link">¶</a></h3> +<p>A number of changes have been made how the docker-compose stack is glued together.</p> +<p>First, the docker repository for SeAT 4 has a new home <a href="https://github.com/eveseat/seat-docker">here</a>, and a new image <a href="https://hub.docker.com/r/eveseat/seat">here</a>.</p> +<p>In SeAT 3, services such as web, workers and cron were all using seperate images. For SeAT 4, we have consilidated all of that into a single image, with a service-aware entrypoint. The code for all of this lives in a new dedicated repository instead of being "hidden" away in the script repo <a href="https://github.com/eveseat/scripts/tree/master/docker-compose">here</a>. All of these changes also mean that we now have the ability to properly tag the docker images instead of relying on the <code>latest</code> tag like we did in SeAT 3. Finally.</p> +<p>Next, the default <code>nginx</code> web server has been replaced with <a href="https://containo.us/traefik/">Traefik</a>. For the majority of users this means little to no change to what you were used to. However, if you were fronting your instance with another reverse proxy, it is important to be aware of this change. The base image used for the SeAT docker image uses apache2 to serve the web UI, and Traefik reverse proxies to this, exposing it to the world. Advanced users can rip this out, expose the apache server directly and continue using the setup you have. The options are limitless.</p> +<h3 id="preperation">Preperation<a class="headerlink" href="#preperation" title="Permanent link">¶</a></h3> +<p>Before you upgrade, you need to backup.</p> +<h4 id="backup-your-database">Backup your database<a class="headerlink" href="#backup-your-database" title="Permanent link">¶</a></h4> +<p>The single most important thing you need is a backup of your SeAT 3 database. Without a backup you will <em>not</em> be able to recover in case of a disaster. So, head on over to the <a href="../../../admin_guides/docker_admin/#database-backups-and-restore">docker db backup section</a> and do that right now.</p> +<h4 id="backup-your-env-file">Backup your env file<a class="headerlink" href="#backup-your-env-file" title="Permanent link">¶</a></h4> +<p>The <code>.env</code> file is the one that has your SeAT installations' configuration. It contains things like your SSO Client ID and Secret (aka: credentials). By default, SeAT docker installations live in <code>/opt/seat-docker</code> meaning your <code>.env</code> file will be at <code>/opt/seat-docker/.env</code>. Make a copy of this file and store it somewhere safe.</p> +<h4 id="upgrade-docker-compose">Upgrade docker-compose<a class="headerlink" href="#upgrade-docker-compose" title="Permanent link">¶</a></h4> +<p>The <code>docker-compose</code> binary should be upgraded so that we can make use of <code>${VARIABLES}</code> inside <code>.env</code> files.</p> +<p>If you installed <code>docker-compose</code> using your OS' package manager, upgrade the tool using that. Otherwise, a <code>curl</code> invocation to download the latest version should also work.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://github.com/docker/compose/releases/download/1.26.2/docker-compose-<span class="k">$(</span>uname<span class="w"> </span>-s<span class="k">)</span>-<span class="k">$(</span>uname<span class="w"> </span>-m<span class="k">)</span><span class="w"> </span>-o<span class="w"> </span>/usr/local/bin/docker-compose +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>chmod<span class="w"> </span>+x<span class="w"> </span>/usr/local/bin/docker-compose +</span></code></pre></div></td></tr></table></div> +<h4 id="stop-seat-3">Stop SeAT 3<a class="headerlink" href="#stop-seat-3" title="Permanent link">¶</a></h4> +<p>First, we need to stop the SeAT 3 stack. Assuming you have the default <code>/opt/seat-docker</code> location for your installation, cd to it first and then run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>docker-compose<span class="w"> </span>down +</span></code></pre></div> +<p>The output should be similar to this:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-2-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-2-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-2-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-2-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-2-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-2-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-2-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-2-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-2-10">10</a></span> +<span class="normal"><a href="#__codelineno-2-11">11</a></span> +<span class="normal"><a href="#__codelineno-2-12">12</a></span> +<span class="normal"><a href="#__codelineno-2-13">13</a></span> +<span class="normal"><a href="#__codelineno-2-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a>root@seat:/opt/seat-docker# docker-compose down +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>Stopping seat-nginx ... done +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a>Stopping seat-cron ... done +</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a>Stopping seat-worker ... done +</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a>Stopping seat-app ... done +</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6"></a>Stopping seat-mariadb ... done +</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7"></a>Stopping seat-redis ... done +</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8"></a>Removing seat-nginx ... done +</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9"></a>Removing seat-cron ... done +</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10"></a>Removing seat-worker ... done +</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11"></a>Removing seat-app ... done +</span><span id="__span-2-12"><a id="__codelineno-2-12" name="__codelineno-2-12"></a>Removing seat-mariadb ... done +</span><span id="__span-2-13"><a id="__codelineno-2-13" name="__codelineno-2-13"></a>Removing seat-redis ... done +</span><span id="__span-2-14"><a id="__codelineno-2-14" name="__codelineno-2-14"></a>Removing network seat-docker_seat-network +</span></code></pre></div></td></tr></table></div> +<h3 id="upgrading-to-seat-4">Upgrading to SeAT 4<a class="headerlink" href="#upgrading-to-seat-4" title="Permanent link">¶</a></h3> +<h4 id="get-the-new-docker-compose-file">Get the new docker-compose file<a class="headerlink" href="#get-the-new-docker-compose-file" title="Permanent link">¶</a></h4> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>If you have made customisations to how you deployed SeAT with docker-compose, then you should probably <strong>not</strong> be replacing the compose file like we are about to do. Instead, have a look at the new one <a href="https://github.com/eveseat/seat-docker/blob/4.x/docker-compose.yml">here</a> and adapt.</p> +</div> +<p>Next, we will download the new SeAT 4 docker-compose file. Do that with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span> +<span class="normal"><a href="#__codelineno-3-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>mv<span class="w"> </span>docker-compose.yml<span class="w"> </span>docker-compose.yml.back +</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/4.x/docker-compose.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.yml +</span></code></pre></div></td></tr></table></div> +<p>With this we have created a copy of the older docker-compose file (just in case), and downloaded the new one.</p> +<h4 id="get-the-new-env-file">Get the new .env file<a class="headerlink" href="#get-the-new-env-file" title="Permanent link">¶</a></h4> +<p>The next step is to get a fresh copy of the new <code>.env</code> file to use together with the new docker-compose setup. There have been a number of changes to this file (primarily as a result of the web server swap out) which we will describe in the next section.</p> +<p>Get it with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>mv<span class="w"> </span>.env<span class="w"> </span>.env.back +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/4.x/.env<span class="w"> </span>-o<span class="w"> </span>.env +</span></code></pre></div></td></tr></table></div> +<h4 id="configure-the-new-env-file">Configure the new .env file<a class="headerlink" href="#configure-the-new-env-file" title="Permanent link">¶</a></h4> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>This is admitedly the hardest part of the migtation, so pay close attention. Take it slowly and think about what you are doing here.</p> +</div> +<p>There are four main settings categories that need to be updated in the new <code>.env</code> file. Those are:</p> +<ul> +<li>Traefik (webserver)</li> +<li>EVE Online SSO Config</li> +<li>The application key</li> +<li>Database credentials</li> +</ul> +<p>All of these categories will be described below in detail. For all of them, you have to open the newly downloaded <code>.env</code> file in a text editor and update the values. To be sure you are editing the correct file, check its header. It should say:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1">1</a></span> +<span class="normal"><a href="#__codelineno-5-2">2</a></span> +<span class="normal"><a href="#__codelineno-5-3">3</a></span> +<span class="normal"><a href="#__codelineno-5-4">4</a></span> +<span class="normal"><a href="#__codelineno-5-5">5</a></span> +<span class="normal"><a href="#__codelineno-5-6">6</a></span> +<span class="normal"><a href="#__codelineno-5-7">7</a></span> +<span class="normal"><a href="#__codelineno-5-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1"></a># SeAT Docker Compose Configuration +</span><span id="__span-5-2"><a id="__codelineno-5-2" name="__codelineno-5-2"></a> +</span><span id="__span-5-3"><a id="__codelineno-5-3" name="__codelineno-5-3"></a># Web server configuration. +</span><span id="__span-5-4"><a id="__codelineno-5-4" name="__codelineno-5-4"></a># SeAT running in a docker-compose setup ships with Traefik +</span><span id="__span-5-5"><a id="__codelineno-5-5" name="__codelineno-5-5"></a># as the default web server. You only need to configure the +</span><span id="__span-5-6"><a id="__codelineno-5-6" name="__codelineno-5-6"></a># parent domain and port where the web server will listen. +</span><span id="__span-5-7"><a id="__codelineno-5-7" name="__codelineno-5-7"></a># In most cases, just configuring the domain will be all +</span><span id="__span-5-8"><a id="__codelineno-5-8" name="__codelineno-5-8"></a># you need to do. +</span></code></pre></div></td></tr></table></div> +<h5 id="traefik">Traefik<a class="headerlink" href="#traefik" title="Permanent link">¶</a></h5> +<p>As mentioned earlier. The web server has been swapped out in favour of Traefik. As a result, you need to set a few configuration options to get the web UI to work. If you have a setup where you have configured something like <code>nginx</code> outside of your Docker installation, we highly reccomend you just remove that and switch over to Traefik. Of anything, it's handling of TLS with Let's Encrypt is quite literally a one-time setup and forget thing.</p> +<p>Inside the <code>.env</code> file, Traefik specific configuration options are prefixed with <code>TRAEFIK_</code>. They are:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1">1</a></span> +<span class="normal"><a href="#__codelineno-6-2">2</a></span> +<span class="normal"><a href="#__codelineno-6-3">3</a></span> +<span class="normal"><a href="#__codelineno-6-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1"></a>TRAEFIK_DOMAIN=seat.local +</span><span id="__span-6-2"><a id="__codelineno-6-2" name="__codelineno-6-2"></a>TRAEFIK_HTTPS_PORT=443 +</span><span id="__span-6-3"><a id="__codelineno-6-3" name="__codelineno-6-3"></a>TRAEFIK_HTTP_PORT=80 +</span><span id="__span-6-4"><a id="__codelineno-6-4" name="__codelineno-6-4"></a>TRAEFIK_ACME_EMAIL=you@domain.com +</span></code></pre></div></td></tr></table></div> +<p>These fields need to be updated as follows:</p> +<ul> +<li><code>TRAEFIK_DOMAIN</code>: This is the base domain where your SeAT installation lives. For example, if your SeAT 3 installation lives at seat.domain.com, you enter domain.com here.</li> +<li><code>TRAEFIK_HTTPS_PORT</code>: This is the external port that will be open to the world. SeAT 4 in docker with Traefik will only listen on TLS as well. Since its configured to be <code>443</code>, it will most likely clash with your external web server. We reccomend that you just disable your external web server and use Traefik. TLS configuration with it is a breeze!</li> +<li><code>TRAEFIK_HTTPS_PORT</code>: This is the non-TLS port that Let's Encrypt (as part of the ACME protocol) will connect to during certificate renewals. SeAT will not be available here.</li> +<li><code>TRAEFIK_ACME_EMAIL</code>: The email address used for Let's Encrypt certificate renewals.</li> +</ul> +<p>A <code>SEAT_SUBDOMAIN</code> value is also present, which sets the subdomain where the SeAT web UI lives. This value needs to match what your SeAT 3 installation used, especially so that the existing SSO application you have configured on the EVE SSO portal matches the configured callback url.</p> +<p>By default, most folks will only configure the domain, subdomain and email and be done. Of course, if you have custom configurations and needs, feel free to adapt.</p> +<h6 id="traefik-tls">Traefik - TLS<a class="headerlink" href="#traefik-tls" title="Permanent link">¶</a></h6> +<p>Traefik should handle all of the relevant configuration to get your site to listen with a valid TLS certificate. The secrets for the TLS configuration in Traefik relies on an <code>acme.json</code> file which you should mount into the Traefik container from the outside so that it persists restart.</p> +<p>Prepare the json file from within <code>/opt/seat-docker</code> with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1">1</a></span> +<span class="normal"><a href="#__codelineno-7-2">2</a></span> +<span class="normal"><a href="#__codelineno-7-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a>mkdir<span class="w"> </span>acme +</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2"></a>touch<span class="w"> </span>acme/acme.json +</span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3"></a>chmod<span class="w"> </span><span class="m">600</span><span class="w"> </span>acme/acme.json +</span></code></pre></div></td></tr></table></div> +<p>Next, make sure you have the <code>TRAEFIK_ACME_EMAIL</code> variable set, and finally, uncomment the labels that will make use of the Let's Encrypt cert resolver in the <code>docker-compose.yml</code> file. By default, they will look like this, whereby you need to remove the <code>#</code> in front.</p> +<p>(Note: the line below in <code>docker-compose.yml</code> is located in two places, only remove the <code>#</code> from seat-web)</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>#- "traefik.http.routers.seat-web.tls.certResolver=primary" +</span></code></pre></div> +<h5 id="eve-online-sso">EVE Online SSO<a class="headerlink" href="#eve-online-sso" title="Permanent link">¶</a></h5> +<p>Since SeAT's authentication relies on EVE's SSO, you need to configure the relevant client id and secret. You can find your old values in the backup you have made of the <code>.env</code> file. The values you need to set are:</p> +<ul> +<li><code>EVE_CLIENT_ID</code></li> +<li><code>EVE_CLIENT_SECRET</code></li> +</ul> +<p>For the callback URL, ensure that you have correctly configured the <code>SEAT_SUBDOMAIN</code> value in the previous step.</p> +<h5 id="the-seat-application-key">The SeAT Application Key<a class="headerlink" href="#the-seat-application-key" title="Permanent link">¶</a></h5> +<p>By default, the <code>APP_KEY</code> value for a fresh <code>.env</code> file will be <code>insecure</code>. This is a purposefully incorrectly formatted value. You can simply set this to the value you have for the same variable in your backup <code>.env</code> file.</p> +<h5 id="database-details">Database details<a class="headerlink" href="#database-details" title="Permanent link">¶</a></h5> +<p>This is one of the more important steps. The database configuration needs to match what your SeAT 3 installation used because the database data lives in a docker volume. When the stack will start up for the first time again, the SeAT 4 container will have access to the SeAT 3 database volume, and run migrations there. So, you need to copy the database credentials from the old <code>.env</code> file to the new one.</p> +<p>The variable names have remained unchanged, but for referece they are:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span> +<span class="normal"><a href="#__codelineno-9-2">2</a></span> +<span class="normal"><a href="#__codelineno-9-3">3</a></span> +<span class="normal"><a href="#__codelineno-9-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a>DB_DATABASE=seat +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>DB_USERNAME=seat +</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3"></a>DB_HOST=mariadb +</span><span id="__span-9-4"><a id="__codelineno-9-4" name="__codelineno-9-4"></a>DB_PASSWORD=i_should_be_changed +</span></code></pre></div></td></tr></table></div> +<h3 id="bringing-seat-4-up">Bringing SeAT 4 up<a class="headerlink" href="#bringing-seat-4-up" title="Permanent link">¶</a></h3> +<p>The only thing that is left to do is to start the stack up again. The first time we are goin to start SeAT 4 we wont use the <code>-d</code> flag. This is just so that you can see what's happening during the upgrade procedure. So, start SeAT with:</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>docker-compose up +</span></code></pre></div> +<p>You should see something like this happen when you run the above command:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span> +<span class="normal"><a href="#__codelineno-11-2">2</a></span> +<span class="normal"><a href="#__codelineno-11-3">3</a></span> +<span class="normal"><a href="#__codelineno-11-4">4</a></span> +<span class="normal"><a href="#__codelineno-11-5">5</a></span> +<span class="normal"><a href="#__codelineno-11-6">6</a></span> +<span class="normal"><a href="#__codelineno-11-7">7</a></span> +<span class="normal"><a href="#__codelineno-11-8">8</a></span> +<span class="normal"><a href="#__codelineno-11-9">9</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a>root@seat:/opt/seat-docker# docker-compose up +</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2"></a>Creating network "seat-docker_seat-network" with the default driver +</span><span id="__span-11-3"><a id="__codelineno-11-3" name="__codelineno-11-3"></a>Pulling mariadb (mariadb:10)... +</span><span id="__span-11-4"><a id="__codelineno-11-4" name="__codelineno-11-4"></a>10: Pulling from library/mariadb +</span><span id="__span-11-5"><a id="__codelineno-11-5" name="__codelineno-11-5"></a>3ff22d22a855: Already exists +</span><span id="__span-11-6"><a id="__codelineno-11-6" name="__codelineno-11-6"></a>e7cb79d19722: Already exists +</span><span id="__span-11-7"><a id="__codelineno-11-7" name="__codelineno-11-7"></a>323d0d660b6a: Already exists +</span><span id="__span-11-8"><a id="__codelineno-11-8" name="__codelineno-11-8"></a> +</span><span id="__span-11-9"><a id="__codelineno-11-9" name="__codelineno-11-9"></a>... +</span></code></pre></div></td></tr></table></div> +<p>After a while, migrations should start running:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-12-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-12-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-12-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-12-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-12-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-12-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-12-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-12-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-12-10">10</a></span> +<span class="normal"><a href="#__codelineno-12-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a>... +</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a> +</span><span id="__span-12-3"><a id="__codelineno-12-3" name="__codelineno-12-3"></a>seat-web_1 | starting web service +</span><span id="__span-12-4"><a id="__codelineno-12-4" name="__codelineno-12-4"></a>seat-web_1 | Starting first run routines +</span><span id="__span-12-5"><a id="__codelineno-12-5" name="__codelineno-12-5"></a>seat-web_1 | Migrating: 2018_06_05_110000_drop_assets_from_outposts +</span><span id="__span-12-6"><a id="__codelineno-12-6" name="__codelineno-12-6"></a>seat-web_1 | Migrated: 2018_06_05_110000_drop_assets_from_outposts (0.02 seconds) +</span><span id="__span-12-7"><a id="__codelineno-12-7" name="__codelineno-12-7"></a>seat-web_1 | Migrating: 2019_02_09_110731_drop_type_from_notification_groups +</span><span id="__span-12-8"><a id="__codelineno-12-8" name="__codelineno-12-8"></a>seat-web_1 | Migrated: 2019_02_09_110731_drop_type_from_notification_groups (0.01 seconds) +</span><span id="__span-12-9"><a id="__codelineno-12-9" name="__codelineno-12-9"></a>seat-web_1 | Migrating: 2019_05_11_164831_add_permission_role_filter +</span><span id="__span-12-10"><a id="__codelineno-12-10" name="__codelineno-12-10"></a> +</span><span id="__span-12-11"><a id="__codelineno-12-11" name="__codelineno-12-11"></a>... +</span></code></pre></div></td></tr></table></div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Do <strong>not</strong> interrupt the database migration phase. It will leave your database in a potentially corrupt state, meaning you are going to have to do some extra pluming to get a backup restored. Not a train smash, but not worth it.</p> +</div> +<p>Be patient, there are many, many database changes that need to apply.</p> +<p>Eventually, when everything is done you should start seeing the following output:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span> +<span class="normal"><a href="#__codelineno-13-2">2</a></span> +<span class="normal"><a href="#__codelineno-13-3">3</a></span> +<span class="normal"><a href="#__codelineno-13-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a>seat-worker_1 | [2020-08-19 21:11:45][2] Processing: Seat\Eveapi\Jobs\Status\Status +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a>seat-worker_1 | [2020-08-19 21:11:45][1] Processing: Seat\Eveapi\Jobs\Status\Esi +</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3"></a>seat-worker_1 | [2020-08-19 21:11:46][2] Processed: Seat\Eveapi\Jobs\Status\Status +</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4"></a>seat-worker_1 | [2020-08-19 21:11:46][1] Processed: Seat\Eveapi\Jobs\Status\Esi +</span></code></pre></div></td></tr></table></div> +<p>This is a good sign, and means everything is now ready!</p> +<h3 id="check-your-installation">Check your installation<a class="headerlink" href="#check-your-installation" title="Permanent link">¶</a></h3> +<p>The first obvious step will be to check that you can access the web UI. If not, something is probably weird with the web server configuration and needs some tweaking.</p> +<p>If everything seems to be working fine, you can hit <code>crtl + c</code> which will bring the stack down gracefully.</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-14-1">1</a></span> +<span class="normal"><a href="#__codelineno-14-2">2</a></span> +<span class="normal"><a href="#__codelineno-14-3">3</a></span> +<span class="normal"><a href="#__codelineno-14-4">4</a></span> +<span class="normal"><a href="#__codelineno-14-5">5</a></span> +<span class="normal"><a href="#__codelineno-14-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1"></a>^CGracefully stopping... (press Ctrl+C again to force) +</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2"></a>Stopping seat-docker_seat-cron_1 ... +</span><span id="__span-14-3"><a id="__codelineno-14-3" name="__codelineno-14-3"></a>Stopping seat-docker_seat-worker_1 ... +</span><span id="__span-14-4"><a id="__codelineno-14-4" name="__codelineno-14-4"></a>Stopping seat-docker_seat-web_1 ... +</span><span id="__span-14-5"><a id="__codelineno-14-5" name="__codelineno-14-5"></a>Stopping seat-docker_traefik_1 ... done +</span><span id="__span-14-6"><a id="__codelineno-14-6" name="__codelineno-14-6"></a>Stopping seat-docker_redis_1 ... +</span></code></pre></div></td></tr></table></div> +<p>Then, bring it back up with the <code>-d</code> flag.</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span></code></pre></div> +<h3 id="convert-user-tokens">Convert User Tokens<a class="headerlink" href="#convert-user-tokens" title="Permanent link">¶</a></h3> +<p>SeAT 4.x is using the new CCP Token format (v2). In order to use registered tokens from your previous installation, +you'll have to run the following command:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>seat-web<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>seat:token:upgrade +</span></code></pre></div> +<h3 id="update-eve-sde">Update EVE SDE<a class="headerlink" href="#update-eve-sde" title="Permanent link">¶</a></h3> +<p>This is the final step, for real. You need to update the EVE SDE. With your stack up and running (after executing <code>docker-compose up -d</code>), you can now force an SDE update with:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>docker-compose<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>seat-web<span class="w"> </span>php<span class="w"> </span>artisan<span class="w"> </span>eve:update:sde<span class="w"> </span>--force<span class="w"> </span>-n +</span></code></pre></div> +<p>Congrats, and welcome to SeAT 4!</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Super administrator is now an user flag and have to be defined at user level instead of Access Permissions. +You'll get more information regarding the new system on <a href="../../../admin_guides/admin_login/">Admin Login</a> and <a href="../../../admin_guides/authorizations/">Authorizations</a> pages.</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_4_0/bare_metal/index.html b/upgrading/from_seat_4_0/bare_metal/index.html new file mode 100644 index 00000000..0a00def6 --- /dev/null +++ b/upgrading/from_seat_4_0/bare_metal/index.html @@ -0,0 +1,1624 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_4_0/bare_metal/"> + + + <link rel="prev" href="../docker/"> + + + <link rel="next" href="../../from_seat_3_0/docker/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Bare metal - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-4x-to-50-bare-metal" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Bare metal + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" checked> + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="true"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Bare metal + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Bare metal + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-50" class="md-nav__link"> + Installing SeAT 5.0 + </a> + + <nav class="md-nav" aria-label="Installing SeAT 5.0"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat" class="md-nav__link"> + SeAT + </a> + +</li> + + <li class="md-nav__item"> + <a href="#setup" class="md-nav__link"> + Setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#complete" class="md-nav__link"> + Complete + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#upgrade-procedure" class="md-nav__link"> + Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#preparation" class="md-nav__link"> + Preparation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backups" class="md-nav__link"> + Backups + </a> + +</li> + + <li class="md-nav__item"> + <a href="#installing-seat-50" class="md-nav__link"> + Installing SeAT 5.0 + </a> + + <nav class="md-nav" aria-label="Installing SeAT 5.0"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#php" class="md-nav__link"> + PHP + </a> + +</li> + + <li class="md-nav__item"> + <a href="#seat" class="md-nav__link"> + SeAT + </a> + +</li> + + <li class="md-nav__item"> + <a href="#setup" class="md-nav__link"> + Setup + </a> + +</li> + + <li class="md-nav__item"> + <a href="#database" class="md-nav__link"> + Database + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#complete" class="md-nav__link"> + Complete + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<h1 id="seat-4x-to-50-bare-metal">SeAT 4.x to 5.0 (Bare metal)<a class="headerlink" href="#seat-4x-to-50-bare-metal" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 4.0 to SeAT 5.0 requires a tiny amount of manual work.</p> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Before you do anything, read and understand this entire upgrade guide.</p> +<p>Those instructions are valid for bare metal deployment only (non-docker installation). +Please refer to <a href="../docker/">docker instructions</a> for a Docker installation.</p> +<p><strong>Remember</strong> to do a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p> +</div> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 5. If you are unsure, join us on Discord so that we can assist or redirect you to the proper person.</p> +</div> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>Check [SeAT 5.0 requirements]</li> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered in some way or form except <em>for your database</em>.</li> +<li>Enough storage space to have SeAT 5, SeAT 4 and a backup of your SeAT 4 database.</li> +<li>Ensure all your SeAT 4 packages are up-to-date (check this in <strong>Settings > SeAT Settings</strong>)</li> +</ul> +<h2 id="upgrade-procedure">Upgrade Procedure<a class="headerlink" href="#upgrade-procedure" title="Permanent link">¶</a></h2> +<h3 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permanent link">¶</a></h3> +<p>If users are using your SeAT instance, or the workers are churning away in the background, then you may risk losing some information (although unlikely) - or cause crash during database conversion. +Please start to turning SeAT in maintenance mode, cutting jobs and clearing caches before starting the upgrade.</p> +<p>Turn workers down, use the command</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>systemctl<span class="w"> </span>stop<span class="w"> </span>supervisor.service +</span></code></pre></div></td></tr></table></div> +<p>Put SeAT in maintenance mode</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan down'</span> +</span></code></pre></div></td></tr></table></div> +<p>Clear cache</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan seat:cache:clear'</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="backups">Backups<a class="headerlink" href="#backups" title="Permanent link">¶</a></h3> +<ul> +<li>Make a backup of your SeAT database and store it somewhere safe! <strong>Do no skip this step!</strong></li> +<li>In your SeAT directory, make a copy of the <code>.env</code> file. + This file contains all your SeAT configuration, including the keys to the ESI tokens required to update your registered users content. + These values might be useful in case of failure.</li> +</ul> +<h3 id="installing-seat-50">Installing SeAT 5.0<a class="headerlink" href="#installing-seat-50" title="Permanent link">¶</a></h3> +<p>Rename the current SeAT directory from <code>/var/www/seat</code> to <code>/var/www/seat4</code>. +You don't have to update any config since we will only use the command line for the process.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1"></a>mv<span class="w"> </span>/var/www/seat<span class="w"> </span>/var/www/seat4 +</span></code></pre></div></td></tr></table></div> +<h4 id="php">PHP<a class="headerlink" href="#php" title="Permanent link">¶</a></h4> +<p>SeAT 5 needs PHP 8.2 on the server. +The provided command bellow will help you in this task and add newly required PHP extensions in the meantime.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span> +<span class="normal"><a href="#__codelineno-4-2">2</a></span> +<span class="normal"><a href="#__codelineno-4-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1"></a>apt-get<span class="w"> </span>update +</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2"></a>apt-get<span class="w"> </span>install<span class="w"> </span>libpng-dev<span class="w"> </span>libfreetype6-dev<span class="w"> </span>libjpeg-dev +</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3"></a>apt-get<span class="w"> </span>install<span class="w"> </span>openssl<span class="w"> </span>zip<span class="w"> </span>php8.2-fpm<span class="w"> </span>php8.2-bz2<span class="w"> </span>php8.2-cli<span class="w"> </span>php8.2-curl<span class="w"> </span>php8.2-dom<span class="w"> </span>php8.2-gd<span class="w"> </span>php8.2-gmp<span class="w"> </span>php8.2-intl<span class="w"> </span>php8.2-mbstring<span class="w"> </span>php8.2-mysql<span class="w"> </span>php8.2-opcache<span class="w"> </span>php8.2-redis<span class="w"> </span>php8.2-zip +</span></code></pre></div></td></tr></table></div> +<p>Remember to update your NGinX configuration to use the new CGI version. To do so, open configuration file located at <code>/etc/nginx/sites-available/seat</code> and replace</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>fastcgi_pass unix:/run/php/php7.3-fpm.sock; +</span></code></pre></div> +<p>with</p> +<div class="language-text highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>fastcgi_pass unix:/run/php/php8.2-fpm.sock; +</span></code></pre></div> +<p>Restart nginx to load the changes:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1"></a>systemctl<span class="w"> </span>restart<span class="w"> </span>nginx.service +</span></code></pre></div></td></tr></table></div> +<h4 id="seat">SeAT<a class="headerlink" href="#seat" title="Permanent link">¶</a></h4> +<p>Once packages have been updated, we will deploy the new SeAT's version using composer.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a>composer<span class="w"> </span>create-project<span class="w"> </span>eveseat/seat<span class="w"> </span>/var/www/seat<span class="w"> </span><span class="s2">"5.0"</span><span class="w"> </span>--no-dev<span class="w"> </span>--no-interaction +</span></code></pre></div></td></tr></table></div> +<p>Once the download is done, you should have seen output such as:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-9-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-9-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-9-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-9-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-9-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-9-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-9-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-9-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-9-10">10</a></span> +<span class="normal"><a href="#__codelineno-9-11">11</a></span> +<span class="normal"><a href="#__codelineno-9-12">12</a></span> +<span class="normal"><a href="#__codelineno-9-13">13</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1"></a><span class="m">76</span><span class="w"> </span>packages<span class="w"> </span>you<span class="w"> </span>are<span class="w"> </span>using<span class="w"> </span>are<span class="w"> </span>looking<span class="w"> </span><span class="k">for</span><span class="w"> </span>funding. +</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2"></a>Use<span class="w"> </span>the<span class="w"> </span><span class="sb">`</span>composer<span class="w"> </span>fund<span class="sb">`</span><span class="w"> </span><span class="nb">command</span><span class="w"> </span>to<span class="w"> </span>find<span class="w"> </span>out<span class="w"> </span>more! +</span><span id="__span-9-3"><a id="__codelineno-9-3" name="__codelineno-9-3"></a>><span class="w"> </span>@php<span class="w"> </span>artisan<span class="w"> </span>vendor:publish<span class="w"> </span>--tag<span class="o">=</span>laravel-assets<span class="w"> </span>--ansi<span class="w"> </span>--force +</span><span id="__span-9-4"><a id="__codelineno-9-4" name="__codelineno-9-4"></a> +</span><span id="__span-9-5"><a id="__codelineno-9-5" name="__codelineno-9-5"></a><span class="w"> </span>INFO<span class="w"> </span>Publishing<span class="w"> </span><span class="o">[</span>laravel-assets<span class="o">]</span><span class="w"> </span>assets.<span class="w"> </span> +</span><span id="__span-9-6"><a id="__codelineno-9-6" name="__codelineno-9-6"></a> +</span><span id="__span-9-7"><a id="__codelineno-9-7" name="__codelineno-9-7"></a><span class="w"> </span>Copying<span class="w"> </span>directory<span class="w"> </span><span class="o">[</span>vendor/laravel/horizon/public<span class="o">]</span><span class="w"> </span>to<span class="w"> </span><span class="o">[</span>public/vendor/horizon<span class="o">]</span><span class="w"> </span>DONE +</span><span id="__span-9-8"><a id="__codelineno-9-8" name="__codelineno-9-8"></a><span class="w"> </span>Copying<span class="w"> </span>directory<span class="w"> </span><span class="o">[</span>vendor/opcodesio/log-viewer/public<span class="o">]</span><span class="w"> </span>to<span class="w"> </span><span class="o">[</span>public/vendor/log-viewer<span class="o">]</span><span class="w"> </span>DONE +</span><span id="__span-9-9"><a id="__codelineno-9-9" name="__codelineno-9-9"></a> +</span><span id="__span-9-10"><a id="__codelineno-9-10" name="__codelineno-9-10"></a>No<span class="w"> </span>security<span class="w"> </span>vulnerability<span class="w"> </span>advisories<span class="w"> </span>found. +</span><span id="__span-9-11"><a id="__codelineno-9-11" name="__codelineno-9-11"></a>><span class="w"> </span>@php<span class="w"> </span>artisan<span class="w"> </span>key:generate<span class="w"> </span>--ansi +</span><span id="__span-9-12"><a id="__codelineno-9-12" name="__codelineno-9-12"></a> +</span><span id="__span-9-13"><a id="__codelineno-9-13" name="__codelineno-9-13"></a><span class="w"> </span>INFO<span class="w"> </span>Application<span class="w"> </span>key<span class="w"> </span><span class="nb">set</span><span class="w"> </span>successfully.<span class="w"> </span> +</span></code></pre></div></td></tr></table></div> +<p>Finally, fix directories permissions using the two commands bellow:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1">1</a></span> +<span class="normal"><a href="#__codelineno-10-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1"></a>chown<span class="w"> </span>-R<span class="w"> </span>www-data:www-data<span class="w"> </span>/var/www/seat +</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2"></a>chmod<span class="w"> </span>-R<span class="w"> </span>guo+w<span class="w"> </span>/var/www/seat/storage/ +</span></code></pre></div></td></tr></table></div> +<h4 id="setup">Setup<a class="headerlink" href="#setup" title="Permanent link">¶</a></h4> +<p>Now sources have been deployed, we have to update <code>.env</code> configuration file. +Use information from backup located at <code>/var/www/seat4/.env</code> to update the newly generated file located at<code>/var/www/seat/.env</code>.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +</div> +<p>In case you had third party packages installed, it's time to deploy them back. +We invite you to report to their own documentation regarding any specific guideline.</p> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +</div> +<p>Please pay special attention to <strong>APP_KEY</strong>, <strong>APP_URL</strong>, <strong>DB_HOST</strong>, <strong>DB_PORT</strong>, <strong>DB_DATABASE</strong>, <strong>DB_USERNAME</strong>, +<strong>DB_PASSWORD</strong>, <strong>EVE_CLIENT_ID</strong>, <strong>EVE_CLIENT_SECRET</strong> and <strong>EVE_CALLBACK_URL</strong> parameters.</p> +<h4 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h4> +<p>We will convert database to work with new SeAT version. To do so, we're using common commands disclosed bellow:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span> +<span class="normal"><a href="#__codelineno-11-2">2</a></span> +<span class="normal"><a href="#__codelineno-11-3">3</a></span> +<span class="normal"><a href="#__codelineno-11-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan vendor:publish --force --all'</span> +</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan migrate'</span> +</span><span id="__span-11-3"><a id="__codelineno-11-3" name="__codelineno-11-3"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan db:seed --class=Seat\\Services\\Database\\Seeders\\PluginDatabaseSeeder'</span> +</span><span id="__span-11-4"><a id="__codelineno-11-4" name="__codelineno-11-4"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan eve:update:sde --force'</span> +</span></code></pre></div></td></tr></table></div> +<h3 id="complete">Complete<a class="headerlink" href="#complete" title="Permanent link">¶</a></h3> +<p>Finally, restore workers states and put SeAT online using initial commands in reverse order.</p> +<p>Put SeAT online</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a>sudo<span class="w"> </span>-H<span class="w"> </span>-u<span class="w"> </span>www-data<span class="w"> </span>bash<span class="w"> </span>-c<span class="w"> </span><span class="s1">'php /var/www/seat/artisan up'</span> +</span></code></pre></div></td></tr></table></div> +<p>Turn workers up</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a>systemctl<span class="w"> </span>start<span class="w"> </span>supervisor.service +</span></code></pre></div></td></tr></table></div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/from_seat_4_0/docker/index.html b/upgrading/from_seat_4_0/docker/index.html new file mode 100644 index 00000000..42976859 --- /dev/null +++ b/upgrading/from_seat_4_0/docker/index.html @@ -0,0 +1,1970 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/from_seat_4_0/docker/"> + + + <link rel="prev" href="../../general/"> + + + <link rel="next" href="../bare_metal/"> + + <link rel="icon" href="../../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Docker - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../../css/extra_typo.css"> + + <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#seat-4x-to-50-docker" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Docker + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" checked> + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="true"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Docker + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Docker + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-upgrade-procedure" class="md-nav__link"> + Docker Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Docker Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#tldr-upgrades" class="md-nav__link"> + tl;dr upgrades + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-changes-since-seat-4" class="md-nav__link"> + Docker changes since SeAT 4 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#preperation" class="md-nav__link"> + Preperation + </a> + + <nav class="md-nav" aria-label="Preperation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#backup-your-database" class="md-nav__link"> + Backup your database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backup-your-env-file" class="md-nav__link"> + Backup your env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#stop-seat-4" class="md-nav__link"> + Stop SeAT 4 + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrading-to-seat-5" class="md-nav__link"> + Upgrading to SeAT 5 + </a> + + <nav class="md-nav" aria-label="Upgrading to SeAT 5"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#get-the-new-docker-compose-files" class="md-nav__link"> + Get the new docker-compose files + </a> + + <nav class="md-nav" aria-label="Get the new docker-compose files"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#updating-custom-styles" class="md-nav__link"> + Updating custom styles + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#update-the-env-file" class="md-nav__link"> + Update the .env file + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#bringing-seat-5-up" class="md-nav__link"> + Bringing SeAT 5 up + </a> + +</li> + + <li class="md-nav__item"> + <a href="#check-your-installation" class="md-nav__link"> + Check your installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#problems" class="md-nav__link"> + Problems + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#requirements" class="md-nav__link"> + Requirements + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-upgrade-procedure" class="md-nav__link"> + Docker Upgrade Procedure + </a> + + <nav class="md-nav" aria-label="Docker Upgrade Procedure"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#tldr-upgrades" class="md-nav__link"> + tl;dr upgrades + </a> + +</li> + + <li class="md-nav__item"> + <a href="#docker-changes-since-seat-4" class="md-nav__link"> + Docker changes since SeAT 4 + </a> + +</li> + + <li class="md-nav__item"> + <a href="#preperation" class="md-nav__link"> + Preperation + </a> + + <nav class="md-nav" aria-label="Preperation"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#backup-your-database" class="md-nav__link"> + Backup your database + </a> + +</li> + + <li class="md-nav__item"> + <a href="#backup-your-env-file" class="md-nav__link"> + Backup your env file + </a> + +</li> + + <li class="md-nav__item"> + <a href="#stop-seat-4" class="md-nav__link"> + Stop SeAT 4 + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#upgrading-to-seat-5" class="md-nav__link"> + Upgrading to SeAT 5 + </a> + + <nav class="md-nav" aria-label="Upgrading to SeAT 5"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#get-the-new-docker-compose-files" class="md-nav__link"> + Get the new docker-compose files + </a> + + <nav class="md-nav" aria-label="Get the new docker-compose files"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#updating-custom-styles" class="md-nav__link"> + Updating custom styles + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#update-the-env-file" class="md-nav__link"> + Update the .env file + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#bringing-seat-5-up" class="md-nav__link"> + Bringing SeAT 5 up + </a> + +</li> + + <li class="md-nav__item"> + <a href="#check-your-installation" class="md-nav__link"> + Check your installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#problems" class="md-nav__link"> + Problems + </a> + +</li> + + </ul> + </nav> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<h1 id="seat-4x-to-50-docker">SeAT 4.x to 5.0 (Docker)<a class="headerlink" href="#seat-4x-to-50-docker" title="Permanent link">¶</a></h1> +<p>The upgrade path from SeAT 4.0 to SeAT 5.0 requires a tiny amount of manual work.</p> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>Before starting the upgrade, pay check the plugins you may be using and ensure that they are compatible with SeAT 5. +A compatibility table can be found on the <a href="../../../community_packages/#maintained-packages">Community Packages</a> page. +If you are unsure, join us on <a href="../../../about/contact/">Discord</a> so that we can tru and assist or redirect you to proper person.</p> +<p>Users of <a href="https://github.com/recursivetree/seat-info">recursivetree/seat-info</a> need to follow separate instructions after the migrating the core to seat 5.</p> +</div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Before you do anything, read and understand this entire upgrade guide.</p> +<p>Those instructions are valid for Docker deployment only. +Please refer to <a href="../bare_metal/">bare metal instructions</a> for a non-docker installation.</p> +<p><strong>Remember</strong> to do make a complete backup of your current database making a copy off the server where SeAT runs together with the <code>.env</code> file. Both of these are the only things required to rebuilt your instance in case of failure.</p> +</div> +<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2> +<ul> +<li>A database backup is an absolute <strong>must</strong>. Everything in SeAT can be recovered in some way or form except <em>for your database</em>.</li> +<li>Enough storage space to have SeAT 4, SeAT 5 and a backup of your SeAT 4 database.</li> +<li>Ensure all your SeAT 4 packages are up-to-date (check this in <strong>Settings > SeAT Settings</strong>)</li> +</ul> +<h2 id="docker-upgrade-procedure">Docker Upgrade Procedure<a class="headerlink" href="#docker-upgrade-procedure" title="Permanent link">¶</a></h2> +<p>If you are currently using a docker installation for SeAT 4, upgrading is easy as never before. You need to make a few changes to your docker stack configuration, restart the stack, and you're good to go.</p> +<p>This guide is going to step through some quick preparation steps, then perform the upgrade and finally, check that everything worked out as expected. Let's dive in.</p> +<h3 id="tldr-upgrades">tl;dr upgrades<a class="headerlink" href="#tldr-upgrades" title="Permanent link">¶</a></h3> +<p>We highly recommend that you read the details of this upgrade guide to get familiar with what has changed. But, if this is your nth upgrade, maybe you just want to get the summary of everything, so here it is:</p> +<ul> +<li>Make a <a href="../../../admin_guides/docker_admin/#database-backups-and-restore">backup</a> of your database.</li> +<li><code>cd</code> to your install dir (which is probably <code>/opt/seat-docker</code>) and bring the stack down with + <div class="language-bash highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>down +</span></code></pre></div></li> +<li>Make a copy of your <code>.env</code> file using + <div class="language-bash highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>cp<span class="w"> </span>.env<span class="w"> </span>.env.seat4.bak +</span></code></pre></div></li> +<li>Make a copy of your current compose file using + <div class="language-bash highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>cp<span class="w"> </span>docker-compose.yml<span class="w"> </span>docker-compose.yml.seat4.bak +</span></code></pre></div></li> +<li>Download the new <code>docker-compose.yml</code> file with + <div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.yml<span class="sb">`</span> +</span></code></pre></div></li> +<li>Download the new database override <code>docker-compose.mariadb.yml</code> file with + <div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.mariadb.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.mariadb.yml +</span></code></pre></div></li> +<li>Download the new traefik override <code>docker-compose.traefik.yml</code> file with + <div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.traefik.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.traefik.yml +</span></code></pre></div></li> +<li>Download the new proxy override <code>docker-compose.proxy.yml</code> file with + <div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.proxy.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.proxy.yml +</span></code></pre></div></li> +<li>If you are using a <a href="../../../styling/">custom stylesheet</a>, open your <code>docker-compose.override.yml</code> file and replace the container name <code>seat-web</code> with <code>front</code>.</li> +<li>Download the new <code>.env</code> file template using + <div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/.env<span class="w"> </span>-o<span class="w"> </span>.env +</span></code></pre></div></li> +<li>Update the new <code>.env</code> file using your backup <code>.env.seat4.bak</code> </li> +</ul> +<p>The table bellow is provided as a variable mapping between SeAT 4.x and SeAT 5.x. You can use it as a reference.</p> +<table> +<thead> +<tr> +<th>SeAT 4.x</th> +<th>SeAT 5.x</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>TRAEFIK_DOMAIN=seat.local</code></td> +<td><code>SEAT_DOMAIN=seat.seat.local</code></td> +</tr> +<tr> +<td><code>SEAT_SUBDOMAIN=seat</code></td> +<td><code>SEAT_DOMAIN=seat.seat.local</code></td> +</tr> +<tr> +<td><code>REDIS_HOST=redis</code></td> +<td><code>REDIS_HOST=cache</code></td> +</tr> +<tr> +<td></td> +<td><code>PROXY_BACKEND_HTTP_PORT=8080</code></td> +</tr> +<tr> +<td></td> +<td><code>LOG_LEVEL=error</code></td> +</tr> +</tbody> +</table> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>With SeAT 5.x, there is non longer default database and proxy. You can mix services are your needs. +However, we continue to provide a few default layout usable out of the box as an option.</p> +</div> +<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Using Traefik</label><label for="__tabbed_1_2">Using reverse proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up</code></p> +</div> +<div class="tabbed-block"> +<p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up</code></p> +</div> +</div> +</div> +<p>Since we didn't startup the stack using daemon mode - the overall migration and process is run at front. This will allow you to detect any issue without having a container running in panic mode. +When SeAT will be ready to serve your requests and have successfully been upgrade, you'll see the following output :</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-8-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-8-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-8-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-8-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-8-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-8-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-8-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-8-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-8-10">10</a></span> +<span class="normal"><a href="#__codelineno-8-11">11</a></span> +<span class="normal"><a href="#__codelineno-8-12">12</a></span> +<span class="normal"><a href="#__codelineno-8-13">13</a></span> +<span class="normal"><a href="#__codelineno-8-14">14</a></span> +<span class="normal"><a href="#__codelineno-8-15">15</a></span> +<span class="normal"><a href="#__codelineno-8-16">16</a></span> +<span class="normal"><a href="#__codelineno-8-17">17</a></span> +<span class="normal"><a href="#__codelineno-8-18">18</a></span> +<span class="normal"><a href="#__codelineno-8-19">19</a></span> +<span class="normal"><a href="#__codelineno-8-20">20</a></span> +<span class="normal"><a href="#__codelineno-8-21">21</a></span> +<span class="normal"><a href="#__codelineno-8-22">22</a></span> +<span class="normal"><a href="#__codelineno-8-23">23</a></span> +<span class="normal"><a href="#__codelineno-8-24">24</a></span> +<span class="normal"><a href="#__codelineno-8-25">25</a></span> +<span class="normal"><a href="#__codelineno-8-26">26</a></span> +<span class="normal"><a href="#__codelineno-8-27">27</a></span> +<span class="normal"><a href="#__codelineno-8-28">28</a></span> +<span class="normal"><a href="#__codelineno-8-29">29</a></span> +<span class="normal"><a href="#__codelineno-8-30">30</a></span> +<span class="normal"><a href="#__codelineno-8-31">31</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1"></a>2023-06-02 09:49:33 ****//////////// +</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2"></a>2023-06-02 09:49:33 *** /// +</span><span id="__span-8-3"><a id="__codelineno-8-3" name="__codelineno-8-3"></a>2023-06-02 09:49:33 *** // +</span><span id="__span-8-4"><a id="__codelineno-8-4" name="__codelineno-8-4"></a>2023-06-02 09:49:33 ** ** // /// // +</span><span id="__span-8-5"><a id="__codelineno-8-5" name="__codelineno-8-5"></a>2023-06-02 09:49:33 ** *** /// // ////////@@@@@@@@@@@@@@@(/////@@@////////// +</span><span id="__span-8-6"><a id="__codelineno-8-6" name="__codelineno-8-6"></a>2023-06-02 09:49:33 **/ /// ///////// *///&@@@@@@@&/////#@@@@%//%///#@@@@@(///@ +</span><span id="__span-8-7"><a id="__codelineno-8-7" name="__codelineno-8-7"></a>2023-06-02 09:49:33 ** *** //////// / @///////@@///@@@///@@@///@@///@@@@@(///@ +</span><span id="__span-8-8"><a id="__codelineno-8-8" name="__codelineno-8-8"></a>2023-06-02 09:49:33 ** *** /// // // @@@@@////@/////////@@//////////@@@@(///@ +</span><span id="__span-8-9"><a id="__codelineno-8-9" name="__codelineno-8-9"></a>2023-06-02 09:49:33 ** /// // / // *////////@@@///////@@///@@@@@@///@@@(///@ +</span><span id="__span-8-10"><a id="__codelineno-8-10" name="__codelineno-8-10"></a>2023-06-02 09:49:33 *** //// /// /// +</span><span id="__span-8-11"><a id="__codelineno-8-11" name="__codelineno-8-11"></a>2023-06-02 09:49:33 *** /// +</span><span id="__span-8-12"><a id="__codelineno-8-12" name="__codelineno-8-12"></a>2023-06-02 09:49:33 ****//////////// +</span><span id="__span-8-13"><a id="__codelineno-8-13" name="__codelineno-8-13"></a>2023-06-02 09:49:33 +</span><span id="__span-8-14"><a id="__codelineno-8-14" name="__codelineno-8-14"></a>2023-06-02 09:49:33 +</span><span id="__span-8-15"><a id="__codelineno-8-15" name="__codelineno-8-15"></a>2023-06-02 09:49:33 SeAT is now ready to serve requests +</span><span id="__span-8-16"><a id="__codelineno-8-16" name="__codelineno-8-16"></a>2023-06-02 09:49:33 +</span><span id="__span-8-17"><a id="__codelineno-8-17" name="__codelineno-8-17"></a>2023-06-02 09:49:33 Open your browser and go to 'https://seat.domain.tld' +</span><span id="__span-8-18"><a id="__codelineno-8-18" name="__codelineno-8-18"></a>2023-06-02 09:49:33 Run 'docker compose exec front php artisan seat:admin:login' to get a temporary link in order to sign-in as built-in admin user account (or use bellow one) +</span><span id="__span-8-19"><a id="__codelineno-8-19" name="__codelineno-8-19"></a>2023-06-02 09:49:33 +</span><span id="__span-8-20"><a id="__codelineno-8-20" name="__codelineno-8-20"></a>2023-06-02 09:49:33 SeAT Admin Login URL Generator +</span><span id="__span-8-21"><a id="__codelineno-8-21" name="__codelineno-8-21"></a>2023-06-02 09:49:33 Checking if 'admin' is a super user +</span><span id="__span-8-22"><a id="__codelineno-8-22" name="__codelineno-8-22"></a>2023-06-02 09:49:33 Generating authentication token +</span><span id="__span-8-23"><a id="__codelineno-8-23" name="__codelineno-8-23"></a>2023-06-02 09:49:33 +</span><span id="__span-8-24"><a id="__codelineno-8-24" name="__codelineno-8-24"></a>2023-06-02 09:49:33 Your authentication URL is valid for 60 seconds. +</span><span id="__span-8-25"><a id="__codelineno-8-25" name="__codelineno-8-25"></a>2023-06-02 09:49:33 https://seat.domain.tld/auth/login/admin/aDvMAcd7GQPXFfhS3aIH9dh4opwcvASB +</span><span id="__span-8-26"><a id="__codelineno-8-26" name="__codelineno-8-26"></a>2023-06-02 09:49:33 +</span><span id="__span-8-27"><a id="__codelineno-8-27" name="__codelineno-8-27"></a>2023-06-02 09:49:33 +</span><span id="__span-8-28"><a id="__codelineno-8-28" name="__codelineno-8-28"></a>2023-06-02 09:49:33 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message +</span><span id="__span-8-29"><a id="__codelineno-8-29" name="__codelineno-8-29"></a>2023-06-02 09:49:33 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.4. Set the 'ServerName' directive globally to suppress this message +</span><span id="__span-8-30"><a id="__codelineno-8-30" name="__codelineno-8-30"></a>2023-06-02 09:49:33 [Fri Jun 02 07:49:33.524019 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.56 (Debian) PHP/8.2.6 configured -- resuming normal operations +</span><span id="__span-8-31"><a id="__codelineno-8-31" name="__codelineno-8-31"></a>2023-06-02 09:49:33 [Fri Jun 02 07:49:33.524084 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' +</span></code></pre></div></td></tr></table></div> +<p>Try to authenticate yourself and verify everything is working well. If you don't find any issue, you can now restart the stack in daemon mode 🎉.</p> +<p>Use <span class="keys"><kbd class="key-control">Ctrl</kbd><span>+</span><kbd class="key-c">C</kbd></span> in order to kill the stack and restart it in background:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Using Traefik</label><label for="__tabbed_2_2">Using reverse proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up +</span></code></pre></div> +</div> +</div> +</div> +<h3 id="docker-changes-since-seat-4">Docker changes since SeAT 4<a class="headerlink" href="#docker-changes-since-seat-4" title="Permanent link">¶</a></h3> +<p>There have been a few minor changes to the <code>docker-compose.yml</code> file. Most notably, the containers have been renamed to disclose their purpose easier, we have moved from Dockerhub to <a href="https://github.com/eveseat/seat-docker/pkgs/container/seat">GitHub Container Registry</a>, and the stack now has a persistent storage volume.</p> +<p>If you customized your docker stack deployment, it is recommended that you take a look at the new <code>docker-compose.yml</code> file yourselves to see what exactly changed. +Last but not least, try to avoid tuning standard files as must as possible and use override syntax instead with a <code>docker-compose.override.yml</code> file <a href="https://docs.docker.com/compose/extends/">(see official documentation)</a>.</p> +<h3 id="preperation">Preperation<a class="headerlink" href="#preperation" title="Permanent link">¶</a></h3> +<p>Before you upgrade, you need to backup.</p> +<h4 id="backup-your-database">Backup your database<a class="headerlink" href="#backup-your-database" title="Permanent link">¶</a></h4> +<p>The single most important thing you need is a backup of your SeAT 4 database. Without a backup you will <em>not</em> be able to recover in case of a disaster. So, head on over to the <a href="../../../admin_guides/docker_admin/#database-backups-and-restore">docker db backup section</a> and do that right now.</p> +<h4 id="backup-your-env-file">Backup your env file<a class="headerlink" href="#backup-your-env-file" title="Permanent link">¶</a></h4> +<p>The <code>.env</code> file is the one that has your SeAT installations' configuration. It contains things like your SSO Client ID and Secret (aka: credentials). By default, SeAT docker installations live in <code>/opt/seat-docker</code> meaning your <code>.env</code> file will be at <code>/opt/seat-docker/.env</code>. Make a copy of this file and store it somewhere safe.</p> +<h4 id="stop-seat-4">Stop SeAT 4<a class="headerlink" href="#stop-seat-4" title="Permanent link">¶</a></h4> +<p>First, we need to stop the SeAT 4 stack. Assuming you have the default <code>/opt/seat-docker</code> location for your installation, cd to it first and then run:</p> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>docker<span class="w"> </span>compose<span class="w"> </span>down +</span></code></pre></div> +<p>The output should be similar to this:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-12-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-12-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-12-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-12-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-12-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-12-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-12-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-12-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-12-10">10</a></span> +<span class="normal"><a href="#__codelineno-12-11">11</a></span> +<span class="normal"><a href="#__codelineno-12-12">12</a></span> +<span class="normal"><a href="#__codelineno-12-13">13</a></span> +<span class="normal"><a href="#__codelineno-12-14">14</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1"></a>root@seat:/opt/seat-docker# docker compose down +</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2"></a>Stopping seat-web ... done +</span><span id="__span-12-3"><a id="__codelineno-12-3" name="__codelineno-12-3"></a>Stopping seat-cron ... done +</span><span id="__span-12-4"><a id="__codelineno-12-4" name="__codelineno-12-4"></a>Stopping seat-worker ... done +</span><span id="__span-12-5"><a id="__codelineno-12-5" name="__codelineno-12-5"></a>Removing seat-traefik ... done +</span><span id="__span-12-6"><a id="__codelineno-12-6" name="__codelineno-12-6"></a>Stopping seat-mariadb ... done +</span><span id="__span-12-7"><a id="__codelineno-12-7" name="__codelineno-12-7"></a>Stopping seat-redis ... done +</span><span id="__span-12-8"><a id="__codelineno-12-8" name="__codelineno-12-8"></a>Removing seat-web ... done +</span><span id="__span-12-9"><a id="__codelineno-12-9" name="__codelineno-12-9"></a>Removing seat-cron ... done +</span><span id="__span-12-10"><a id="__codelineno-12-10" name="__codelineno-12-10"></a>Removing seat-worker ... done +</span><span id="__span-12-11"><a id="__codelineno-12-11" name="__codelineno-12-11"></a>Removing seat-traefik ... done +</span><span id="__span-12-12"><a id="__codelineno-12-12" name="__codelineno-12-12"></a>Removing seat-mariadb ... done +</span><span id="__span-12-13"><a id="__codelineno-12-13" name="__codelineno-12-13"></a>Removing seat-redis ... done +</span><span id="__span-12-14"><a id="__codelineno-12-14" name="__codelineno-12-14"></a>Removing network seat-docker_seat-network +</span></code></pre></div></td></tr></table></div> +<h3 id="upgrading-to-seat-5">Upgrading to SeAT 5<a class="headerlink" href="#upgrading-to-seat-5" title="Permanent link">¶</a></h3> +<h4 id="get-the-new-docker-compose-files">Get the new docker-compose files<a class="headerlink" href="#get-the-new-docker-compose-files" title="Permanent link">¶</a></h4> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>If you have made customisations to how you deployed SeAT with docker-compose, then you should probably <strong>not</strong> </p> +</div> +<p>be replacing the compose file like we are about to do. Instead, have a look at the new one <a href="https://github.com/eveseat/seat-docker/blob/master/docker-compose.yml">here</a> and adapt.</p> +<p>Next, we will download the new SeAT 5 docker-compose files. Do that with:</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span> +<span class="normal"><a href="#__codelineno-13-2">2</a></span> +<span class="normal"><a href="#__codelineno-13-3">3</a></span> +<span class="normal"><a href="#__codelineno-13-4">4</a></span> +<span class="normal"><a href="#__codelineno-13-5">5</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a>mv<span class="w"> </span>docker-compose.yml<span class="w"> </span>docker-compose.yml.seat4.bak +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.yml +</span><span id="__span-13-3"><a id="__codelineno-13-3" name="__codelineno-13-3"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.mariadb.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.mariadb.yml +</span><span id="__span-13-4"><a id="__codelineno-13-4" name="__codelineno-13-4"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.traefik.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.traefik.yml +</span><span id="__span-13-5"><a id="__codelineno-13-5" name="__codelineno-13-5"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/docker-compose.proxy.yml<span class="w"> </span>-o<span class="w"> </span>docker-compose.proxy.yml +</span></code></pre></div></td></tr></table></div> +<p>With this we have created a copy of the older docker-compose file (just in case), and downloaded the new one.</p> +<h5 id="updating-custom-styles">Updating custom styles<a class="headerlink" href="#updating-custom-styles" title="Permanent link">¶</a></h5> +<p>If you've customized the appearance of seat using <a href="../../../styling/">this guide</a>, follow these additional steps. Otherwise, skip to the next section and update your <code>.env</code> file.</p> +<p>Open your <code>docker-compose.override.yml</code> file using nano: +<div class="language-bash highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>nano<span class="w"> </span>docker-compose.override.yml +</span></code></pre></div></p> +<p>Go to the following line that says <code>seat-web</code>: +<div class="language-YAML highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="w"> </span><span class="nt">services</span><span class="p">:</span> +</span><span id="__span-15-2"><a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="w"> </span><span class="nt">seat-web</span><span class="p">:</span><span class="w"> </span><span class="c1"># <--- Here</span> +</span><span id="__span-15-3"><a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +</span></code></pre></div></p> +<p>Update the line to say <code>front</code> instead of <code>seat-web</code>: +<div class="language-YAML highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="w"> </span><span class="nt">services</span><span class="p">:</span> +</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span><span class="nt">front</span><span class="p">:</span><span class="w"> </span><span class="c1"># <--- Here</span> +</span><span id="__span-16-3"><a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span> +</span></code></pre></div> +It is important to keep the indentation as it is.</p> +<p>Exit using Control-X and type <code>y</code> for yes when asked whether you want to save the changes.</p> +<h4 id="update-the-env-file">Update the .env file<a class="headerlink" href="#update-the-env-file" title="Permanent link">¶</a></h4> +<p>This is one of the more important steps. The database configuration needs to be updated.</p> +<p>The easier is probably to download the new template and adapt variables according to your previous configuration as +some of them have been removed, newest appeared and overall have been reordered.</p> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-17-1">1</a></span> +<span class="normal"><a href="#__codelineno-17-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1"></a>mv<span class="w"> </span>.env<span class="w"> </span>.env.seat4.bak +</span><span id="__span-17-2"><a id="__codelineno-17-2" name="__codelineno-17-2"></a>curl<span class="w"> </span>-L<span class="w"> </span>https://raw.githubusercontent.com/eveseat/seat-docker/master/.env<span class="w"> </span>-o<span class="w"> </span>.env +</span></code></pre></div></td></tr></table></div> +<p>You can refer at any time to the online version of <code>.env</code> file on <a href="https://github.com/eveseat/seat-docker/blob/master/.env">GitHub</a> +The table bellow is provided as a variable mapping between SeAT 4.x and SeAT 5.x. You can use it as a reference.</p> +<table> +<thead> +<tr> +<th>SeAT 4.x</th> +<th>SeAT 5.x</th> +</tr> +</thead> +<tbody> +<tr> +<td><code>TRAEFIK_DOMAIN=seat.local</code></td> +<td><code>SEAT_DOMAIN=seat.seat.local</code></td> +</tr> +<tr> +<td><code>SEAT_SUBDOMAIN=seat</code></td> +<td><code>SEAT_DOMAIN=seat.seat.local</code></td> +</tr> +<tr> +<td><code>REDIS_HOST=redis</code></td> +<td><code>REDIS_HOST=cache</code></td> +</tr> +<tr> +<td></td> +<td><code>PROXY_BACKEND_HTTP_PORT=8080</code></td> +</tr> +<tr> +<td></td> +<td><code>LOG_LEVEL=error</code></td> +</tr> +</tbody> +</table> +<h3 id="bringing-seat-5-up">Bringing SeAT 5 up<a class="headerlink" href="#bringing-seat-5-up" title="Permanent link">¶</a></h3> +<p>The only thing that is left to do is to start the stack up again. The first time we are going to start SeAT 5 we won't use the <code>-d</code> flag. This is just so that you can see what's happening during the upgrade procedure. So, start SeAT with:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Using Traefik</label><label for="__tabbed_3_2">Using reverse proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up</code></p> +</div> +<div class="tabbed-block"> +<p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up</code></p> +</div> +</div> +</div> +<p>You should first see some download progress bars downloading the new SeAT version.</p> +<p>After a while, seat should start up similar to this:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-18-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-18-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-18-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-18-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-18-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-18-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-18-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-18-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-18-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-18-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1"></a>... +</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2"></a> +</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3"></a>seat_local-front-1 | mysqld is alive +</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4"></a>seat_local-front-1 | PONG +</span><span id="__span-18-5"><a id="__codelineno-18-5" name="__codelineno-18-5"></a>seat_local-front-1 | starting web service +</span><span id="__span-18-6"><a id="__codelineno-18-6" name="__codelineno-18-6"></a>seat_local-front-1 | Processing plugins from SEAT_PLUGINS +</span><span id="__span-18-7"><a id="__codelineno-18-7" name="__codelineno-18-7"></a>seat_local-front-1 | Loading composer repositories with package information +</span><span id="__span-18-8"><a id="__codelineno-18-8" name="__codelineno-18-8"></a>seat_local-front-1 | Info from https://repo.packagist.org: #StandWithUkraine +</span><span id="__span-18-9"><a id="__codelineno-18-9" name="__codelineno-18-9"></a>seat_local-front-1 | Updating dependencies +</span><span id="__span-18-10"><a id="__codelineno-18-10" name="__codelineno-18-10"></a>... +</span></code></pre></div></td></tr></table></div> +<div class="admonition warning"> +<p class="admonition-title">Warning</p> +<p>Do <strong>not</strong> interrupt SeAT during this phase. It will leave your database in a potentially corrupt state, meaning you are going to have to do some extra pluming to get a backup restored. Not a train smash, but not worth it.</p> +</div> +<p>Eventually, when everything is done you should start seeing the following output:</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-19-1">1</a></span> +<span class="normal"><a href="#__codelineno-19-2">2</a></span> +<span class="normal"><a href="#__codelineno-19-3">3</a></span> +<span class="normal"><a href="#__codelineno-19-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1"></a>seat_local-front-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.25.0.5. Set the 'ServerName' directive globally to suppress this message +</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2"></a>seat_local-front-1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.25.0.5. Set the 'ServerName' directive globally to suppress this message +</span><span id="__span-19-3"><a id="__codelineno-19-3" name="__codelineno-19-3"></a>seat_local-front-1 | [Sun May 21 21:10:46.869842 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.56 (Debian) PHP/8.1.19 configured -- resuming normal operations +</span><span id="__span-19-4"><a id="__codelineno-19-4" name="__codelineno-19-4"></a>seat_local-front-1 | [Sun May 21 21:10:46.869944 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND' +</span></code></pre></div></td></tr></table></div> +<p>This is a good sign, and means everything is now ready!</p> +<h3 id="check-your-installation">Check your installation<a class="headerlink" href="#check-your-installation" title="Permanent link">¶</a></h3> +<p>The first obvious step will be to check that you can access the web UI. If not, something is probably weird with the web server configuration and needs some tweaking.</p> +<p>If everything seems to be working fine, you can hit ++crtl+c++ which will bring the stack down gracefully. This might take up to 30 seconds.</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-20-1">1</a></span> +<span class="normal"><a href="#__codelineno-20-2">2</a></span> +<span class="normal"><a href="#__codelineno-20-3">3</a></span> +<span class="normal"><a href="#__codelineno-20-4">4</a></span> +<span class="normal"><a href="#__codelineno-20-5">5</a></span> +<span class="normal"><a href="#__codelineno-20-6">6</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1"></a>^CGracefully stopping... (press Ctrl+C again to force) +</span><span id="__span-20-2"><a id="__codelineno-20-2" name="__codelineno-20-2"></a>Stopping seat-docker_scheduler_1 ... +</span><span id="__span-20-3"><a id="__codelineno-20-3" name="__codelineno-20-3"></a>Stopping seat-docker_worker_1 ... +</span><span id="__span-20-4"><a id="__codelineno-20-4" name="__codelineno-20-4"></a>Stopping seat-docker_front_1 ... +</span><span id="__span-20-5"><a id="__codelineno-20-5" name="__codelineno-20-5"></a>Stopping seat-docker_traefik_1 ... done +</span><span id="__span-20-6"><a id="__codelineno-20-6" name="__codelineno-20-6"></a>Stopping seat-docker_cache_1 ... +</span></code></pre></div></td></tr></table></div> +<p>Then, bring it back up with the <code>-d</code> flag.</p> +<div class="tabbed-set tabbed-alternate" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">Using Traefik</label><label for="__tabbed_4_2">Using reverse proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<p>In case you want to use Traefik front of SeAT ui container, you'll need to setup the following environment variable: <code>TRAEFIK_ACME_EMAIL</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.traefik.yml up -d</code></p> +</div> +<div class="tabbed-block"> +<p>In case you want to use a custom reverse proxy front of SeAT ui container, you'll need to setup the new environment variable <code>PROXY_BACKEND_HTTP_PORT</code>. +You'll then use the following command to boot the stack <code>docker compose -f docker-compose.yml -f docker-compose.mariadb.yml -f docker-compose.proxy.yml up -d</code></p> +</div> +</div> +</div> +<p>Congrats, and welcome to SeAT 5!</p> +<h3 id="problems">Problems<a class="headerlink" href="#problems" title="Permanent link">¶</a></h3> +<p>Should you have any issue with the installation, please contact us on <a href="../../../about/contact/">Discord</a>.</p> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy"], "search": "../../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/upgrading/general/index.html b/upgrading/general/index.html new file mode 100644 index 00000000..58ccb9cc --- /dev/null +++ b/upgrading/general/index.html @@ -0,0 +1,1519 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/upgrading/general/"> + + + <link rel="prev" href="../../installation/old_versions/manual_installation_seat_4/"> + + + <link rel="next" href="../from_seat_4_0/docker/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>General - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#general-upgrades" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + General + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" checked> + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="true"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + General + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + General + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#docker-installation" class="md-nav__link"> + Docker installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#blade-installation" class="md-nav__link"> + Blade installation + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" > + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="false"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../user_guides/moons_reporter/" class="md-nav__link"> + Moons Reporter + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#docker-installation" class="md-nav__link"> + Docker installation + </a> + +</li> + + <li class="md-nav__item"> + <a href="#blade-installation" class="md-nav__link"> + Blade installation + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="general-upgrades">General Upgrades<a class="headerlink" href="#general-upgrades" title="Permanent link">¶</a></h1> +<p>As with anything, it is a <strong>very</strong> good idea to have backups ready before attempting any upgrades. +In the case of SeAT, the most important component needs to be backed up is the SeAT database. +Should something go wrong, then you can simply re-install SeAT, restore the database, and you should be good to go.</p> +<h2 id="docker-installation">Docker installation<a class="headerlink" href="#docker-installation" title="Permanent link">¶</a></h2> +<p>As expected, updates for SeAT are deployed via images on the <a href="https://github.com/eveseat/seat-docker/pkgs/container/seat">GitHub Container Registry</a>. +Every package version release will automatically start the build process to generate a new docker image. +This means updates are super simple in the docker world. To update your instance, simply run:</p> +<div class="tabbed-set tabbed-alternate" data-tabs="1:3"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">SeAT 4.x</label><label for="__tabbed_1_2">SeAT 5.x - Traefik</label><label for="__tabbed_1_3">SeAT 5.x - Proxy</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-0-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-0-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-0-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-0-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-0-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-0-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-0-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-0-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-0-10">10</a></span> +<span class="normal"><a href="#__codelineno-0-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a><span class="c1"># Update to the latest dockerhub images</span> +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a>docker-compose<span class="w"> </span>pull +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a> +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a><span class="c1"># Take the stack down</span> +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a>docker-compose<span class="w"> </span>down +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a> +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a><span class="c1"># Bring the stack back up</span> +</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8"></a>docker-compose<span class="w"> </span>up<span class="w"> </span>-d +</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9"></a> +</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10"></a><span class="c1"># Cleanup any dangling images</span> +</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11"></a>docker<span class="w"> </span>image<span class="w"> </span>prune<span class="w"> </span>-f +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-1-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-1-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-1-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-1-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-1-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-1-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-1-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-1-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-1-10">10</a></span> +<span class="normal"><a href="#__codelineno-1-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1"></a><span class="c1"># Update to the latest dockerhub images</span> +</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>pull +</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3"></a> +</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4"></a><span class="c1"># Take the stack down</span> +</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>down +</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6"></a> +</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7"></a><span class="c1"># Bring the stack back up</span> +</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.traefik.yml<span class="w"> </span>up<span class="w"> </span>-d +</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9"></a> +</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10"></a><span class="c1"># Cleanup any dangling images</span> +</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11"></a>docker<span class="w"> </span>image<span class="w"> </span>prune<span class="w"> </span>-f +</span></code></pre></div></td></tr></table></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1"> 1</a></span> +<span class="normal"><a href="#__codelineno-2-2"> 2</a></span> +<span class="normal"><a href="#__codelineno-2-3"> 3</a></span> +<span class="normal"><a href="#__codelineno-2-4"> 4</a></span> +<span class="normal"><a href="#__codelineno-2-5"> 5</a></span> +<span class="normal"><a href="#__codelineno-2-6"> 6</a></span> +<span class="normal"><a href="#__codelineno-2-7"> 7</a></span> +<span class="normal"><a href="#__codelineno-2-8"> 8</a></span> +<span class="normal"><a href="#__codelineno-2-9"> 9</a></span> +<span class="normal"><a href="#__codelineno-2-10">10</a></span> +<span class="normal"><a href="#__codelineno-2-11">11</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1"></a><span class="c1"># Update to the latest dockerhub images</span> +</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>pull +</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3"></a> +</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4"></a><span class="c1"># Take the stack down</span> +</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>down +</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6"></a> +</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7"></a><span class="c1"># Bring the stack back up</span> +</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8"></a>docker<span class="w"> </span>compose<span class="w"> </span>-f<span class="w"> </span>docker-compose.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.mariadb.yml<span class="w"> </span>-f<span class="w"> </span>docker-compose.proxy.yml<span class="w"> </span>up<span class="w"> </span>-d +</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9"></a> +</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10"></a><span class="c1"># Cleanup any dangling images</span> +</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11"></a>docker<span class="w"> </span>image<span class="w"> </span>prune<span class="w"> </span>-f +</span></code></pre></div></td></tr></table></div> +</div> +</div> +</div> +<div class="admonition warning"> +<p class="admonition-title">Better safe then sorry</p> +<p><strong>Always</strong> perform a <a href="../../admin_guides/docker_admin/#database-backups-and-restore">database backup</a> of your database before doing an update. Always.</p> +</div> +<h2 id="blade-installation">Blade installation<a class="headerlink" href="#blade-installation" title="Permanent link">¶</a></h2> +<ul> +<li>Ensure that you are in the path where you installed. By default this should be <code>/var/www/seat</code>.</li> +<li>Cut jobs processing.</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>supervisorctl<span class="w"> </span>stop<span class="w"> </span>all +</span></code></pre></div> +<ul> +<li>Put your application into maintenance mode. This will ensure that no request from the outside will hit your applications logic, and also help you perform an upgrade uninterrupted. Do this with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>down +</span></code></pre></div> +<ul> +<li>Its a good thing to update <code>composer</code> itself. This is not a hard requirement, but definitely recommended. Do this with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>composer<span class="w"> </span>self-update +</span></code></pre></div> +<ul> +<li>The next thing to do is get the latest SeAT packages. The below example adds the <code>--no-dev</code> argument as these packages are generally not needed in production. Upgrade the packages with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>composer<span class="w"> </span>update<span class="w"> </span>--no-dev +</span></code></pre></div> +<ul> +<li>With the packages upgraded, we can now publish any new migrations/assets/configs. This can be done with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>vendor:publish<span class="w"> </span>--force<span class="w"> </span>--all +</span></code></pre></div> +<ul> +<li>Once the needed files are published, run any new/outstanding migrations with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>migrate +</span></code></pre></div> +<ul> +<li>With the migrations done, run the seeders to update any static data:</li> +</ul> +<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">SeAT 4.x</label><label for="__tabbed_2_2">SeAT 5.x</label></div> +<div class="tabbed-content"> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>db:seed<span class="w"> </span>--class<span class="o">=</span>Seat<span class="se">\\</span>Console<span class="se">\\</span>database<span class="se">\\</span>seeds<span class="se">\\</span>ScheduleSeeder +</span></code></pre></div> +</div> +<div class="tabbed-block"> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>db:seed<span class="w"> </span>--class<span class="o">=</span>Seat<span class="se">\\</span>Services<span class="se">\\</span>Database<span class="se">\\</span>Seeders<span class="se">\\</span>PluginDatabaseSeeder +</span></code></pre></div> +</div> +</div> +</div> +<ul> +<li>Finally, we can simply bring our application back out of maintenance mode with:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>up +</span></code></pre></div> +<ul> +<li>Prune job queue, this will prevent already queued jobs to use old codebase</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>cache:clear +</span></code></pre></div> +<ul> +<li>Renew cached configuration and routes</li> +</ul> +<div class="language-bash highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1">1</a></span> +<span class="normal"><a href="#__codelineno-13-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1"></a>php<span class="w"> </span>artisan<span class="w"> </span>config:cache +</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2"></a>php<span class="w"> </span>artisan<span class="w"> </span>route:cache +</span></code></pre></div></td></tr></table></div> +<ul> +<li>Restart the supervisor workers to ensure they also pickup the latest code:</li> +</ul> +<div class="language-bash highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>supervisorctl<span class="w"> </span>start<span class="w"> </span>all +</span></code></pre></div> +<div class="admonition warning"> +<p class="admonition-title">Better safe then sorry</p> +<p><strong>Always</strong> perform a database backup of your database before doing an update. Always.</p> +<p>You can use <code>mysqldump -uroot -p seat > backup.sql</code> (change <em>root</em> and <em>seat</em> according to your configuration)</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file diff --git a/user_guides/moons_reporter/index.html b/user_guides/moons_reporter/index.html new file mode 100644 index 00000000..459f3d3c --- /dev/null +++ b/user_guides/moons_reporter/index.html @@ -0,0 +1,1551 @@ + +<!doctype html> +<html lang="en" class="no-js"> + <head> + + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <meta name="description" content="Simple EVE Api Tool Documentation"> + + + + <link rel="canonical" href="https://eveseat.github.io/docs/user_guides/moons_reporter/"> + + + <link rel="prev" href="../../admin_guides/scaled_deployments/"> + + + <link rel="next" href="../../developer_guides/developer_installation/"> + + <link rel="icon" href="../../assets/images/favicon.png"> + <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.0.6"> + + + + <title>Moons Reporter - SeAT Documentation</title> + + + + <link rel="stylesheet" href="../../assets/stylesheets/main.558e4712.min.css"> + + + <link rel="stylesheet" href="../../assets/stylesheets/palette.2505c338.min.css"> + + + + + + + + + + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> + + + + <link rel="stylesheet" href="../../css/extra_footer.css"> + + <link rel="stylesheet" href="../../css/extra_typo.css"> + + <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> + + + + + + + + + + <script id="__analytics">function __md_analytics(){window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-119530306-1","auto"),ga("set","anonymizeIp",!0),ga("send","pageview"),document.addEventListener("DOMContentLoaded",function(){document.forms.search&&document.forms.search.query.addEventListener("blur",function(){var e;this.value&&(e=document.location.pathname,ga("send","pageview",e+"?q="+this.value))}),document$.subscribe(function(){var a=document.forms.feedback;if(void 0!==a)for(var e of a.querySelectorAll("[type=submit]"))e.addEventListener("click",function(e){e.preventDefault();var t=document.location.pathname,e=this.getAttribute("data-md-value");ga("send","event","feedback","click",t,e),a.firstElementChild.disabled=!0;e=a.querySelector(".md-feedback__note [data-md-value='"+e+"']");e&&(e.hidden=!1)}),a.hidden=!1}),location$.subscribe(function(e){ga("send","pageview",e.pathname)})});var e=document.createElement("script");e.async=!0,e.src="https://www.google-analytics.com/analytics.js",document.getElementById("__analytics").insertAdjacentElement("afterEnd",e)}</script> + + + <script>"undefined"!=typeof __md_analytics&&__md_analytics()</script> + + + + + + </head> + + + + + + + + <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="orange"> + + + + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> + <label class="md-overlay" for="__drawer"></label> + <div data-md-component="skip"> + + + <a href="#moons-reporter" class="md-skip"> + Skip to content + </a> + + </div> + <div data-md-component="announce"> + + </div> + + + + +<header class="md-header" data-md-component="header"> + <nav class="md-header__inner md-grid" aria-label="Header"> + <a href="../.." title="SeAT Documentation" class="md-header__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + <label class="md-header__button md-icon" for="__drawer"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> + </label> + <div class="md-header__title" data-md-component="header-title"> + <div class="md-header__ellipsis"> + <div class="md-header__topic"> + <span class="md-ellipsis"> + SeAT Documentation + </span> + </div> + <div class="md-header__topic" data-md-component="header-topic"> + <span class="md-ellipsis"> + + Moons Reporter + + </span> + </div> + </div> + </div> + + + + <label class="md-header__button md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + </label> + <div class="md-search" data-md-component="search" role="dialog"> + <label class="md-search__overlay" for="__search"></label> + <div class="md-search__inner" role="search"> + <form class="md-search__form" name="search"> + <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> + <label class="md-search__icon md-icon" for="__search"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> + </label> + <nav class="md-search__options" aria-label="Search"> + + <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> + </button> + </nav> + + </form> + <div class="md-search__output"> + <div class="md-search__scrollwrap" data-md-scrollfix> + <div class="md-search-result" data-md-component="search-result"> + <div class="md-search-result__meta"> + Initializing search + </div> + <ol class="md-search-result__list" role="presentation"></ol> + </div> + </div> + </div> + </div> +</div> + + + <div class="md-header__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + </nav> + +</header> + + <div class="md-container" data-md-component="container"> + + + + + + + <main class="md-main" data-md-component="main"> + <div class="md-main__inner md-grid"> + + + + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + + +<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> + <label class="md-nav__title" for="__drawer"> + <a href="../.." title="SeAT Documentation" class="md-nav__button md-logo" aria-label="SeAT Documentation" data-md-component="logo"> + + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg> + + </a> + SeAT Documentation + </label> + + <div class="md-nav__source"> + <a href="https://github.com/eveseat/docs" title="Go to repository" class="md-source" data-md-component="source"> + <div class="md-source__icon md-icon"> + + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> + </div> + <div class="md-source__repository"> + eveseat/docs + </div> +</a> + </div> + + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item"> + <a href="../.." class="md-nav__link"> + Home + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2" type="checkbox" id="__nav_2" > + + + + <label class="md-nav__link" for="__nav_2" tabindex="0" aria-expanded="false"> + Installation + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Installation" data-md-level="1"> + <label class="md-nav__title" for="__nav_2"> + <span class="md-nav__icon md-icon"></span> + Installation + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/requirements/" class="md-nav__link"> + Requirements + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/docker_installation/" class="md-nav__link"> + Docker Installation (5.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/manual_installation/" class="md-nav__link"> + Manual Installation (5.x) + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_2_4" type="checkbox" id="__nav_2_4" > + + + + <label class="md-nav__link" for="__nav_2_4" tabindex="0" aria-expanded="false"> + Older Versions + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Older Versions" data-md-level="2"> + <label class="md-nav__title" for="__nav_2_4"> + <span class="md-nav__icon md-icon"></span> + Older Versions + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/docker_installation_seat_4/" class="md-nav__link"> + Docker Installation (4.x) + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../installation/old_versions/manual_installation_seat_4/" class="md-nav__link"> + Manual Installation (4.x) + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3" type="checkbox" id="__nav_3" > + + + + <label class="md-nav__link" for="__nav_3" tabindex="0" aria-expanded="false"> + Upgrading + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Upgrading" data-md-level="1"> + <label class="md-nav__title" for="__nav_3"> + <span class="md-nav__icon md-icon"></span> + Upgrading + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/general/" class="md-nav__link"> + General + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_2" type="checkbox" id="__nav_3_2" > + + + + <label class="md-nav__link" for="__nav_3_2" tabindex="0" aria-expanded="false"> + From SeAT 4.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 4.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_2"> + <span class="md-nav__icon md-icon"></span> + From SeAT 4.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_4_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_3_3" type="checkbox" id="__nav_3_3" > + + + + <label class="md-nav__link" for="__nav_3_3" tabindex="0" aria-expanded="false"> + From SeAT 3.0 + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="From SeAT 3.0" data-md-level="2"> + <label class="md-nav__title" for="__nav_3_3"> + <span class="md-nav__icon md-icon"></span> + From SeAT 3.0 + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/docker/" class="md-nav__link"> + Docker + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_3_0/bare_metal/" class="md-nav__link"> + Bare metal + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_2_0/" class="md-nav__link"> + From SeAT 2.0 + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../upgrading/from_seat_1_0/" class="md-nav__link"> + From SeAT 1.0 + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4" type="checkbox" id="__nav_4" > + + + + <label class="md-nav__link" for="__nav_4" tabindex="0" aria-expanded="false"> + Configuration + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Configuration" data-md-level="1"> + <label class="md-nav__title" for="__nav_4"> + <span class="md-nav__icon md-icon"></span> + Configuration + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/esi_configuration/" class="md-nav__link"> + ESI Configuration + </a> + </li> + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" > + + + + <label class="md-nav__link" for="__nav_4_2" tabindex="0" aria-expanded="false"> + Email Setup + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Email Setup" data-md-level="2"> + <label class="md-nav__title" for="__nav_4_2"> + <span class="md-nav__icon md-icon"></span> + Email Setup + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/mailgun/" class="md-nav__link"> + Mailgun + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/email_setup/gmail/" class="md-nav__link"> + GMail + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/env_file_reference/" class="md-nav__link"> + Env File Reference + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/eve_administrative_contact/" class="md-nav__link"> + EVE Administrative Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/configuration_overload/" class="md-nav__link"> + Configuration Overload + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../configuration/sde_overload/" class="md-nav__link"> + SDE Overload + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_5" type="checkbox" id="__nav_5" > + + + + <label class="md-nav__link" for="__nav_5" tabindex="0" aria-expanded="false"> + Admin Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Admin Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_5"> + <span class="md-nav__icon md-icon"></span> + Admin Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/admin_login/" class="md-nav__link"> + Admin Login + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/docker_admin/" class="md-nav__link"> + Docker Admin + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/authorizations/" class="md-nav__link"> + Authorizations + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/buckets/" class="md-nav__link"> + Buckets + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/squads/" class="md-nav__link"> + Squads + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/understanding_tracking/" class="md-nav__link"> + Understanding Tracking + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../admin_guides/scaled_deployments/" class="md-nav__link"> + Scaled Deployments + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + + + <li class="md-nav__item md-nav__item--active md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_6" type="checkbox" id="__nav_6" checked> + + + + <label class="md-nav__link" for="__nav_6" tabindex="0" aria-expanded="true"> + User Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="User Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_6"> + <span class="md-nav__icon md-icon"></span> + User Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + + + <li class="md-nav__item md-nav__item--active"> + + <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc"> + + + + + + <label class="md-nav__link md-nav__link--active" for="__toc"> + Moons Reporter + <span class="md-nav__icon md-icon"></span> + </label> + + <a href="./" class="md-nav__link md-nav__link--active"> + Moons Reporter + </a> + + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#importing-reports" class="md-nav__link"> + Importing reports + </a> + +</li> + + <li class="md-nav__item"> + <a href="#advanced-search" class="md-nav__link"> + Advanced Search + </a> + +</li> + + <li class="md-nav__item"> + <a href="#moon-information" class="md-nav__link"> + Moon Information + </a> + + <nav class="md-nav" aria-label="Moon Information"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#moon-metadata" class="md-nav__link"> + Moon Metadata + </a> + +</li> + + <li class="md-nav__item"> + <a href="#moon-card" class="md-nav__link"> + Moon Card + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#moon-stats" class="md-nav__link"> + Moon Stats + </a> + +</li> + + <li class="md-nav__item"> + <a href="#migrating" class="md-nav__link"> + Migrating + </a> + +</li> + + </ul> + +</nav> + + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_7" type="checkbox" id="__nav_7" > + + + + <label class="md-nav__link" for="__nav_7" tabindex="0" aria-expanded="false"> + Developer Guides + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="Developer Guides" data-md-level="1"> + <label class="md-nav__title" for="__nav_7"> + <span class="md-nav__icon md-icon"></span> + Developer Guides + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/developer_installation/" class="md-nav__link"> + Developer Installation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/core_package_breakdown/" class="md-nav__link"> + Core Package Breakdown + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/package_development/" class="md-nav__link"> + Package Development + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/development_tips/" class="md-nav__link"> + Development Tips + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/job_queue_flow/" class="md-nav__link"> + Job Queue Flow + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/notifications_implementation/" class="md-nav__link"> + Notifications Implementation + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/updating_plugins/" class="md-nav__link"> + Updating Plugins + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../developer_guides/seat_api/" class="md-nav__link"> + SeAT API + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../styling/" class="md-nav__link"> + Styling + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../community_packages/" class="md-nav__link"> + Community Packages + </a> + </li> + + + + + + + + + + + <li class="md-nav__item"> + <a href="../../troubleshooting/" class="md-nav__link"> + Troubleshooting + </a> + </li> + + + + + + + + + + + + <li class="md-nav__item md-nav__item--nested"> + + + + + <input class="md-nav__toggle md-toggle " data-md-toggle="__nav_11" type="checkbox" id="__nav_11" > + + + + <label class="md-nav__link" for="__nav_11" tabindex="0" aria-expanded="false"> + About + <span class="md-nav__icon md-icon"></span> + </label> + + <nav class="md-nav" aria-label="About" data-md-level="1"> + <label class="md-nav__title" for="__nav_11"> + <span class="md-nav__icon md-icon"></span> + About + </label> + <ul class="md-nav__list" data-md-scrollfix> + + + + + + + <li class="md-nav__item"> + <a href="../../about/contact/" class="md-nav__link"> + Contact + </a> + </li> + + + + + + + + + + <li class="md-nav__item"> + <a href="../../about/reporting_bugs/" class="md-nav__link"> + Reporting Bugs + </a> + </li> + + + + + </ul> + </nav> + </li> + + + + </ul> +</nav> + </div> + </div> + </div> + + + + <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > + <div class="md-sidebar__scrollwrap"> + <div class="md-sidebar__inner"> + + +<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> + + + + + + + <label class="md-nav__title" for="__toc"> + <span class="md-nav__icon md-icon"></span> + Table of contents + </label> + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> + + <li class="md-nav__item"> + <a href="#importing-reports" class="md-nav__link"> + Importing reports + </a> + +</li> + + <li class="md-nav__item"> + <a href="#advanced-search" class="md-nav__link"> + Advanced Search + </a> + +</li> + + <li class="md-nav__item"> + <a href="#moon-information" class="md-nav__link"> + Moon Information + </a> + + <nav class="md-nav" aria-label="Moon Information"> + <ul class="md-nav__list"> + + <li class="md-nav__item"> + <a href="#moon-metadata" class="md-nav__link"> + Moon Metadata + </a> + +</li> + + <li class="md-nav__item"> + <a href="#moon-card" class="md-nav__link"> + Moon Card + </a> + +</li> + + </ul> + </nav> + +</li> + + <li class="md-nav__item"> + <a href="#moon-stats" class="md-nav__link"> + Moon Stats + </a> + +</li> + + <li class="md-nav__item"> + <a href="#migrating" class="md-nav__link"> + Migrating + </a> + +</li> + + </ul> + +</nav> + </div> + </div> + </div> + + + + <div class="md-content" data-md-component="content"> + <article class="md-content__inner md-typeset"> + + + + + + + + +<p><img alt="SeAT" src="https://i.imgur.com/aPPOxSK.png" /></p> +<h1 id="moons-reporter">Moons Reporter<a class="headerlink" href="#moons-reporter" title="Permanent link">¶</a></h1> +<p>Introduced in SeAT 4.0, a new tool is available to assist you in your moon management task by leveraging your intelligence desk. +Like your old google/excel sheet, it will gather all your intel related to moon probing. +It provides a centralized and convenient way to store reports and search through them.</p> +<p>Of course, like other modules, you are able to restrict its usage using ACL by choosing who can view it and/or import reports.</p> +<p><img alt="Moons Reporter" src="../../img/moons_reporter.png" /></p> +<h2 id="importing-reports">Importing reports<a class="headerlink" href="#importing-reports" title="Permanent link">¶</a></h2> +<p><img alt="Importing a report" src="../../img/moons_reporter_import.png" /></p> +<p>Seeding an intelligence database is usually a really long task. The Moons Reporter simplifies the process as much as possible by accepting your raw moon report collected by the in-game moon probing interface.</p> +<p>Here is the process which need to be follow in order to be able to import a new moon report :</p> +<ul> +<li>fire your probe in-game and wait for the report to land</li> +<li>use the "Copy to Clipboard" button from your "Moon Probe and Analysis" window </li> +<li>go on the Moons Report and hit the "Import" button located on top right (1)</li> +<li>paste copied content in the opening modal and hit "Post report"</li> +</ul> +<p>That's all, SeAT will take care of your report and apply change accordingly.</p> +<div class="admonition tip"> +<p class="admonition-title">Tip</p> +<p>You can paste multiple moon report in once - so, to gain time and save clicks, you will probably prefer to scans all moons in a system before importing them into SeAT.</p> +</div> +<div class="admonition info"> +<p class="admonition-title">Info</p> +<p>When importing a report targeting an already imported moon report, existing data will be erased and replaced by the new report.</p> +</div> +<div class="admonition caution"> +<p class="admonition-title">Caution</p> +<p>In case you have to import data from an existing sheet, you will have to generate report based on your information. +Please put an eye into <a href="#migrating">migrate section</a> from this documentation.</p> +</div> +<h2 id="advanced-search">Advanced Search<a class="headerlink" href="#advanced-search" title="Permanent link">¶</a></h2> +<p><img alt="Search Engine" src="../../img/moons_reporter_search.png" /></p> +<p>The Moons Reporter is shipped with an advanced search panel (2) which allow you to search moons by different criteria :</p> +<ul> +<li>region</li> +<li>constellation</li> +<li>system</li> +<li>rank</li> +<li>produces</li> +</ul> +<p>Region, Constellation and System filters will be driven together depending on what you're doing - making your search easier.</p> +<p>You are able to provide multiple rank into the rank filter (like ubiquitous, common, uncommon, rare and exceptional). +When you are using this filter, only moon which contain all criteria will be displayed. +For example, if you are searching for a moon which contain common and uncommon materials, simply select both criteria.</p> +<p>Like rank filter, the produces filter is allowing you to track for moons containing multiple materials. +As an example, you can search for moons producing both Vanadium and Cobalt.</p> +<p>To make a search, once you put your criteria, use the search button.</p> +<h2 id="moon-information">Moon Information<a class="headerlink" href="#moon-information" title="Permanent link">¶</a></h2> +<h3 id="moon-metadata">Moon Metadata<a class="headerlink" href="#moon-metadata" title="Permanent link">¶</a></h3> +<p>Main pane (3) is showing you the list of all probed moons. You'll get quick intel on them with indicator and sovereignty columns. +However, in case you want more information regarding a moon, you can click on the eye button which will show you the moon card.</p> +<p>Displayed sovereignty depends on public in-game collected intel regarding systems. Those data are updated once a day - after down-time.</p> +<h3 id="moon-card">Moon Card<a class="headerlink" href="#moon-card" title="Permanent link">¶</a></h3> +<p><img alt="Moon Details" src="../../img/moons_reporter_details.png" /></p> +<p>You are able to access details regarding a moon, simple by clicking on the eye button, located in the action column. +Moon card will give you some valuable information like contained raw materials, reprocessed materials and reactions candidates.</p> +<p>The Moons Reporter is not only showing you types but also figures like volume, quantity and estimated value. +All of them are computed based on a regular chunk of 20,000.00m3 - and upgraded to 30 days for convenience. +The base reprocessing yield is 80% - however, you are able to determine which yield must be used into your user profile.</p> +<h2 id="moon-stats">Moon Stats<a class="headerlink" href="#moon-stats" title="Permanent link">¶</a></h2> +<p>Some stats are provide in Moons Reporter footer (4). They are showing you the number of raw materials, per rank, from all your scanned moons. +Those stats are list in the same order as the indicator column :</p> +<ul> +<li>Gaz or Ubiquitous asteroids</li> +<li>R8 or Common asteroids</li> +<li>R16 or Uncommon asteroids</li> +<li>R32 or Rare asteroids</li> +<li>R64 or Exceptional asteroids</li> +<li>Ore (standard asteroids - like Scordite, Spodumain, etc...)</li> +</ul> +<h2 id="migrating">Migrating<a class="headerlink" href="#migrating" title="Permanent link">¶</a></h2> +<p>Moons Reporter can only accept reports using Eve Online raw format. As a result, you will probably not be able to import data from an existing sheet without process. +Luckily, the used format is quite simple to recover from collected data. You will find bellow a sample :</p> +<div class="language-text highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1">1</a></span> +<span class="normal"><a href="#__codelineno-0-2">2</a></span> +<span class="normal"><a href="#__codelineno-0-3">3</a></span> +<span class="normal"><a href="#__codelineno-0-4">4</a></span> +<span class="normal"><a href="#__codelineno-0-5">5</a></span> +<span class="normal"><a href="#__codelineno-0-6">6</a></span> +<span class="normal"><a href="#__codelineno-0-7">7</a></span></pre></div></td><td class="code"><div><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1"></a>Moon Moon Product Quantity Ore TypeID SolarSystemID PlanetID MoonID +</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2"></a> +</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3"></a>OP9L-F II - Moon 1 +</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4"></a> Glossy Scordite 0.300030559301 46687 30002173 40138526 40138527 +</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5"></a> Immaculate Jaspet 0.328855156898 46682 30002173 40138526 40138527 +</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6"></a> Pellucid Crokite 0.287893354893 46677 30002173 40138526 40138527 +</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7"></a> Sylvite 0.083220936358 45491 30002173 40138526 40138527 +</span></code></pre></div></td></tr></table></div> +<p>Keep the two first lines as it, it's the report header. +You will then have same format for every moon you need to put inside the report :</p> +<ul> +<li>The full qualified moon name</li> +<li>One line per moon compound - indented by a tabulation</li> +</ul> +<p>Moon compound line are built using :</p> +<ul> +<li>Type name</li> +<li>Rate (number between 0 and 1, using <code>.</code> a decimal separator - without thousands separator)</li> +<li>Type identifier (number without either decimal or thousands separator)</li> +<li>Solar system identifier (number without either decimal or thousands separator)</li> +<li>Planet identifier (number without either decimal or thousands separator)</li> +<li>Moon identifier (number without either decimal or thousands separator)</li> +</ul> +<p>If you need either the type name or the type identifier, you can use the amazing work from Fuzzy Steve :</p> +<ul> +<li><a href="https://www.fuzzwork.co.uk/dump/latest/invTypes.csv.bz2">Types information</a></li> +<li><a href="https://www.fuzzwork.co.uk/dump/latest/mapDenormalize.csv.bz2">Celestial information</a></li> +</ul> +<div class="admonition caution"> +<p class="admonition-title">Caution</p> +<p>Take care of separators. Report is using tabulations between column and not simple spaces. +Also, each line must end with an end line and a carriage return character (CRLF - or Windows carriage return format)</p> +</div> + + + + + + + + + </article> + </div> + + + </div> + + </main> + + <footer class="md-footer"> + + <div class="md-footer-meta md-typeset"> + <div class="md-footer-meta__inner md-grid"> + <div class="md-copyright"> + + <div class="md-copyright__highlight"> + Copyright © 2015 - 2020 Leon Jacobs + </div> + + + Made with + <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> + Material for MkDocs + </a> + +</div> + + <div class="md-social"> + + + + + + + <a href="https://github.com/eveseat/seat" target="_blank" rel="noopener" title="github.com" class="md-social__link"> + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg> + </a> + +</div> + + </div> + </div> +</footer> + + </div> + <div class="md-dialog" data-md-component="dialog"> + <div class="md-dialog__inner md-typeset"></div> + </div> + + <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.copy"], "search": "../../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> + + + <script src="../../assets/javascripts/bundle.51d95adb.min.js"></script> + + + </body> +</html> \ No newline at end of file