diff --git a/404.html b/404.html index 0ed39ba..975aa47 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ HappyView - - + + diff --git a/assets/js/22dd74f7.132c49f2.js b/assets/js/22dd74f7.132c49f2.js new file mode 100644 index 0000000..a8548d8 --- /dev/null +++ b/assets/js/22dd74f7.132c49f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[1567],{5226(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/","label":"Introduction","docId":"README","unlisted":false},{"type":"category","label":"Getting Started","items":[{"type":"link","href":"/getting-started/quickstart","label":"Quickstart","docId":"getting-started/quickstart","unlisted":false},{"type":"category","label":"Deployment","items":[{"type":"link","href":"/getting-started/deployment/railway","label":"Railway","docId":"getting-started/deployment/railway","unlisted":false},{"type":"link","href":"/getting-started/deployment/docker","label":"Docker","docId":"getting-started/deployment/docker","unlisted":false},{"type":"link","href":"/getting-started/deployment/other","label":"Other","docId":"getting-started/deployment/other","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","href":"/getting-started/authentication","label":"Authentication","docId":"getting-started/authentication","unlisted":false},{"type":"link","href":"/getting-started/configuration","label":"Configuration","docId":"getting-started/configuration","unlisted":false},{"type":"link","href":"/getting-started/dashboard","label":"Dashboard","docId":"getting-started/dashboard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Tutorials","items":[{"type":"link","href":"/tutorials/statusphere","label":"Statusphere","docId":"tutorials/statusphere","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Guides","items":[{"type":"link","href":"/guides/lexicons","label":"Lexicons","docId":"guides/lexicons","unlisted":false},{"type":"link","href":"/guides/scripting","label":"Lua Scripting","docId":"guides/scripting","unlisted":false},{"type":"link","href":"/guides/index-hooks","label":"Index Hooks","docId":"guides/index-hooks","unlisted":false},{"type":"link","href":"/guides/backfill","label":"Backfill","docId":"guides/backfill","unlisted":false},{"type":"link","href":"/guides/event-logs","label":"Event Logs","docId":"guides/event-logs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Reference","items":[{"type":"link","href":"/reference/xrpc-api","label":"XRPC API","docId":"reference/xrpc-api","unlisted":false},{"type":"link","href":"/reference/admin-api","label":"Admin API","docId":"reference/admin-api","unlisted":false},{"type":"category","label":"Script Examples","items":[{"type":"link","href":"/reference/scripts/get-record","label":"Get a Record","docId":"reference/scripts/get-record","unlisted":false},{"type":"link","href":"/reference/scripts/create-record","label":"Create Record","docId":"reference/scripts/create-record","unlisted":false},{"type":"link","href":"/reference/scripts/upsert-record","label":"Upsert Record","docId":"reference/scripts/upsert-record","unlisted":false},{"type":"link","href":"/reference/scripts/paginated-list","label":"Paginated List","docId":"reference/scripts/paginated-list","unlisted":false},{"type":"link","href":"/reference/scripts/list-or-fetch","label":"List or Fetch","docId":"reference/scripts/list-or-fetch","unlisted":false},{"type":"link","href":"/reference/scripts/expanded-query","label":"Expanded Query","docId":"reference/scripts/expanded-query","unlisted":false},{"type":"link","href":"/reference/scripts/update-or-delete","label":"Update or Delete","docId":"reference/scripts/update-or-delete","unlisted":false},{"type":"link","href":"/reference/scripts/batch-save","label":"Batch Save","docId":"reference/scripts/batch-save","unlisted":false},{"type":"link","href":"/reference/scripts/sidecar-records","label":"Sidecar Records","docId":"reference/scripts/sidecar-records","unlisted":false},{"type":"link","href":"/reference/scripts/cascading-delete","label":"Cascading Delete","docId":"reference/scripts/cascading-delete","unlisted":false},{"type":"link","href":"/reference/scripts/complex-mutations","label":"Complex Mutations","docId":"reference/scripts/complex-mutations","unlisted":false},{"type":"link","href":"/reference/scripts/algolia-sync","label":"Algolia Sync","docId":"reference/scripts/algolia-sync","unlisted":false},{"type":"link","href":"/reference/scripts/meilisearch-sync","label":"Meilisearch Sync","docId":"reference/scripts/meilisearch-sync","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","href":"/reference/glossary","label":"Glossary","docId":"reference/glossary","unlisted":false},{"type":"link","href":"/reference/architecture","label":"Architecture","docId":"reference/architecture","unlisted":false},{"type":"link","href":"/reference/troubleshooting","label":"Troubleshooting","docId":"reference/troubleshooting","unlisted":false},{"type":"link","href":"/reference/production-deployment","label":"Production","docId":"reference/production-deployment","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"getting-started/authentication":{"id":"getting-started/authentication","title":"Authentication","description":"HappyView uses AT Protocol OAuth for authentication, handled by an external AIP instance. HappyView does not store credentials or issue tokens: all OAuth is delegated to AIP.","sidebar":"docs"},"getting-started/configuration":{"id":"getting-started/configuration","title":"Configuration","description":"HappyView is configured via environment variables. A .env file in the project root is loaded automatically on startup. See Deployment for local setup or Production Deployment for production setup.","sidebar":"docs"},"getting-started/dashboard":{"id":"getting-started/dashboard","title":"Dashboard","description":"HappyView ships with a web dashboard that provides a visual interface for everything the admin API offers: managing lexicons, viewing indexed records, and monitoring backfill jobs. It runs as a separate Next.js application alongside the Rust backend.","sidebar":"docs"},"getting-started/deployment/docker":{"id":"getting-started/deployment/docker","title":"Local Development with Docker","description":"This guide runs the full HappyView stack locally using Docker Compose: Postgres, Tap, HappyView, and the web dashboard.","sidebar":"docs"},"getting-started/deployment/other":{"id":"getting-started/deployment/other","title":"Local Development from Source","description":"This guide runs HappyView directly with cargo run, with you managing Postgres, AIP, and Tap separately. If you\'d rather use Docker Compose to run everything together, see Local Development with Docker.","sidebar":"docs"},"getting-started/deployment/railway":{"id":"getting-started/deployment/railway","title":"Deploy on Railway","description":"The fastest way to get HappyView running is with Railway. This template deploys HappyView, AIP (OAuth provider), Tap (real-time data and backfill), and Postgres with a single click:","sidebar":"docs"},"getting-started/quickstart":{"id":"getting-started/quickstart","title":"Quickstart","description":"This page walks you through the fastest path to a working HappyView instance. By the end, you\'ll have an AppView that indexes records from the AT Protocol network and serves XRPC endpoints.","sidebar":"docs"},"guides/api-keys":{"id":"guides/api-keys","title":"API Keys","description":"API keys let you authenticate with the admin API without going through the OAuth flow. They\'re useful for CI/CD pipelines, scripts, and any automation that needs to manage your HappyView instance programmatically."},"guides/backfill":{"id":"guides/backfill","title":"Backfill","description":"When you add a new record-type lexicon, HappyView starts indexing new records from that moment via Tap. But what about records that already exist on the network? That\'s what backfill does: HappyView discovers repos via the relay and delegates the actual record fetching to Tap.","sidebar":"docs"},"guides/event-logs":{"id":"guides/event-logs","title":"Event Logs","description":"HappyView maintains an internal event log that records system activity \u2014 lexicon changes, record operations, Lua script executions and errors, admin actions, backfill jobs, and Tap connectivity. Events are stored in a Postgres table and queryable via the admin API.","sidebar":"docs"},"guides/index-hooks":{"id":"guides/index-hooks","title":"Index Hooks","description":"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views.","sidebar":"docs"},"guides/lexicons":{"id":"guides/lexicons","title":"Lexicons","description":"Lexicons are the core building block of HappyView. They\'re AT Protocol schema definitions that describe your data model, and HappyView uses them to decide which records to index from the network and what XRPC endpoints to serve.","sidebar":"docs"},"guides/scripting":{"id":"guides/scripting","title":"Lua Scripting","description":"Without Lua scripts, HappyView\'s query endpoints return raw records and procedure endpoints proxy simple creates and updates. Lua scripts let you go much further:","sidebar":"docs"},"README":{"id":"README","title":"HappyView","description":"HappyView is the best way to build an AppView for the AT Protocol. Upload your lexicon schemas and get a fully functional AppView, complete with XRPC endpoints, OAuth, real-time network sync, and historical backfill, without writing a single line of server code.","sidebar":"docs"},"reference/admin-api":{"id":"reference/admin-api","title":"Admin API","description":"The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under /admin and require an AIP-issued Bearer token from a DID that exists in the admins table. You can also manage all of this through the web dashboard.","sidebar":"docs"},"reference/architecture":{"id":"reference/architecture","title":"Architecture","description":"Guide for contributors working on HappyView itself. For a user-facing overview, see the Introduction.","sidebar":"docs"},"reference/changelog":{"id":"reference/changelog","title":"Changelog","description":"v1.9.0 \u2014 Event Logs"},"reference/glossary":{"id":"reference/glossary","title":"Glossary","description":"Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the official ATProto glossary.","sidebar":"docs"},"reference/production-deployment":{"id":"reference/production-deployment","title":"Deployment","description":"HappyView requires a Postgres database and an AIP instance for OAuth. The Quickstart covers the fastest path with Railway. This page covers other deployment options.","sidebar":"docs"},"reference/scripts/algolia-sync":{"id":"reference/scripts/algolia-sync","title":"Index Hook: Algolia Sync","description":"Push records to an Algolia search index whenever they are created, updated, or deleted on the network.","sidebar":"docs"},"reference/scripts/batch-save":{"id":"reference/scripts/batch-save","title":"Procedure: Batch Save","description":"Use Record.save_all() to create multiple records in parallel.","sidebar":"docs"},"reference/scripts/cascading-delete":{"id":"reference/scripts/cascading-delete","title":"Procedure: Cascading Delete","description":"Delete a record and all related records across collections.","sidebar":"docs"},"reference/scripts/complex-mutations":{"id":"reference/scripts/complex-mutations","title":"Procedure: Complex Mutations","description":"Load an existing record, apply multiple transformations, and save it back.","sidebar":"docs"},"reference/scripts/create-record":{"id":"reference/scripts/create-record","title":"Procedure: Create a Record","description":"The simplest write: take the request body, save it as a record, and return the URI.","sidebar":"docs"},"reference/scripts/expanded-query":{"id":"reference/scripts/expanded-query","title":"Query: Expanded Query with Profiles","description":"List statuses and include the profile of each user who created one.","sidebar":"docs"},"reference/scripts/get-record":{"id":"reference/scripts/get-record","title":"Query: Get a Single Record","description":"Fetch a single record by its AT URI.","sidebar":"docs"},"reference/scripts/list-or-fetch":{"id":"reference/scripts/list-or-fetch","title":"Query: List or Fetch Records","description":"This query handles both single-record lookups (when a uri param is provided) and paginated listing.","sidebar":"docs"},"reference/scripts/meilisearch-sync":{"id":"reference/scripts/meilisearch-sync","title":"Index Hook: Meilisearch Sync","description":"Push records to a Meilisearch search index whenever they are created, updated, or deleted on the network.","sidebar":"docs"},"reference/scripts/paginated-list":{"id":"reference/scripts/paginated-list","title":"Query: Paginated List","description":"List records from a collection with cursor-based pagination and an optional DID filter.","sidebar":"docs"},"reference/scripts/sidecar-records":{"id":"reference/scripts/sidecar-records","title":"Procedure: Create Sidecar Records","description":"Create two records with different collection NSIDs but the same rkey, linking them together by key.","sidebar":"docs"},"reference/scripts/update-or-delete":{"id":"reference/scripts/update-or-delete","title":"Procedure: Update or Delete","description":"A single endpoint that handles create, update, and delete based on the input fields.","sidebar":"docs"},"reference/scripts/upsert-record":{"id":"reference/scripts/upsert-record","title":"Procedure: Upsert a Record","description":"Create a new record, or update an existing one if the client provides its rkey.","sidebar":"docs"},"reference/troubleshooting":{"id":"reference/troubleshooting","title":"Troubleshooting","description":"Common issues and how to resolve them.","sidebar":"docs"},"reference/xrpc-api":{"id":"reference/xrpc-api","title":"XRPC API","description":"XRPC is the HTTP-based RPC protocol used by the AT Protocol. HappyView dynamically registers XRPC endpoints based on your uploaded lexicons: query lexicons become GET /xrpc/ routes, procedure lexicons become POST /xrpc/{nsid} routes.","sidebar":"docs"},"tutorials/statusphere":{"id":"tutorials/statusphere","title":"Tutorial: Statusphere with HappyView","description":"Statusphere is an example AT Protocol application where users set their current status as a single emoji. It\'s a great way to learn how HappyView works because the data model is simple but the queries are interesting.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.786d0f6d.js b/assets/js/22dd74f7.786d0f6d.js deleted file mode 100644 index 9b2edf9..0000000 --- a/assets/js/22dd74f7.786d0f6d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[1567],{5226(e){e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","href":"/","label":"Introduction","docId":"README","unlisted":false},{"type":"category","label":"Getting Started","items":[{"type":"link","href":"/getting-started/quickstart","label":"Quickstart","docId":"getting-started/quickstart","unlisted":false},{"type":"category","label":"Deployment","items":[{"type":"link","href":"/getting-started/deployment/railway","label":"Railway","docId":"getting-started/deployment/railway","unlisted":false},{"type":"link","href":"/getting-started/deployment/docker","label":"Docker","docId":"getting-started/deployment/docker","unlisted":false},{"type":"link","href":"/getting-started/deployment/other","label":"Other","docId":"getting-started/deployment/other","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","href":"/getting-started/authentication","label":"Authentication","docId":"getting-started/authentication","unlisted":false},{"type":"link","href":"/getting-started/configuration","label":"Configuration","docId":"getting-started/configuration","unlisted":false},{"type":"link","href":"/getting-started/dashboard","label":"Dashboard","docId":"getting-started/dashboard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Tutorials","items":[{"type":"link","href":"/tutorials/statusphere","label":"Statusphere","docId":"tutorials/statusphere","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Guides","items":[{"type":"link","href":"/guides/lexicons","label":"Lexicons","docId":"guides/lexicons","unlisted":false},{"type":"link","href":"/guides/scripting","label":"Lua Scripting","docId":"guides/scripting","unlisted":false},{"type":"link","href":"/guides/index-hooks","label":"Index Hooks","docId":"guides/index-hooks","unlisted":false},{"type":"link","href":"/guides/backfill","label":"Backfill","docId":"guides/backfill","unlisted":false},{"type":"link","href":"/guides/event-logs","label":"Event Logs","docId":"guides/event-logs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Reference","items":[{"type":"link","href":"/reference/xrpc-api","label":"XRPC API","docId":"reference/xrpc-api","unlisted":false},{"type":"link","href":"/reference/admin-api","label":"Admin API","docId":"reference/admin-api","unlisted":false},{"type":"category","label":"Script Examples","items":[{"type":"link","href":"/reference/scripts/get-record","label":"Get a Record","docId":"reference/scripts/get-record","unlisted":false},{"type":"link","href":"/reference/scripts/create-record","label":"Create Record","docId":"reference/scripts/create-record","unlisted":false},{"type":"link","href":"/reference/scripts/upsert-record","label":"Upsert Record","docId":"reference/scripts/upsert-record","unlisted":false},{"type":"link","href":"/reference/scripts/paginated-list","label":"Paginated List","docId":"reference/scripts/paginated-list","unlisted":false},{"type":"link","href":"/reference/scripts/list-or-fetch","label":"List or Fetch","docId":"reference/scripts/list-or-fetch","unlisted":false},{"type":"link","href":"/reference/scripts/expanded-query","label":"Expanded Query","docId":"reference/scripts/expanded-query","unlisted":false},{"type":"link","href":"/reference/scripts/update-or-delete","label":"Update or Delete","docId":"reference/scripts/update-or-delete","unlisted":false},{"type":"link","href":"/reference/scripts/batch-save","label":"Batch Save","docId":"reference/scripts/batch-save","unlisted":false},{"type":"link","href":"/reference/scripts/sidecar-records","label":"Sidecar Records","docId":"reference/scripts/sidecar-records","unlisted":false},{"type":"link","href":"/reference/scripts/cascading-delete","label":"Cascading Delete","docId":"reference/scripts/cascading-delete","unlisted":false},{"type":"link","href":"/reference/scripts/complex-mutations","label":"Complex Mutations","docId":"reference/scripts/complex-mutations","unlisted":false},{"type":"link","href":"/reference/scripts/algolia-sync","label":"Algolia Sync","docId":"reference/scripts/algolia-sync","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","href":"/reference/glossary","label":"Glossary","docId":"reference/glossary","unlisted":false},{"type":"link","href":"/reference/architecture","label":"Architecture","docId":"reference/architecture","unlisted":false},{"type":"link","href":"/reference/troubleshooting","label":"Troubleshooting","docId":"reference/troubleshooting","unlisted":false},{"type":"link","href":"/reference/production-deployment","label":"Production","docId":"reference/production-deployment","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"getting-started/authentication":{"id":"getting-started/authentication","title":"Authentication","description":"HappyView uses AT Protocol OAuth for authentication, handled by an external AIP instance. HappyView does not store credentials or issue tokens: all OAuth is delegated to AIP.","sidebar":"docs"},"getting-started/configuration":{"id":"getting-started/configuration","title":"Configuration","description":"HappyView is configured via environment variables. A .env file in the project root is loaded automatically on startup. See Deployment for local setup or Production Deployment for production setup.","sidebar":"docs"},"getting-started/dashboard":{"id":"getting-started/dashboard","title":"Dashboard","description":"HappyView ships with a web dashboard that provides a visual interface for everything the admin API offers: managing lexicons, viewing indexed records, and monitoring backfill jobs. It runs as a separate Next.js application alongside the Rust backend.","sidebar":"docs"},"getting-started/deployment/docker":{"id":"getting-started/deployment/docker","title":"Local Development with Docker","description":"This guide runs the full HappyView stack locally using Docker Compose: Postgres, Tap, HappyView, and the web dashboard.","sidebar":"docs"},"getting-started/deployment/other":{"id":"getting-started/deployment/other","title":"Local Development from Source","description":"This guide runs HappyView directly with cargo run, with you managing Postgres, AIP, and Tap separately. If you\'d rather use Docker Compose to run everything together, see Local Development with Docker.","sidebar":"docs"},"getting-started/deployment/railway":{"id":"getting-started/deployment/railway","title":"Deploy on Railway","description":"The fastest way to get HappyView running is with Railway. This template deploys HappyView, AIP (OAuth provider), Tap (real-time data and backfill), and Postgres with a single click:","sidebar":"docs"},"getting-started/quickstart":{"id":"getting-started/quickstart","title":"Quickstart","description":"This page walks you through the fastest path to a working HappyView instance. By the end, you\'ll have an AppView that indexes records from the AT Protocol network and serves XRPC endpoints.","sidebar":"docs"},"guides/backfill":{"id":"guides/backfill","title":"Backfill","description":"When you add a new record-type lexicon, HappyView starts indexing new records from that moment via Tap. But what about records that already exist on the network? That\'s what backfill does: HappyView discovers repos via the relay and delegates the actual record fetching to Tap.","sidebar":"docs"},"guides/event-logs":{"id":"guides/event-logs","title":"Event Logs","description":"HappyView maintains an internal event log that records system activity \u2014 lexicon changes, record operations, Lua script executions and errors, admin actions, backfill jobs, and Tap connectivity. Events are stored in a Postgres table and queryable via the admin API.","sidebar":"docs"},"guides/index-hooks":{"id":"guides/index-hooks","title":"Index Hooks","description":"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views.","sidebar":"docs"},"guides/lexicons":{"id":"guides/lexicons","title":"Lexicons","description":"Lexicons are the core building block of HappyView. They\'re AT Protocol schema definitions that describe your data model, and HappyView uses them to decide which records to index from the network and what XRPC endpoints to serve.","sidebar":"docs"},"guides/scripting":{"id":"guides/scripting","title":"Lua Scripting","description":"Without Lua scripts, HappyView\'s query endpoints return raw records and procedure endpoints proxy simple creates and updates. Lua scripts let you go much further:","sidebar":"docs"},"README":{"id":"README","title":"HappyView","description":"HappyView is the best way to build an AppView for the AT Protocol. Upload your lexicon schemas and get a fully functional AppView, complete with XRPC endpoints, OAuth, real-time network sync, and historical backfill, without writing a single line of server code.","sidebar":"docs"},"reference/admin-api":{"id":"reference/admin-api","title":"Admin API","description":"The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under /admin and require an AIP-issued Bearer token from a DID that exists in the admins table. You can also manage all of this through the web dashboard.","sidebar":"docs"},"reference/architecture":{"id":"reference/architecture","title":"Architecture","description":"Guide for contributors working on HappyView itself. For a user-facing overview, see the Introduction.","sidebar":"docs"},"reference/changelog":{"id":"reference/changelog","title":"Changelog","description":"v1.9.0 \u2014 Event Logs"},"reference/glossary":{"id":"reference/glossary","title":"Glossary","description":"Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the official ATProto glossary.","sidebar":"docs"},"reference/production-deployment":{"id":"reference/production-deployment","title":"Deployment","description":"HappyView requires a Postgres database and an AIP instance for OAuth. The Quickstart covers the fastest path with Railway. This page covers other deployment options.","sidebar":"docs"},"reference/scripts/algolia-sync":{"id":"reference/scripts/algolia-sync","title":"Index Hook: Algolia Sync","description":"Push records to an Algolia search index whenever they are created, updated, or deleted on the network.","sidebar":"docs"},"reference/scripts/batch-save":{"id":"reference/scripts/batch-save","title":"Procedure: Batch Save","description":"Use Record.save_all() to create multiple records in parallel.","sidebar":"docs"},"reference/scripts/cascading-delete":{"id":"reference/scripts/cascading-delete","title":"Procedure: Cascading Delete","description":"Delete a record and all related records across collections.","sidebar":"docs"},"reference/scripts/complex-mutations":{"id":"reference/scripts/complex-mutations","title":"Procedure: Complex Mutations","description":"Load an existing record, apply multiple transformations, and save it back.","sidebar":"docs"},"reference/scripts/create-record":{"id":"reference/scripts/create-record","title":"Procedure: Create a Record","description":"The simplest write: take the request body, save it as a record, and return the URI.","sidebar":"docs"},"reference/scripts/expanded-query":{"id":"reference/scripts/expanded-query","title":"Query: Expanded Query with Profiles","description":"List statuses and include the profile of each user who created one.","sidebar":"docs"},"reference/scripts/get-record":{"id":"reference/scripts/get-record","title":"Query: Get a Single Record","description":"Fetch a single record by its AT URI.","sidebar":"docs"},"reference/scripts/list-or-fetch":{"id":"reference/scripts/list-or-fetch","title":"Query: List or Fetch Records","description":"This query handles both single-record lookups (when a uri param is provided) and paginated listing.","sidebar":"docs"},"reference/scripts/paginated-list":{"id":"reference/scripts/paginated-list","title":"Query: Paginated List","description":"List records from a collection with cursor-based pagination and an optional DID filter.","sidebar":"docs"},"reference/scripts/sidecar-records":{"id":"reference/scripts/sidecar-records","title":"Procedure: Create Sidecar Records","description":"Create two records with different collection NSIDs but the same rkey, linking them together by key.","sidebar":"docs"},"reference/scripts/update-or-delete":{"id":"reference/scripts/update-or-delete","title":"Procedure: Update or Delete","description":"A single endpoint that handles create, update, and delete based on the input fields.","sidebar":"docs"},"reference/scripts/upsert-record":{"id":"reference/scripts/upsert-record","title":"Procedure: Upsert a Record","description":"Create a new record, or update an existing one if the client provides its rkey.","sidebar":"docs"},"reference/troubleshooting":{"id":"reference/troubleshooting","title":"Troubleshooting","description":"Common issues and how to resolve them.","sidebar":"docs"},"reference/xrpc-api":{"id":"reference/xrpc-api","title":"XRPC API","description":"XRPC is the HTTP-based RPC protocol used by the AT Protocol. HappyView dynamically registers XRPC endpoints based on your uploaded lexicons: query lexicons become GET /xrpc/ routes, procedure lexicons become POST /xrpc/{nsid} routes.","sidebar":"docs"},"tutorials/statusphere":{"id":"tutorials/statusphere","title":"Tutorial: Statusphere with HappyView","description":"Statusphere is an example AT Protocol application where users set their current status as a single emoji. It\'s a great way to learn how HappyView works because the data model is simple but the queries are interesting.","sidebar":"docs"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/2d1b556d.0f3febed.js b/assets/js/2d1b556d.0f3febed.js deleted file mode 100644 index 46463dd..0000000 --- a/assets/js/2d1b556d.0f3febed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[1952],{8385(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"reference/scripts/algolia-sync","title":"Index Hook: Algolia Sync","description":"Push records to an Algolia search index whenever they are created, updated, or deleted on the network.","source":"@site/docs/reference/scripts/algolia-sync.md","sourceDirName":"reference/scripts","slug":"/reference/scripts/algolia-sync","permalink":"/reference/scripts/algolia-sync","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Complex Mutations","permalink":"/reference/scripts/complex-mutations"},"next":{"title":"Glossary","permalink":"/reference/glossary"}}');var s=t(4848),o=t(8453);const i={},d="Index Hook: Algolia Sync",l={},c=[{value:"How it works",id:"how-it-works",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Use case",id:"use-case",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"index-hook-algolia-sync",children:"Index Hook: Algolia Sync"})}),"\n",(0,s.jsx)(n.p,{children:"Push records to an Algolia search index whenever they are created, updated, or deleted on the network."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Lexicon type:"})," record (index hook)"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["X-Algolia-API-Key"] = "your-api-key",\n ["X-Algolia-Application-Id"] = "your-app-id",\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers\n })\n else\n http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers,\n body = json.encode({\n objectID = uri,\n collection = collection,\n did = did,\n record = record\n })\n })\n end\nend\n'})}),"\n",(0,s.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On ",(0,s.jsx)(n.strong,{children:"create"})," or ",(0,s.jsx)(n.strong,{children:"update"}),": sends a ",(0,s.jsx)(n.code,{children:"PUT"})," request to Algolia's index API with the record data, using the AT URI as the ",(0,s.jsx)(n.code,{children:"objectID"}),". Algolia upserts the object \u2014 if it already exists, it's replaced."]}),"\n",(0,s.jsxs)(n.li,{children:["On ",(0,s.jsx)(n.strong,{children:"delete"}),": sends a ",(0,s.jsx)(n.code,{children:"DELETE"})," request to remove the object from the index by its AT URI."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"json.encode()"})," function converts the Lua table into a JSON string for the request body. See ",(0,s.jsx)(n.a,{href:"/guides/index-hooks#json-api",children:"JSON API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,s.jsx)(n.p,{children:"Replace the placeholder values:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Placeholder"}),(0,s.jsx)(n.th,{children:"Value"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"your-api-key"})}),(0,s.jsx)(n.td,{children:"Your Algolia Admin API key (with write permissions)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"your-app-id"})}),(0,s.jsx)(n.td,{children:"Your Algolia Application ID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"YOUR-APP"})}),(0,s.jsx)(n.td,{children:"Your Algolia application subdomain (same as the Application ID)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"records"})}),(0,s.jsx)(n.td,{children:"The Algolia index name (choose any name you like)"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"use-case",children:"Use case"}),"\n",(0,s.jsx)(n.p,{children:"This hook keeps an external search index in sync with your indexed records in real time. Users searching through Algolia get results that reflect the latest state of the network without polling or scheduled jobs."}),"\n",(0,s.jsxs)(n.p,{children:["Combine this with a ",(0,s.jsx)(n.a,{href:"/guides/scripting",children:"query script"})," that searches Algolia instead of the local database for a full-text search experience that goes beyond what ",(0,s.jsx)(n.code,{children:"db.search"})," offers."]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453(e,n,t){t.d(n,{R:()=>i,x:()=>d});var r=t(6540);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d1b556d.316fda02.js b/assets/js/2d1b556d.316fda02.js new file mode 100644 index 0000000..152b8d9 --- /dev/null +++ b/assets/js/2d1b556d.316fda02.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[1952],{8385(e,n,t){t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"reference/scripts/algolia-sync","title":"Index Hook: Algolia Sync","description":"Push records to an Algolia search index whenever they are created, updated, or deleted on the network.","source":"@site/docs/reference/scripts/algolia-sync.md","sourceDirName":"reference/scripts","slug":"/reference/scripts/algolia-sync","permalink":"/reference/scripts/algolia-sync","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Complex Mutations","permalink":"/reference/scripts/complex-mutations"},"next":{"title":"Meilisearch Sync","permalink":"/reference/scripts/meilisearch-sync"}}');var s=t(4848),i=t(8453);const o={},c="Index Hook: Algolia Sync",d={},l=[{value:"How it works",id:"how-it-works",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Use case",id:"use-case",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"index-hook-algolia-sync",children:"Index Hook: Algolia Sync"})}),"\n",(0,s.jsx)(n.p,{children:"Push records to an Algolia search index whenever they are created, updated, or deleted on the network."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Lexicon type:"})," record (index hook)"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["X-Algolia-API-Key"] = "your-api-key",\n ["X-Algolia-Application-Id"] = "your-app-id",\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers\n })\n else\n http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers,\n body = json.encode({\n objectID = uri,\n collection = collection,\n did = did,\n record = record\n })\n })\n end\nend\n'})}),"\n",(0,s.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["On ",(0,s.jsx)(n.strong,{children:"create"})," or ",(0,s.jsx)(n.strong,{children:"update"}),": sends a ",(0,s.jsx)(n.code,{children:"PUT"})," request to Algolia's index API with the record data, using the AT URI as the ",(0,s.jsx)(n.code,{children:"objectID"}),". Algolia upserts the object \u2014 if it already exists, it's replaced."]}),"\n",(0,s.jsxs)(n.li,{children:["On ",(0,s.jsx)(n.strong,{children:"delete"}),": sends a ",(0,s.jsx)(n.code,{children:"DELETE"})," request to remove the object from the index by its AT URI."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"json.encode()"})," function converts the Lua table into a JSON string for the request body. See ",(0,s.jsx)(n.a,{href:"/guides/index-hooks#json-api",children:"JSON API"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,s.jsx)(n.p,{children:"Replace the placeholder values:"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Placeholder"}),(0,s.jsx)(n.th,{children:"Value"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"your-api-key"})}),(0,s.jsx)(n.td,{children:"Your Algolia Admin API key (with write permissions)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"your-app-id"})}),(0,s.jsx)(n.td,{children:"Your Algolia Application ID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"YOUR-APP"})}),(0,s.jsx)(n.td,{children:"Your Algolia application subdomain (same as the Application ID)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"records"})}),(0,s.jsx)(n.td,{children:"The Algolia index name (choose any name you like)"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"use-case",children:"Use case"}),"\n",(0,s.jsx)(n.p,{children:"This hook keeps an external search index in sync with your indexed records in real time. Users searching through Algolia get results that reflect the latest state of the network without polling or scheduled jobs."}),"\n",(0,s.jsxs)(n.p,{children:["Combine this with a ",(0,s.jsx)(n.a,{href:"/guides/scripting",children:"query script"})," that searches Algolia instead of the local database for a full-text search experience that goes beyond what ",(0,s.jsx)(n.code,{children:"db.search"})," offers."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453(e,n,t){t.d(n,{R:()=>o,x:()=>c});var r=t(6540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/774696b9.5358730d.js b/assets/js/774696b9.5358730d.js deleted file mode 100644 index 88d0a37..0000000 --- a/assets/js/774696b9.5358730d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[8865],{8158(e,n,d){d.r(n),d.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>t,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"guides/index-hooks","title":"Index Hooks","description":"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views.","source":"@site/docs/guides/index-hooks.md","sourceDirName":"guides","slug":"/guides/index-hooks","permalink":"/guides/index-hooks","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Lua Scripting","permalink":"/guides/scripting"},"next":{"title":"Backfill","permalink":"/guides/backfill"}}');var s=d(4848),i=d(8453);const t={},l="Index Hooks",c={},o=[{value:"Attaching a hook",id:"attaching-a-hook",level:2},{value:"Script structure",id:"script-structure",level:2},{value:"Context globals",id:"context-globals",level:2},{value:"Available APIs",id:"available-apis",level:2},{value:"Error handling and retries",id:"error-handling-and-retries",level:2},{value:"Dead letter table",id:"dead-letter-table",level:3},{value:"Examples",id:"examples",level:2},{value:"Post to a webhook",id:"post-to-a-webhook",level:3},{value:"Sync to Algolia",id:"sync-to-algolia",level:3},{value:"Next steps",id:"next-steps",level:2}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"index-hooks",children:"Index Hooks"})}),"\n",(0,s.jsx)(n.p,{children:"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views."}),"\n",(0,s.jsxs)(n.p,{children:["Unlike ",(0,s.jsx)(n.a,{href:"/guides/scripting",children:"query and procedure scripts"})," that run in response to XRPC requests, index hooks are triggered by the firehose. They run asynchronously and never block record indexing."]}),"\n",(0,s.jsx)(n.h2,{id:"attaching-a-hook",children:"Attaching a hook"}),"\n",(0,s.jsxs)(n.p,{children:["Each record-type lexicon can have one index hook. You can add it through the ",(0,s.jsx)(n.a,{href:"/getting-started/dashboard",children:"dashboard"}),' (click "Add Index Hook" on any record lexicon\'s detail page) or via the ',(0,s.jsx)(n.a,{href:"/reference/admin-api#upload--upsert-a-lexicon",children:"admin API"})," by including the ",(0,s.jsx)(n.code,{children:"index_hook"})," field when uploading a lexicon."]}),"\n",(0,s.jsx)(n.h2,{id:"script-structure",children:"Script structure"}),"\n",(0,s.jsxs)(n.p,{children:["Like query and procedure scripts, index hooks must define a ",(0,s.jsx)(n.code,{children:"handle()"})," function:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n if action == "delete" then\n log("deleted " .. uri)\n else\n log(action .. " " .. uri)\n end\nend\n'})}),"\n",(0,s.jsx)(n.p,{children:"The function is called once per record event. There is no return value \u2014 index hooks are fire-and-forget from the caller's perspective."}),"\n",(0,s.jsx)(n.h2,{id:"context-globals",children:"Context globals"}),"\n",(0,s.jsxs)(n.p,{children:["These globals are set before ",(0,s.jsx)(n.code,{children:"handle()"})," is called:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Global"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"action"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:'"create"'}),", ",(0,s.jsx)(n.code,{children:'"update"'}),", or ",(0,s.jsx)(n.code,{children:'"delete"'})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"uri"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsxs)(n.td,{children:["The full AT URI (e.g. ",(0,s.jsx)(n.code,{children:"at://did:plc:abc/col/rkey"}),")"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"did"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The repo DID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"collection"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The collection NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"rkey"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The record key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"record"})}),(0,s.jsx)(n.td,{children:"table?"}),(0,s.jsx)(n.td,{children:"The full record as a Lua table (nil on delete)"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Index hooks do ",(0,s.jsx)(n.strong,{children:"not"})," have access to ",(0,s.jsx)(n.code,{children:"caller_did"}),", ",(0,s.jsx)(n.code,{children:"input"}),", ",(0,s.jsx)(n.code,{children:"params"}),", ",(0,s.jsx)(n.code,{children:"method"}),", or the ",(0,s.jsx)(n.code,{children:"Record"})," API. They run from the firehose, not from a user request."]}),"\n",(0,s.jsx)(n.h2,{id:"available-apis",children:"Available APIs"}),"\n",(0,s.jsx)(n.p,{children:"Index hooks have access to:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#database-api",children:"Database API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"db.query"}),", ",(0,s.jsx)(n.code,{children:"db.get"}),", ",(0,s.jsx)(n.code,{children:"db.search"}),", ",(0,s.jsx)(n.code,{children:"db.backlinks"}),", ",(0,s.jsx)(n.code,{children:"db.count"}),", ",(0,s.jsx)(n.code,{children:"db.raw"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#http-api",children:"HTTP API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"http.get"}),", ",(0,s.jsx)(n.code,{children:"http.post"}),", ",(0,s.jsx)(n.code,{children:"http.put"}),", ",(0,s.jsx)(n.code,{children:"http.patch"}),", ",(0,s.jsx)(n.code,{children:"http.delete"}),", ",(0,s.jsx)(n.code,{children:"http.head"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#json-api",children:"JSON API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"json.encode"}),", ",(0,s.jsx)(n.code,{children:"json.decode"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#utility-globals",children:"Utility globals"})})," \u2014 ",(0,s.jsx)(n.code,{children:"log()"}),", ",(0,s.jsx)(n.code,{children:"now()"}),", ",(0,s.jsx)(n.code,{children:"TID()"}),", ",(0,s.jsx)(n.code,{children:"toarray()"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"error-handling-and-retries",children:"Error handling and retries"}),"\n",(0,s.jsx)(n.p,{children:"Index hooks are designed to be resilient:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["If a hook fails, it retries up to ",(0,s.jsx)(n.strong,{children:"3 times"})," with exponential backoff (1s, 2s, 4s delays)."]}),"\n",(0,s.jsxs)(n.li,{children:["If all retries are exhausted, the failed event is inserted into the ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table for later inspection."]}),"\n",(0,s.jsx)(n.li,{children:"Hook failures never block record indexing \u2014 the record is always indexed regardless of whether the hook succeeds."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Failed hooks are logged as errors. Check the ",(0,s.jsx)(n.a,{href:"/guides/event-logs",children:"event logs"})," or query the ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table directly to find and replay failures."]}),"\n",(0,s.jsx)(n.h3,{id:"dead-letter-table",children:"Dead letter table"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table stores events that failed all retry attempts:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Column"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"id"})}),(0,s.jsx)(n.td,{children:"UUID"}),(0,s.jsx)(n.td,{children:"Primary key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"lexicon_id"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The lexicon NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"uri"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The AT URI of the record"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"did"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The repo DID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"collection"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The collection NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"rkey"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The record key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"action"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"create"}),", ",(0,s.jsx)(n.code,{children:"update"}),", or ",(0,s.jsx)(n.code,{children:"delete"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"record"})}),(0,s.jsx)(n.td,{children:"jsonb"}),(0,s.jsx)(n.td,{children:"The record data (null on delete)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"error"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The error message from the last attempt"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"attempts"})}),(0,s.jsx)(n.td,{children:"int"}),(0,s.jsx)(n.td,{children:"Total number of attempts made"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"created_at"})}),(0,s.jsx)(n.td,{children:"timestamptz"}),(0,s.jsx)(n.td,{children:"When the failure was recorded"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,s.jsx)(n.h3,{id:"post-to-a-webhook",children:"Post to a webhook"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n http.post("https://hooks.example.com/records", {\n headers = { ["Content-Type"] = "application/json" },\n body = json.encode({\n action = action,\n uri = uri,\n did = did,\n record = record\n })\n })\nend\n'})}),"\n",(0,s.jsx)(n.h3,{id:"sync-to-algolia",children:"Sync to Algolia"}),"\n",(0,s.jsx)(n.p,{children:"Push records to an Algolia search index on create/update, and remove them on delete:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["X-Algolia-API-Key"] = "your-api-key",\n ["X-Algolia-Application-Id"] = "your-app-id",\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers\n })\n else\n http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers,\n body = json.encode({\n objectID = uri,\n collection = collection,\n did = did,\n record = record\n })\n })\n end\nend\n'})}),"\n",(0,s.jsxs)(n.p,{children:["See the full ",(0,s.jsx)(n.a,{href:"/reference/scripts/algolia-sync",children:"Algolia sync reference"})," for more detail."]}),"\n",(0,s.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/guides/scripting",children:"Lua Scripting"}),": Full reference for the sandbox, APIs, and debugging"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/guides/lexicons",children:"Lexicons"}),": Understand how record, query, and procedure lexicons work together"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/reference/admin-api#upload--upsert-a-lexicon",children:"Admin API"}),": Upload lexicons with index hooks via the API"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453(e,n,d){d.d(n,{R:()=>t,x:()=>l});var r=d(6540);const s={},i=r.createContext(s);function t(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/774696b9.aaf7ca2b.js b/assets/js/774696b9.aaf7ca2b.js new file mode 100644 index 0000000..c62f715 --- /dev/null +++ b/assets/js/774696b9.aaf7ca2b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[8865],{8158(e,n,d){d.r(n),d.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>t,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"guides/index-hooks","title":"Index Hooks","description":"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views.","source":"@site/docs/guides/index-hooks.md","sourceDirName":"guides","slug":"/guides/index-hooks","permalink":"/guides/index-hooks","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Lua Scripting","permalink":"/guides/scripting"},"next":{"title":"Backfill","permalink":"/guides/backfill"}}');var s=d(4848),i=d(8453);const t={},l="Index Hooks",c={},o=[{value:"Attaching a hook",id:"attaching-a-hook",level:2},{value:"Script structure",id:"script-structure",level:2},{value:"Context globals",id:"context-globals",level:2},{value:"Available APIs",id:"available-apis",level:2},{value:"Error handling and retries",id:"error-handling-and-retries",level:2},{value:"Dead letter table",id:"dead-letter-table",level:3},{value:"Examples",id:"examples",level:2},{value:"Post to a webhook",id:"post-to-a-webhook",level:3},{value:"Sync to Algolia",id:"sync-to-algolia",level:3},{value:"Sync to Meilisearch",id:"sync-to-meilisearch",level:3},{value:"Next steps",id:"next-steps",level:2}];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"index-hooks",children:"Index Hooks"})}),"\n",(0,s.jsx)(n.p,{children:"Index hooks are Lua scripts that run automatically whenever a record in a collection is created, updated, or deleted on the network. They let you react to record changes in real time \u2014 push data to search engines, sync with external APIs, send notifications, or build materialized views."}),"\n",(0,s.jsxs)(n.p,{children:["Unlike ",(0,s.jsx)(n.a,{href:"/guides/scripting",children:"query and procedure scripts"})," that run in response to XRPC requests, index hooks are triggered by the firehose. They run asynchronously and never block record indexing."]}),"\n",(0,s.jsx)(n.h2,{id:"attaching-a-hook",children:"Attaching a hook"}),"\n",(0,s.jsxs)(n.p,{children:["Each record-type lexicon can have one index hook. You can add it through the ",(0,s.jsx)(n.a,{href:"/getting-started/dashboard",children:"dashboard"}),' (click "Add Index Hook" on any record lexicon\'s detail page) or via the ',(0,s.jsx)(n.a,{href:"/reference/admin-api#upload--upsert-a-lexicon",children:"admin API"})," by including the ",(0,s.jsx)(n.code,{children:"index_hook"})," field when uploading a lexicon."]}),"\n",(0,s.jsx)(n.h2,{id:"script-structure",children:"Script structure"}),"\n",(0,s.jsxs)(n.p,{children:["Like query and procedure scripts, index hooks must define a ",(0,s.jsx)(n.code,{children:"handle()"})," function:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n if action == "delete" then\n log("deleted " .. uri)\n else\n log(action .. " " .. uri)\n end\nend\n'})}),"\n",(0,s.jsx)(n.p,{children:"The function is called once per record event. There is no return value \u2014 index hooks are fire-and-forget from the caller's perspective."}),"\n",(0,s.jsx)(n.h2,{id:"context-globals",children:"Context globals"}),"\n",(0,s.jsxs)(n.p,{children:["These globals are set before ",(0,s.jsx)(n.code,{children:"handle()"})," is called:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Global"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"action"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:'"create"'}),", ",(0,s.jsx)(n.code,{children:'"update"'}),", or ",(0,s.jsx)(n.code,{children:'"delete"'})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"uri"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsxs)(n.td,{children:["The full AT URI (e.g. ",(0,s.jsx)(n.code,{children:"at://did:plc:abc/col/rkey"}),")"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"did"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The repo DID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"collection"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The collection NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"rkey"})}),(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:"The record key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"record"})}),(0,s.jsx)(n.td,{children:"table?"}),(0,s.jsx)(n.td,{children:"The full record as a Lua table (nil on delete)"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Index hooks do ",(0,s.jsx)(n.strong,{children:"not"})," have access to ",(0,s.jsx)(n.code,{children:"caller_did"}),", ",(0,s.jsx)(n.code,{children:"input"}),", ",(0,s.jsx)(n.code,{children:"params"}),", ",(0,s.jsx)(n.code,{children:"method"}),", or the ",(0,s.jsx)(n.code,{children:"Record"})," API. They run from the firehose, not from a user request."]}),"\n",(0,s.jsx)(n.h2,{id:"available-apis",children:"Available APIs"}),"\n",(0,s.jsx)(n.p,{children:"Index hooks have access to:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#database-api",children:"Database API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"db.query"}),", ",(0,s.jsx)(n.code,{children:"db.get"}),", ",(0,s.jsx)(n.code,{children:"db.search"}),", ",(0,s.jsx)(n.code,{children:"db.backlinks"}),", ",(0,s.jsx)(n.code,{children:"db.count"}),", ",(0,s.jsx)(n.code,{children:"db.raw"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#http-api",children:"HTTP API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"http.get"}),", ",(0,s.jsx)(n.code,{children:"http.post"}),", ",(0,s.jsx)(n.code,{children:"http.put"}),", ",(0,s.jsx)(n.code,{children:"http.patch"}),", ",(0,s.jsx)(n.code,{children:"http.delete"}),", ",(0,s.jsx)(n.code,{children:"http.head"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#json-api",children:"JSON API"})})," \u2014 ",(0,s.jsx)(n.code,{children:"json.encode"}),", ",(0,s.jsx)(n.code,{children:"json.decode"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/guides/scripting#utility-globals",children:"Utility globals"})})," \u2014 ",(0,s.jsx)(n.code,{children:"log()"}),", ",(0,s.jsx)(n.code,{children:"now()"}),", ",(0,s.jsx)(n.code,{children:"TID()"}),", ",(0,s.jsx)(n.code,{children:"toarray()"})]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"error-handling-and-retries",children:"Error handling and retries"}),"\n",(0,s.jsx)(n.p,{children:"Index hooks are designed to be resilient:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["If a hook fails, it retries up to ",(0,s.jsx)(n.strong,{children:"3 times"})," with exponential backoff (1s, 2s, 4s delays)."]}),"\n",(0,s.jsxs)(n.li,{children:["If all retries are exhausted, the failed event is inserted into the ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table for later inspection."]}),"\n",(0,s.jsx)(n.li,{children:"Hook failures never block record indexing \u2014 the record is always indexed regardless of whether the hook succeeds."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Failed hooks are logged as errors. Check the ",(0,s.jsx)(n.a,{href:"/guides/event-logs",children:"event logs"})," or query the ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table directly to find and replay failures."]}),"\n",(0,s.jsx)(n.h3,{id:"dead-letter-table",children:"Dead letter table"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"dead_letter_hooks"})," table stores events that failed all retry attempts:"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Column"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"id"})}),(0,s.jsx)(n.td,{children:"UUID"}),(0,s.jsx)(n.td,{children:"Primary key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"lexicon_id"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The lexicon NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"uri"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The AT URI of the record"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"did"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The repo DID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"collection"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The collection NSID"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"rkey"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The record key"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"action"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"create"}),", ",(0,s.jsx)(n.code,{children:"update"}),", or ",(0,s.jsx)(n.code,{children:"delete"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"record"})}),(0,s.jsx)(n.td,{children:"jsonb"}),(0,s.jsx)(n.td,{children:"The record data (null on delete)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"error"})}),(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:"The error message from the last attempt"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"attempts"})}),(0,s.jsx)(n.td,{children:"int"}),(0,s.jsx)(n.td,{children:"Total number of attempts made"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"created_at"})}),(0,s.jsx)(n.td,{children:"timestamptz"}),(0,s.jsx)(n.td,{children:"When the failure was recorded"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"examples",children:"Examples"}),"\n",(0,s.jsx)(n.h3,{id:"post-to-a-webhook",children:"Post to a webhook"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n http.post("https://hooks.example.com/records", {\n headers = { ["Content-Type"] = "application/json" },\n body = json.encode({\n action = action,\n uri = uri,\n did = did,\n record = record\n })\n })\nend\n'})}),"\n",(0,s.jsx)(n.h3,{id:"sync-to-algolia",children:"Sync to Algolia"}),"\n",(0,s.jsx)(n.p,{children:"Push records to an Algolia search index on create/update, and remove them on delete:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["X-Algolia-API-Key"] = "your-api-key",\n ["X-Algolia-Application-Id"] = "your-app-id",\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers\n })\n else\n http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {\n headers = headers,\n body = json.encode({\n objectID = uri,\n collection = collection,\n did = did,\n record = record\n })\n })\n end\nend\n'})}),"\n",(0,s.jsxs)(n.p,{children:["See the full ",(0,s.jsx)(n.a,{href:"/reference/scripts/algolia-sync",children:"Algolia sync reference"})," for more detail."]}),"\n",(0,s.jsx)(n.h3,{id:"sync-to-meilisearch",children:"Sync to Meilisearch"}),"\n",(0,s.jsx)(n.p,{children:"Push records to a self-hosted Meilisearch index on create/update, and remove them on delete:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["Authorization"] = "Bearer " .. env.MEILISEARCH_API_KEY,\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete(env.MEILISEARCH_URL .. "/indexes/records/documents/" .. uri, {\n headers = headers\n })\n else\n http.post(env.MEILISEARCH_URL .. "/indexes/records/documents", {\n headers = headers,\n body = json.encode(toarray({\n {\n id = uri,\n collection = collection,\n did = did,\n record = record\n }\n }))\n })\n end\nend\n'})}),"\n",(0,s.jsxs)(n.p,{children:["See the full ",(0,s.jsx)(n.a,{href:"/reference/scripts/meilisearch-sync",children:"Meilisearch sync reference"})," for more detail."]}),"\n",(0,s.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/guides/scripting",children:"Lua Scripting"}),": Full reference for the sandbox, APIs, and debugging"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/guides/lexicons",children:"Lexicons"}),": Understand how record, query, and procedure lexicons work together"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"/reference/admin-api#upload--upsert-a-lexicon",children:"Admin API"}),": Upload lexicons with index hooks via the API"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8453(e,n,d){d.d(n,{R:()=>t,x:()=>l});var r=d(6540);const s={},i=r.createContext(s);function t(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/846656e5.7a01fd59.js b/assets/js/846656e5.7a01fd59.js new file mode 100644 index 0000000..d185c04 --- /dev/null +++ b/assets/js/846656e5.7a01fd59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9492],{5231(e,r,t){t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"reference/glossary","title":"Glossary","description":"Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the official ATProto glossary.","source":"@site/docs/reference/glossary.md","sourceDirName":"reference","slug":"/reference/glossary","permalink":"/reference/glossary","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Meilisearch Sync","permalink":"/reference/scripts/meilisearch-sync"},"next":{"title":"Architecture","permalink":"/reference/architecture"}}');var o=t(4848),n=t(8453);const i={},c="Glossary",a={},d=[{value:"AT Protocol terms",id:"at-protocol-terms",level:2},{value:"HappyView-specific terms",id:"happyview-specific-terms",level:2}];function l(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(r.header,{children:(0,o.jsx)(r.h1,{id:"glossary",children:"Glossary"})}),"\n",(0,o.jsxs)(r.p,{children:["Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the ",(0,o.jsx)(r.a,{href:"https://atproto.com/guides/glossary",children:"official ATProto glossary"}),"."]}),"\n",(0,o.jsx)(r.h2,{id:"at-protocol-terms",children:"AT Protocol terms"}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"AppView"})," \u2014 A backend service that indexes AT Protocol records and serves them through an API. HappyView is an AppView. See the ",(0,o.jsx)(r.a,{href:"https://atproto.com/guides/glossary#app-view",children:"ATProto docs"})," for more."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"DID"})," (Decentralized Identifier) \u2014 A persistent, globally unique identifier for an account (e.g. ",(0,o.jsx)(r.code,{children:"did:plc:abc123"}),")."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Firehose"})," \u2014 A real-time stream of all record events (creates, updates, deletes) across the AT Protocol network. HappyView consumes this via ",(0,o.jsx)(r.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"Tap"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Handle"})," \u2014 A human-readable name for an account (e.g. ",(0,o.jsx)(r.code,{children:"user.bsky.social"}),"). Handles resolve to a DID via DNS or the PLC directory."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Lexicon"})," \u2014 A schema definition for AT Protocol data types and API methods. Lexicons define what records look like, what endpoints exist, and what parameters they accept. See ",(0,o.jsx)(r.a,{href:"/guides/lexicons",children:"Lexicons"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"NSID"})," (Namespaced Identifier) \u2014 A reverse-DNS identifier for a lexicon (e.g. ",(0,o.jsx)(r.code,{children:"xyz.statusphere.status"}),"). The authority is everything except the last segment."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"PDS"})," (Personal Data Server) \u2014 The server that hosts a user's data. Users can be on any PDS \u2014 there's no single server. HappyView proxies writes back to each user's PDS."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"PLC directory"})," \u2014 A public service (e.g. ",(0,o.jsx)(r.code,{children:"plc.directory"}),") that maps DIDs to their DID documents, which contain the user's PDS endpoint and other metadata."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Record"})," \u2014 A single piece of data in an AT Protocol repository, identified by an AT URI (e.g. ",(0,o.jsx)(r.code,{children:"at://did:plc:abc/xyz.statusphere.status/abc123"}),")."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Relay"})," \u2014 A network service that aggregates repository data from many PDSes. HappyView queries the relay during ",(0,o.jsx)(r.a,{href:"/guides/backfill",children:"backfill"})," to discover which repos contain records for a given collection, then delegates the actual record fetching to Tap."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"rkey"})," (Record Key) \u2014 The unique key for a record within a collection and repo. These are most commonly TIDs (timestamp-based) or NSIDs."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"TID"})," (Timestamp Identifier) \u2014 A 13-character sortable identifier used as a record key. Generated from the current timestamp."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"XRPC"})," \u2014 The HTTP-based RPC protocol used by the AT Protocol. Query methods map to GET requests, procedure methods map to POST requests. See ",(0,o.jsx)(r.a,{href:"/reference/xrpc-api",children:"XRPC API"}),"."]}),"\n",(0,o.jsx)(r.h2,{id:"happyview-specific-terms",children:"HappyView-specific terms"}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"AIP"})," \u2014 ",(0,o.jsx)(r.a,{href:"https://github.com/graze-social/aip",children:"Authentication and Identity Provider"}),". An external service that handles AT Protocol OAuth for HappyView. Issues Bearer tokens used for authentication."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Backfill"})," \u2014 The process of bulk-indexing existing records from the network. HappyView discovers repos via the relay and delegates record fetching to Tap. Runs when a new record-type lexicon is uploaded or triggered manually. See ",(0,o.jsx)(r.a,{href:"/guides/backfill",children:"Backfill"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Network lexicon"})," \u2014 A lexicon fetched directly from the AT Protocol network via DNS authority resolution, rather than uploaded manually. See ",(0,o.jsx)(r.a,{href:"/guides/lexicons#network-lexicons",children:"Lexicons - Network lexicons"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Tap"})," \u2014 A ",(0,o.jsx)(r.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"firehose consumer and backfill worker"})," that handles real-time record streaming, cryptographic verification, and historical record fetching. HappyView connects to Tap via WebSocket to receive record events, and delegates backfill work to Tap via its HTTP API."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Target collection"})," \u2014 The record collection that a query or procedure lexicon operates on. Set via the ",(0,o.jsx)(r.code,{children:"target_collection"})," field when uploading a lexicon."]})]})}function h(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,o.jsx)(r,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},8453(e,r,t){t.d(r,{R:()=>i,x:()=>c});var s=t(6540);const o={},n=s.createContext(o);function i(e){const r=s.useContext(n);return s.useMemo(function(){return"function"==typeof e?e(r):{...r,...e}},[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(n.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/846656e5.d2c6f90f.js b/assets/js/846656e5.d2c6f90f.js deleted file mode 100644 index 9bd45a2..0000000 --- a/assets/js/846656e5.d2c6f90f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9492],{5231(e,r,t){t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"reference/glossary","title":"Glossary","description":"Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the official ATProto glossary.","source":"@site/docs/reference/glossary.md","sourceDirName":"reference","slug":"/reference/glossary","permalink":"/reference/glossary","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Algolia Sync","permalink":"/reference/scripts/algolia-sync"},"next":{"title":"Architecture","permalink":"/reference/architecture"}}');var o=t(4848),n=t(8453);const i={},c="Glossary",a={},l=[{value:"AT Protocol terms",id:"at-protocol-terms",level:2},{value:"HappyView-specific terms",id:"happyview-specific-terms",level:2}];function d(e){const r={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(r.header,{children:(0,o.jsx)(r.h1,{id:"glossary",children:"Glossary"})}),"\n",(0,o.jsxs)(r.p,{children:["Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the ",(0,o.jsx)(r.a,{href:"https://atproto.com/guides/glossary",children:"official ATProto glossary"}),"."]}),"\n",(0,o.jsx)(r.h2,{id:"at-protocol-terms",children:"AT Protocol terms"}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"AppView"})," \u2014 A backend service that indexes AT Protocol records and serves them through an API. HappyView is an AppView. See the ",(0,o.jsx)(r.a,{href:"https://atproto.com/guides/glossary#app-view",children:"ATProto docs"})," for more."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"DID"})," (Decentralized Identifier) \u2014 A persistent, globally unique identifier for an account (e.g. ",(0,o.jsx)(r.code,{children:"did:plc:abc123"}),")."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Firehose"})," \u2014 A real-time stream of all record events (creates, updates, deletes) across the AT Protocol network. HappyView consumes this via ",(0,o.jsx)(r.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"Tap"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Handle"})," \u2014 A human-readable name for an account (e.g. ",(0,o.jsx)(r.code,{children:"user.bsky.social"}),"). Handles resolve to a DID via DNS or the PLC directory."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Lexicon"})," \u2014 A schema definition for AT Protocol data types and API methods. Lexicons define what records look like, what endpoints exist, and what parameters they accept. See ",(0,o.jsx)(r.a,{href:"/guides/lexicons",children:"Lexicons"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"NSID"})," (Namespaced Identifier) \u2014 A reverse-DNS identifier for a lexicon (e.g. ",(0,o.jsx)(r.code,{children:"xyz.statusphere.status"}),"). The authority is everything except the last segment."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"PDS"})," (Personal Data Server) \u2014 The server that hosts a user's data. Users can be on any PDS \u2014 there's no single server. HappyView proxies writes back to each user's PDS."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"PLC directory"})," \u2014 A public service (e.g. ",(0,o.jsx)(r.code,{children:"plc.directory"}),") that maps DIDs to their DID documents, which contain the user's PDS endpoint and other metadata."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Record"})," \u2014 A single piece of data in an AT Protocol repository, identified by an AT URI (e.g. ",(0,o.jsx)(r.code,{children:"at://did:plc:abc/xyz.statusphere.status/abc123"}),")."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Relay"})," \u2014 A network service that aggregates repository data from many PDSes. HappyView queries the relay during ",(0,o.jsx)(r.a,{href:"/guides/backfill",children:"backfill"})," to discover which repos contain records for a given collection, then delegates the actual record fetching to Tap."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"rkey"})," (Record Key) \u2014 The unique key for a record within a collection and repo. These are most commonly TIDs (timestamp-based) or NSIDs."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"TID"})," (Timestamp Identifier) \u2014 A 13-character sortable identifier used as a record key. Generated from the current timestamp."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"XRPC"})," \u2014 The HTTP-based RPC protocol used by the AT Protocol. Query methods map to GET requests, procedure methods map to POST requests. See ",(0,o.jsx)(r.a,{href:"/reference/xrpc-api",children:"XRPC API"}),"."]}),"\n",(0,o.jsx)(r.h2,{id:"happyview-specific-terms",children:"HappyView-specific terms"}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"AIP"})," \u2014 ",(0,o.jsx)(r.a,{href:"https://github.com/graze-social/aip",children:"Authentication and Identity Provider"}),". An external service that handles AT Protocol OAuth for HappyView. Issues Bearer tokens used for authentication."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Backfill"})," \u2014 The process of bulk-indexing existing records from the network. HappyView discovers repos via the relay and delegates record fetching to Tap. Runs when a new record-type lexicon is uploaded or triggered manually. See ",(0,o.jsx)(r.a,{href:"/guides/backfill",children:"Backfill"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Network lexicon"})," \u2014 A lexicon fetched directly from the AT Protocol network via DNS authority resolution, rather than uploaded manually. See ",(0,o.jsx)(r.a,{href:"/guides/lexicons#network-lexicons",children:"Lexicons - Network lexicons"}),"."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Tap"})," \u2014 A ",(0,o.jsx)(r.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"firehose consumer and backfill worker"})," that handles real-time record streaming, cryptographic verification, and historical record fetching. HappyView connects to Tap via WebSocket to receive record events, and delegates backfill work to Tap via its HTTP API."]}),"\n",(0,o.jsxs)(r.p,{children:[(0,o.jsx)(r.strong,{children:"Target collection"})," \u2014 The record collection that a query or procedure lexicon operates on. Set via the ",(0,o.jsx)(r.code,{children:"target_collection"})," field when uploading a lexicon."]})]})}function h(e={}){const{wrapper:r}={...(0,n.R)(),...e.components};return r?(0,o.jsx)(r,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453(e,r,t){t.d(r,{R:()=>i,x:()=>c});var s=t(6540);const o={},n=s.createContext(o);function i(e){const r=s.useContext(n);return s.useMemo(function(){return"function"==typeof e?e(r):{...r,...e}},[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(n.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d26b9010.6c09a47c.js b/assets/js/d26b9010.6c09a47c.js new file mode 100644 index 0000000..c4683c2 --- /dev/null +++ b/assets/js/d26b9010.6c09a47c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9301],{1952(e,n,s){s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"guides/api-keys","title":"API Keys","description":"API keys let you authenticate with the admin API without going through the OAuth flow. They\'re useful for CI/CD pipelines, scripts, and any automation that needs to manage your HappyView instance programmatically.","source":"@site/docs/guides/api-keys.md","sourceDirName":"guides","slug":"/guides/api-keys","permalink":"/guides/api-keys","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{}}');var t=s(4848),r=s(8453);const a={},o="API Keys",c={},h=[{value:"How API keys work",id:"how-api-keys-work",level:2},{value:"Creating a key",id:"creating-a-key",level:2},{value:"Using a key",id:"using-a-key",level:2},{value:"Revoking a key",id:"revoking-a-key",level:2},{value:"Tracking usage",id:"tracking-usage",level:2},{value:"Security considerations",id:"security-considerations",level:2},{value:"Next steps",id:"next-steps",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"api-keys",children:"API Keys"})}),"\n",(0,t.jsx)(n.p,{children:"API keys let you authenticate with the admin API without going through the OAuth flow. They're useful for CI/CD pipelines, scripts, and any automation that needs to manage your HappyView instance programmatically."}),"\n",(0,t.jsx)(n.h2,{id:"how-api-keys-work",children:"How API keys work"}),"\n",(0,t.jsxs)(n.p,{children:["Each API key is a 35-character token with the format ",(0,t.jsx)(n.code,{children:"hv_"})," followed by 32 random hex characters:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4\n"})}),"\n",(0,t.jsxs)(n.p,{children:["When you create a key, HappyView shows the full token ",(0,t.jsx)(n.strong,{children:"once"}),". After that, only the prefix (",(0,t.jsx)(n.code,{children:"hv_a1b2c3d4"}),") is stored for display \u2014 the key itself is SHA-256 hashed before being saved to the database. This means nobody (including you) can retrieve the full key after creation."]}),"\n",(0,t.jsx)(n.p,{children:"API keys inherit the permissions of the admin who created them. A revoked key immediately stops working."}),"\n",(0,t.jsx)(n.h2,{id:"creating-a-key",children:"Creating a key"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Go to ",(0,t.jsx)(n.strong,{children:"Settings"})," in the dashboard"]}),"\n",(0,t.jsxs)(n.li,{children:["Select the ",(0,t.jsx)(n.strong,{children:"API Keys"})," tab"]}),"\n",(0,t.jsxs)(n.li,{children:["Click ",(0,t.jsx)(n.strong,{children:"Create API Key"})]}),"\n",(0,t.jsx)(n.li,{children:'Enter a descriptive name (e.g., "CI Deploy", "Monitoring Script")'}),"\n",(0,t.jsx)(n.li,{children:"Copy the full key from the confirmation dialog \u2014 you won't see it again"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"using-a-key",children:"Using a key"}),"\n",(0,t.jsxs)(n.p,{children:["Pass the key as a Bearer token in the ",(0,t.jsx)(n.code,{children:"Authorization"})," header:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/lexicons \\\n -H "Authorization: Bearer hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["This works for all ",(0,t.jsx)(n.a,{href:"/reference/admin-api",children:"admin API"})," endpoints \u2014 anything you can do with an OAuth token, you can do with an API key."]}),"\n",(0,t.jsx)(n.h2,{id:"revoking-a-key",children:"Revoking a key"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Go to ",(0,t.jsx)(n.strong,{children:"Settings > API Keys"})]}),"\n",(0,t.jsxs)(n.li,{children:["Click ",(0,t.jsx)(n.strong,{children:"Revoke"})," next to the key"]}),"\n",(0,t.jsx)(n.li,{children:"Confirm in the dialog"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Revoked keys are soft-deleted: they remain visible in the table (with a strikethrough) for audit purposes but can no longer authenticate. Any service using the key will immediately receive ",(0,t.jsx)(n.code,{children:"401 Unauthorized"})," responses."]}),"\n",(0,t.jsx)(n.h2,{id:"tracking-usage",children:"Tracking usage"}),"\n",(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.strong,{children:"Last Used"}),' column in the API Keys table shows when each key was last used to authenticate a request. Keys that have never been used show "Never". This helps you identify unused keys that can be safely revoked.']}),"\n",(0,t.jsx)(n.h2,{id:"security-considerations",children:"Security considerations"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Treat API keys like passwords."})," Anyone with the key has full admin access to your HappyView instance."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Use descriptive names"})," so you can identify which service uses which key."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Revoke keys you no longer need."})," If a key is compromised, revoke it immediately."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Don't commit keys to version control."})," Use environment variables or secret managers instead."]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/reference/admin-api",children:"Admin API reference"})," \u2014 full endpoint documentation"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/guides/scripting",children:"Scripting"})," \u2014 automate record processing with Lua scripts"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"/guides/index-hooks",children:"Index hooks"})," \u2014 push records to external services on write"]}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},8453(e,n,s){s.d(n,{R:()=>a,x:()=>o});var i=s(6540);const t={},r=i.createContext(t);function a(e){const n=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e7f37855.5017c79c.js b/assets/js/e7f37855.5017c79c.js new file mode 100644 index 0000000..cfaa552 --- /dev/null +++ b/assets/js/e7f37855.5017c79c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9097],{2371(e,n,s){s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"reference/scripts/meilisearch-sync","title":"Index Hook: Meilisearch Sync","description":"Push records to a Meilisearch search index whenever they are created, updated, or deleted on the network.","source":"@site/docs/reference/scripts/meilisearch-sync.md","sourceDirName":"reference/scripts","slug":"/reference/scripts/meilisearch-sync","permalink":"/reference/scripts/meilisearch-sync","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"Algolia Sync","permalink":"/reference/scripts/algolia-sync"},"next":{"title":"Glossary","permalink":"/reference/glossary"}}');var i=s(4848),t=s(8453);const c={},d="Index Hook: Meilisearch Sync",a={},o=[{value:"How it works",id:"how-it-works",level:2},{value:"Configuration",id:"configuration",level:2},{value:"Use case",id:"use-case",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"index-hook-meilisearch-sync",children:"Index Hook: Meilisearch Sync"})}),"\n",(0,i.jsx)(n.p,{children:"Push records to a Meilisearch search index whenever they are created, updated, or deleted on the network."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Lexicon type:"})," record (index hook)"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-lua",children:'function handle()\n local headers = {\n ["Authorization"] = "Bearer " .. env.MEILISEARCH_API_KEY,\n ["Content-Type"] = "application/json"\n }\n\n if action == "delete" then\n http.delete(env.MEILISEARCH_URL .. "/indexes/records/documents/" .. uri, {\n headers = headers\n })\n else\n http.post(env.MEILISEARCH_URL .. "/indexes/records/documents", {\n headers = headers,\n body = json.encode(toarray({\n {\n id = uri,\n collection = collection,\n did = did,\n record = record\n }\n }))\n })\n end\nend\n'})}),"\n",(0,i.jsx)(n.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["On ",(0,i.jsx)(n.strong,{children:"create"})," or ",(0,i.jsx)(n.strong,{children:"update"}),": sends a ",(0,i.jsx)(n.code,{children:"POST"})," request to Meilisearch's document API with the record data wrapped in an array. Meilisearch upserts by ",(0,i.jsx)(n.code,{children:"id"})," \u2014 if a document with the same AT URI already exists, it's replaced."]}),"\n",(0,i.jsxs)(n.li,{children:["On ",(0,i.jsx)(n.strong,{children:"delete"}),": sends a ",(0,i.jsx)(n.code,{children:"DELETE"})," request to remove the document from the index by its AT URI."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"toarray()"})," function ensures the table is encoded as a JSON array (Meilisearch expects an array of documents). See ",(0,i.jsx)(n.a,{href:"/guides/index-hooks#json-api",children:"JSON API"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsxs)(n.p,{children:["This script uses ",(0,i.jsx)(n.a,{href:"/guides/scripting",children:"script variables"})," instead of hardcoded values. Set these via the ",(0,i.jsx)(n.a,{href:"/reference/admin-api",children:"admin API"})," or dashboard:"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Variable"}),(0,i.jsx)(n.th,{children:"Value"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"MEILISEARCH_URL"})}),(0,i.jsxs)(n.td,{children:["Your Meilisearch instance URL (e.g. ",(0,i.jsx)(n.code,{children:"http://meilisearch.railway.internal:7700"}),")"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"MEILISEARCH_API_KEY"})}),(0,i.jsx)(n.td,{children:"A Meilisearch API key with write permissions"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["Script variables are stored in the ",(0,i.jsx)(n.code,{children:"script_variables"})," table and accessible as ",(0,i.jsx)(n.code,{children:"env.*"})," in Lua."]}),"\n",(0,i.jsx)(n.h2,{id:"use-case",children:"Use case"}),"\n",(0,i.jsx)(n.p,{children:"This hook keeps an external search index in sync with your indexed records in real time. Users searching through Meilisearch get results that reflect the latest state of the network without polling or scheduled jobs."}),"\n",(0,i.jsx)(n.p,{children:"Meilisearch is a good fit for self-hosted deployments \u2014 colocate it alongside HappyView (e.g. on the same Railway project) for sub-millisecond network latency."}),"\n",(0,i.jsxs)(n.p,{children:["Combine this with a ",(0,i.jsx)(n.a,{href:"/guides/scripting",children:"query script"})," that searches Meilisearch instead of the local database for a full-text search experience that goes beyond what ",(0,i.jsx)(n.code,{children:"db.search"})," offers."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453(e,n,s){s.d(n,{R:()=>c,x:()=>d});var r=s(6540);const i={},t=r.createContext(i);function c(e){const n=r.useContext(t);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ec125a10.3fe16f05.js b/assets/js/ec125a10.3fe16f05.js new file mode 100644 index 0000000..5b347dc --- /dev/null +++ b/assets/js/ec125a10.3fe16f05.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9659],{2192(e,n,s){s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"reference/admin-api","title":"Admin API","description":"The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under /admin and require an AIP-issued Bearer token from a DID that exists in the admins table. You can also manage all of this through the web dashboard.","source":"@site/docs/reference/admin-api.md","sourceDirName":"reference","slug":"/reference/admin-api","permalink":"/reference/admin-api","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"XRPC API","permalink":"/reference/xrpc-api"},"next":{"title":"Get a Record","permalink":"/reference/scripts/get-record"}}');var d=s(4848),r=s(8453);const l={},c="Admin API",t={},a=[{value:"Auth",id:"auth",level:2},{value:"Lexicons",id:"lexicons",level:2},{value:"Upload / upsert a lexicon",id:"upload--upsert-a-lexicon",level:3},{value:"List lexicons",id:"list-lexicons",level:3},{value:"Get a lexicon",id:"get-a-lexicon",level:3},{value:"Delete a lexicon",id:"delete-a-lexicon",level:3},{value:"Network Lexicons",id:"network-lexicons",level:2},{value:"Add a network lexicon",id:"add-a-network-lexicon",level:3},{value:"List network lexicons",id:"list-network-lexicons",level:3},{value:"Remove a network lexicon",id:"remove-a-network-lexicon",level:3},{value:"Stats",id:"stats",level:2},{value:"Record counts",id:"record-counts",level:3},{value:"Tap Stats",id:"tap-stats",level:2},{value:"Get Tap stats",id:"get-tap-stats",level:3},{value:"Backfill",id:"backfill",level:2},{value:"Create a backfill job",id:"create-a-backfill-job",level:3},{value:"List backfill jobs",id:"list-backfill-jobs",level:3},{value:"Event Logs",id:"event-logs",level:2},{value:"List event logs",id:"list-event-logs",level:3},{value:"API Keys",id:"api-keys",level:2},{value:"Create an API key",id:"create-an-api-key",level:3},{value:"List API keys",id:"list-api-keys",level:3},{value:"Revoke an API key",id:"revoke-an-api-key",level:3},{value:"Admin management",id:"admin-management",level:2},{value:"Add an admin",id:"add-an-admin",level:3},{value:"List admins",id:"list-admins",level:3},{value:"Remove an admin",id:"remove-an-admin",level:3}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.header,{children:(0,d.jsx)(n.h1,{id:"admin-api",children:"Admin API"})}),"\n",(0,d.jsxs)(n.p,{children:["The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under ",(0,d.jsx)(n.code,{children:"/admin"})," and require an ",(0,d.jsx)(n.a,{href:"https://github.com/graze-social/aip",children:"AIP"}),"-issued Bearer token from a DID that exists in the ",(0,d.jsx)(n.code,{children:"admins"})," table. You can also manage all of this through the ",(0,d.jsx)(n.a,{href:"/getting-started/dashboard",children:"web dashboard"}),"."]}),"\n",(0,d.jsx)(n.h2,{id:"auth",children:"Auth"}),"\n",(0,d.jsx)(n.p,{children:"The admin API supports two authentication methods:"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"OAuth (AIP)"})," \u2014 the Bearer token is validated against AIP's ",(0,d.jsx)(n.code,{children:"/oauth/userinfo"})," endpoint to retrieve the caller's DID."]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.strong,{children:"API keys"})," \u2014 read/write tokens starting with ",(0,d.jsx)(n.code,{children:"hv_"}),". See the ",(0,d.jsx)(n.a,{href:"/guides/api-keys",children:"API Keys guide"})," for details."]}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:["In both cases the resolved DID is checked against the ",(0,d.jsx)(n.code,{children:"admins"})," table."]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Auto-bootstrap"}),": If the ",(0,d.jsx)(n.code,{children:"admins"})," table is empty, the first authenticated request automatically inserts the caller as the initial admin."]}),"\n",(0,d.jsxs)(n.p,{children:["Non-admin DIDs receive a ",(0,d.jsx)(n.code,{children:"403 Forbidden"})," response."]}),"\n",(0,d.jsxs)(n.p,{children:["All error responses return JSON with an ",(0,d.jsx)(n.code,{children:"error"})," field:"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "error": "description of what went wrong"\n}\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Status"}),(0,d.jsx)(n.th,{children:"Meaning"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"400 Bad Request"})}),(0,d.jsx)(n.td,{children:"Invalid input (missing required fields, malformed lexicon JSON)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"401 Unauthorized"})}),(0,d.jsxs)(n.td,{children:["Missing or invalid Bearer token. See ",(0,d.jsx)(n.a,{href:"https://github.com/graze-social/aip",children:"AIP documentation"})," for token issues"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"403 Forbidden"})}),(0,d.jsx)(n.td,{children:"Authenticated DID is not in the admins table"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"404 Not Found"})}),(0,d.jsx)(n.td,{children:"Lexicon, admin, or backfill job not found"})]})]})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'# All examples assume $TOKEN is an AIP-issued access token or API key\nAUTH="Authorization: Bearer $TOKEN"\n'})}),"\n",(0,d.jsx)(n.h2,{id:"lexicons",children:"Lexicons"}),"\n",(0,d.jsx)(n.h3,{id:"upload--upsert-a-lexicon",children:"Upload / upsert a lexicon"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"POST /admin/lexicons\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/lexicons \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "lexicon_json": { "lexicon": 1, "id": "xyz.statusphere.status", "defs": { "main": { "type": "record", "key": "tid", "record": { "type": "object", "required": ["status", "createdAt"], "properties": { "status": { "type": "string", "maxGraphemes": 1 }, "createdAt": { "type": "string", "format": "datetime" } } } } } },\n "backfill": true,\n "target_collection": null\n }\'\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Field"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Required"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"lexicon_json"})}),(0,d.jsx)(n.td,{children:"object"}),(0,d.jsx)(n.td,{children:"yes"}),(0,d.jsxs)(n.td,{children:["Raw lexicon JSON (must have ",(0,d.jsx)(n.code,{children:"lexicon: 1"})," and ",(0,d.jsx)(n.code,{children:"id"}),")"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"backfill"})}),(0,d.jsx)(n.td,{children:"boolean"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:["Whether uploading triggers historical backfill (default ",(0,d.jsx)(n.code,{children:"true"}),")"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"target_collection"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"For query/procedure lexicons, the record collection they operate on"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"script"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"Lua script for query/procedure endpoints"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"index_hook"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:[(0,d.jsx)(n.a,{href:"/guides/index-hooks",children:"Index hook"})," Lua script for record lexicons"]})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"201 Created"})," (new) or ",(0,d.jsx)(n.code,{children:"200 OK"})," (upsert)"]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "id": "xyz.statusphere.status",\n "revision": 1\n}\n'})}),"\n",(0,d.jsx)(n.h3,{id:"list-lexicons",children:"List lexicons"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/lexicons\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/lexicons -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "xyz.statusphere.status",\n "revision": 1,\n "lexicon_type": "record",\n "backfill": true,\n "created_at": "2025-01-01T00:00:00Z",\n "updated_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,d.jsx)(n.h3,{id:"get-a-lexicon",children:"Get a lexicon"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/lexicons/{id}\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})," with full lexicon details including raw JSON."]}),"\n",(0,d.jsx)(n.h3,{id:"delete-a-lexicon",children:"Delete a lexicon"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"DELETE /admin/lexicons/{id}\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"204 No Content"})]}),"\n",(0,d.jsx)(n.h2,{id:"network-lexicons",children:"Network Lexicons"}),"\n",(0,d.jsxs)(n.p,{children:["Network lexicons are fetched from the AT Protocol network via DNS TXT resolution and kept updated via Tap. See ",(0,d.jsx)(n.a,{href:"/guides/lexicons#network-lexicons",children:"Lexicons - Network lexicons"})," for background."]}),"\n",(0,d.jsx)(n.h3,{id:"add-a-network-lexicon",children:"Add a network lexicon"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"POST /admin/network-lexicons\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/network-lexicons \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "nsid": "xyz.statusphere.status",\n "target_collection": null\n }\'\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Field"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Required"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"nsid"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"yes"}),(0,d.jsx)(n.td,{children:"The NSID of the lexicon to watch"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"target_collection"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"For query/procedure lexicons, the record collection they operate on"})]})]})]}),"\n",(0,d.jsx)(n.p,{children:"HappyView resolves the NSID authority via DNS TXT, fetches the lexicon from the authority's PDS, parses it, and stores it."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "nsid": "xyz.statusphere.status",\n "authority_did": "did:plc:authority",\n "revision": 1\n}\n'})}),"\n",(0,d.jsx)(n.h3,{id:"list-network-lexicons",children:"List network lexicons"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/network-lexicons\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/network-lexicons -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'[\n {\n "nsid": "xyz.statusphere.status",\n "authority_did": "did:plc:authority",\n "target_collection": null,\n "last_fetched_at": "2025-01-01T00:00:00Z",\n "created_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,d.jsx)(n.h3,{id:"remove-a-network-lexicon",children:"Remove a network lexicon"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"DELETE /admin/network-lexicons/{nsid}\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/network-lexicons/xyz.statusphere.status \\\n -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:["Removes the network lexicon tracking and also deletes the lexicon from the ",(0,d.jsx)(n.code,{children:"lexicons"})," table and in-memory registry."]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"204 No Content"})]}),"\n",(0,d.jsx)(n.h2,{id:"stats",children:"Stats"}),"\n",(0,d.jsx)(n.h3,{id:"record-counts",children:"Record counts"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/stats\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/stats -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "total_records": 12345,\n "collections": [{ "collection": "xyz.statusphere.status", "count": 500 }]\n}\n'})}),"\n",(0,d.jsx)(n.h2,{id:"tap-stats",children:"Tap Stats"}),"\n",(0,d.jsxs)(n.p,{children:["Aggregate stats from the ",(0,d.jsx)(n.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"Tap"})," instance. Useful for monitoring backfill progress. See ",(0,d.jsx)(n.a,{href:"/guides/backfill#job-lifecycle",children:"Backfill - Job lifecycle"})," for context."]}),"\n",(0,d.jsx)(n.h3,{id:"get-tap-stats",children:"Get Tap stats"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/tap/stats\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/tap/stats -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "repo_count": 5234,\n "record_count": 1048576,\n "outbox_buffer": 42\n}\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Field"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"repo_count"})}),(0,d.jsx)(n.td,{children:"number"}),(0,d.jsx)(n.td,{children:"Total repos Tap is tracking"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"record_count"})}),(0,d.jsx)(n.td,{children:"number"}),(0,d.jsx)(n.td,{children:"Total records Tap has indexed"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"outbox_buffer"})}),(0,d.jsx)(n.td,{children:"number"}),(0,d.jsx)(n.td,{children:"Pending events awaiting delivery (high = Tap is busy)"})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:["Returns ",(0,d.jsx)(n.code,{children:"502 Bad Gateway"})," if Tap is unreachable."]}),"\n",(0,d.jsx)(n.h2,{id:"backfill",children:"Backfill"}),"\n",(0,d.jsx)(n.h3,{id:"create-a-backfill-job",children:"Create a backfill job"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"POST /admin/backfill\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/backfill \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{ "collection": "xyz.statusphere.status" }\'\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Field"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Required"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"collection"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"Limit to a single collection (backfills all if omitted)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"did"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"Limit to a single DID (discovers all via relay if omitted)"})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "status": "pending"\n}\n'})}),"\n",(0,d.jsx)(n.h3,{id:"list-backfill-jobs",children:"List backfill jobs"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/backfill/status\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/backfill/status -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "collection": "xyz.statusphere.status",\n "did": null,\n "status": "completed",\n "total_repos": 42,\n "processed_repos": 42,\n "total_records": 1000,\n "error": null,\n "started_at": "2025-01-01T00:01:00Z",\n "completed_at": "2025-01-01T00:05:00Z",\n "created_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,d.jsx)(n.h2,{id:"event-logs",children:"Event Logs"}),"\n",(0,d.jsxs)(n.p,{children:["HappyView records an audit trail of system events: lexicon changes, record operations, Lua script executions and errors, admin actions, backfill jobs, and Tap connectivity. See the ",(0,d.jsx)(n.a,{href:"/guides/event-logs",children:"Event Logs guide"})," for details on event types and retention."]}),"\n",(0,d.jsx)(n.h3,{id:"list-event-logs",children:"List event logs"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/events\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl "http://localhost:3000/admin/events?severity=error&limit=10" -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Required"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"event_type"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:["Filter by exact event type (e.g. ",(0,d.jsx)(n.code,{children:"script.error"}),")"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"category"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:["Filter by category prefix (e.g. ",(0,d.jsx)(n.code,{children:"lexicon"})," matches all lexicon events)"]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"severity"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:["Filter by severity: ",(0,d.jsx)(n.code,{children:"info"}),", ",(0,d.jsx)(n.code,{children:"warn"}),", or ",(0,d.jsx)(n.code,{children:"error"})]})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"subject"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"Filter by subject (lexicon ID, record URI, admin DID, etc.)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"cursor"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsx)(n.td,{children:"Pagination cursor (ISO 8601 timestamp from previous response)"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"limit"})}),(0,d.jsx)(n.td,{children:"number"}),(0,d.jsx)(n.td,{children:"no"}),(0,d.jsxs)(n.td,{children:["Results per page (default ",(0,d.jsx)(n.code,{children:"50"}),", max ",(0,d.jsx)(n.code,{children:"100"}),")"]})]})]})]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "events": [\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "event_type": "script.error",\n "severity": "error",\n "actor_did": "did:plc:abc123",\n "subject": "com.example.feed.like",\n "detail": {\n "error": "attempt to index nil value",\n "script_source": "function handle() ... end",\n "input": { "status": "hello" },\n "caller_did": "did:plc:abc123",\n "method": "com.example.feed.like"\n },\n "created_at": "2026-03-01T12:00:00Z"\n }\n ],\n "cursor": "2026-03-01T11:59:00Z"\n}\n'})}),"\n",(0,d.jsxs)(n.p,{children:["Events are returned in reverse chronological order (newest first). Pass the ",(0,d.jsx)(n.code,{children:"cursor"})," value from the response to fetch the next page."]}),"\n",(0,d.jsx)(n.h2,{id:"api-keys",children:"API Keys"}),"\n",(0,d.jsxs)(n.p,{children:["Manage API keys for programmatic access. See the ",(0,d.jsx)(n.a,{href:"/guides/api-keys",children:"API Keys guide"})," for usage details."]}),"\n",(0,d.jsx)(n.h3,{id:"create-an-api-key",children:"Create an API key"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"POST /admin/api-keys\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/api-keys \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{ "name": "CI Deploy" }\'\n'})}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Field"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Required"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:(0,d.jsx)(n.code,{children:"name"})}),(0,d.jsx)(n.td,{children:"string"}),(0,d.jsx)(n.td,{children:"yes"}),(0,d.jsx)(n.td,{children:"A label to identify this key's usage"})]})})]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "name": "CI Deploy",\n "key": "hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",\n "key_prefix": "hv_a1b2c3d4"\n}\n'})}),"\n",(0,d.jsxs)(n.p,{children:["The ",(0,d.jsx)(n.code,{children:"key"})," field contains the full API key. It is only returned in this response \u2014 store it securely."]}),"\n",(0,d.jsx)(n.h3,{id:"list-api-keys",children:"List API keys"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/api-keys\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/api-keys -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "name": "CI Deploy",\n "key_prefix": "hv_a1b2c3d4",\n "created_at": "2026-03-01T00:00:00Z",\n "last_used_at": "2026-03-06T12:00:00Z",\n "revoked_at": null\n }\n]\n'})}),"\n",(0,d.jsx)(n.p,{children:"Only returns keys belonging to the authenticated admin. The full key is never included \u2014 only the prefix."}),"\n",(0,d.jsx)(n.h3,{id:"revoke-an-api-key",children:"Revoke an API key"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"DELETE /admin/api-keys/{id}\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/api-keys/550e8400-e29b-41d4-a716-446655440000 \\\n -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:["Sets ",(0,d.jsx)(n.code,{children:"revoked_at"})," on the key. The key remains in the database for audit purposes but can no longer authenticate."]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"204 No Content"})]}),"\n",(0,d.jsx)(n.h2,{id:"admin-management",children:"Admin management"}),"\n",(0,d.jsx)(n.h3,{id:"add-an-admin",children:"Add an admin"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"POST /admin/admins\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/admins \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{ "did": "did:plc:newadmin" }\'\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'{\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "did": "did:plc:newadmin"\n}\n'})}),"\n",(0,d.jsx)(n.h3,{id:"list-admins",children:"List admins"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"GET /admin/admins\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/admins -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "did": "did:plc:admin",\n "created_at": "2025-01-01T00:00:00Z",\n "last_used_at": "2025-01-02T12:00:00Z"\n }\n]\n'})}),"\n",(0,d.jsx)(n.h3,{id:"remove-an-admin",children:"Remove an admin"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:"DELETE /admin/admins/{id}\n"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/admins/550e8400-e29b-41d4-a716-446655440000 \\\n -H "$AUTH"\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Response"}),": ",(0,d.jsx)(n.code,{children:"204 No Content"})]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(o,{...e})}):o(e)}},8453(e,n,s){s.d(n,{R:()=>l,x:()=>c});var i=s(6540);const d={},r=i.createContext(d);function l(e){const n=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ec125a10.b1db9ed3.js b/assets/js/ec125a10.b1db9ed3.js deleted file mode 100644 index 762d57a..0000000 --- a/assets/js/ec125a10.b1db9ed3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[9659],{2192(e,n,s){s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>d,toc:()=>a});const d=JSON.parse('{"id":"reference/admin-api","title":"Admin API","description":"The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under /admin and require an AIP-issued Bearer token from a DID that exists in the admins table. You can also manage all of this through the web dashboard.","source":"@site/docs/reference/admin-api.md","sourceDirName":"reference","slug":"/reference/admin-api","permalink":"/reference/admin-api","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"docs","previous":{"title":"XRPC API","permalink":"/reference/xrpc-api"},"next":{"title":"Get a Record","permalink":"/reference/scripts/get-record"}}');var i=s(4848),r=s(8453);const l={},c="Admin API",t={},a=[{value:"Auth",id:"auth",level:2},{value:"Lexicons",id:"lexicons",level:2},{value:"Upload / upsert a lexicon",id:"upload--upsert-a-lexicon",level:3},{value:"List lexicons",id:"list-lexicons",level:3},{value:"Get a lexicon",id:"get-a-lexicon",level:3},{value:"Delete a lexicon",id:"delete-a-lexicon",level:3},{value:"Network Lexicons",id:"network-lexicons",level:2},{value:"Add a network lexicon",id:"add-a-network-lexicon",level:3},{value:"List network lexicons",id:"list-network-lexicons",level:3},{value:"Remove a network lexicon",id:"remove-a-network-lexicon",level:3},{value:"Stats",id:"stats",level:2},{value:"Record counts",id:"record-counts",level:3},{value:"Tap Stats",id:"tap-stats",level:2},{value:"Get Tap stats",id:"get-tap-stats",level:3},{value:"Backfill",id:"backfill",level:2},{value:"Create a backfill job",id:"create-a-backfill-job",level:3},{value:"List backfill jobs",id:"list-backfill-jobs",level:3},{value:"Event Logs",id:"event-logs",level:2},{value:"List event logs",id:"list-event-logs",level:3},{value:"Admin management",id:"admin-management",level:2},{value:"Add an admin",id:"add-an-admin",level:3},{value:"List admins",id:"list-admins",level:3},{value:"Remove an admin",id:"remove-an-admin",level:3}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"admin-api",children:"Admin API"})}),"\n",(0,i.jsxs)(n.p,{children:["The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under ",(0,i.jsx)(n.code,{children:"/admin"})," and require an ",(0,i.jsx)(n.a,{href:"https://github.com/graze-social/aip",children:"AIP"}),"-issued Bearer token from a DID that exists in the ",(0,i.jsx)(n.code,{children:"admins"})," table. You can also manage all of this through the ",(0,i.jsx)(n.a,{href:"/getting-started/dashboard",children:"web dashboard"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"auth",children:"Auth"}),"\n",(0,i.jsxs)(n.p,{children:["Admin auth works the same as user auth: the Bearer token is validated against AIP's ",(0,i.jsx)(n.code,{children:"/oauth/userinfo"})," endpoint to retrieve the caller's DID. That DID is then checked against the ",(0,i.jsx)(n.code,{children:"admins"})," table."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Auto-bootstrap"}),": If the ",(0,i.jsx)(n.code,{children:"admins"})," table is empty, the first authenticated request automatically inserts the caller as the initial admin."]}),"\n",(0,i.jsxs)(n.p,{children:["Non-admin DIDs receive a ",(0,i.jsx)(n.code,{children:"403 Forbidden"})," response."]}),"\n",(0,i.jsxs)(n.p,{children:["All error responses return JSON with an ",(0,i.jsx)(n.code,{children:"error"})," field:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "error": "description of what went wrong"\n}\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Status"}),(0,i.jsx)(n.th,{children:"Meaning"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"400 Bad Request"})}),(0,i.jsx)(n.td,{children:"Invalid input (missing required fields, malformed lexicon JSON)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"401 Unauthorized"})}),(0,i.jsxs)(n.td,{children:["Missing or invalid Bearer token. See ",(0,i.jsx)(n.a,{href:"https://github.com/graze-social/aip",children:"AIP documentation"})," for token issues"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"403 Forbidden"})}),(0,i.jsx)(n.td,{children:"Authenticated DID is not in the admins table"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"404 Not Found"})}),(0,i.jsx)(n.td,{children:"Lexicon, admin, or backfill job not found"})]})]})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'# All examples assume $TOKEN is an AIP-issued access token for an admin DID\nAUTH="Authorization: Bearer $TOKEN"\n'})}),"\n",(0,i.jsx)(n.h2,{id:"lexicons",children:"Lexicons"}),"\n",(0,i.jsx)(n.h3,{id:"upload--upsert-a-lexicon",children:"Upload / upsert a lexicon"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"POST /admin/lexicons\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/lexicons \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "lexicon_json": { "lexicon": 1, "id": "xyz.statusphere.status", "defs": { "main": { "type": "record", "key": "tid", "record": { "type": "object", "required": ["status", "createdAt"], "properties": { "status": { "type": "string", "maxGraphemes": 1 }, "createdAt": { "type": "string", "format": "datetime" } } } } } },\n "backfill": true,\n "target_collection": null\n }\'\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Field"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Required"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"lexicon_json"})}),(0,i.jsx)(n.td,{children:"object"}),(0,i.jsx)(n.td,{children:"yes"}),(0,i.jsxs)(n.td,{children:["Raw lexicon JSON (must have ",(0,i.jsx)(n.code,{children:"lexicon: 1"})," and ",(0,i.jsx)(n.code,{children:"id"}),")"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"backfill"})}),(0,i.jsx)(n.td,{children:"boolean"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:["Whether uploading triggers historical backfill (default ",(0,i.jsx)(n.code,{children:"true"}),")"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"target_collection"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"For query/procedure lexicons, the record collection they operate on"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"script"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"Lua script for query/procedure endpoints"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"index_hook"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.a,{href:"/guides/index-hooks",children:"Index hook"})," Lua script for record lexicons"]})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"201 Created"})," (new) or ",(0,i.jsx)(n.code,{children:"200 OK"})," (upsert)"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "id": "xyz.statusphere.status",\n "revision": 1\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"list-lexicons",children:"List lexicons"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/lexicons\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/lexicons -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "xyz.statusphere.status",\n "revision": 1,\n "lexicon_type": "record",\n "backfill": true,\n "created_at": "2025-01-01T00:00:00Z",\n "updated_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,i.jsx)(n.h3,{id:"get-a-lexicon",children:"Get a lexicon"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/lexicons/{id}\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})," with full lexicon details including raw JSON."]}),"\n",(0,i.jsx)(n.h3,{id:"delete-a-lexicon",children:"Delete a lexicon"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"DELETE /admin/lexicons/{id}\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"204 No Content"})]}),"\n",(0,i.jsx)(n.h2,{id:"network-lexicons",children:"Network Lexicons"}),"\n",(0,i.jsxs)(n.p,{children:["Network lexicons are fetched from the AT Protocol network via DNS TXT resolution and kept updated via Tap. See ",(0,i.jsx)(n.a,{href:"/guides/lexicons#network-lexicons",children:"Lexicons - Network lexicons"})," for background."]}),"\n",(0,i.jsx)(n.h3,{id:"add-a-network-lexicon",children:"Add a network lexicon"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"POST /admin/network-lexicons\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/network-lexicons \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{\n "nsid": "xyz.statusphere.status",\n "target_collection": null\n }\'\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Field"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Required"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"nsid"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"yes"}),(0,i.jsx)(n.td,{children:"The NSID of the lexicon to watch"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"target_collection"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"For query/procedure lexicons, the record collection they operate on"})]})]})]}),"\n",(0,i.jsx)(n.p,{children:"HappyView resolves the NSID authority via DNS TXT, fetches the lexicon from the authority's PDS, parses it, and stores it."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "nsid": "xyz.statusphere.status",\n "authority_did": "did:plc:authority",\n "revision": 1\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"list-network-lexicons",children:"List network lexicons"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/network-lexicons\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/network-lexicons -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'[\n {\n "nsid": "xyz.statusphere.status",\n "authority_did": "did:plc:authority",\n "target_collection": null,\n "last_fetched_at": "2025-01-01T00:00:00Z",\n "created_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,i.jsx)(n.h3,{id:"remove-a-network-lexicon",children:"Remove a network lexicon"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"DELETE /admin/network-lexicons/{nsid}\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/network-lexicons/xyz.statusphere.status \\\n -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:["Removes the network lexicon tracking and also deletes the lexicon from the ",(0,i.jsx)(n.code,{children:"lexicons"})," table and in-memory registry."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"204 No Content"})]}),"\n",(0,i.jsx)(n.h2,{id:"stats",children:"Stats"}),"\n",(0,i.jsx)(n.h3,{id:"record-counts",children:"Record counts"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/stats\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/stats -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "total_records": 12345,\n "collections": [{ "collection": "xyz.statusphere.status", "count": 500 }]\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"tap-stats",children:"Tap Stats"}),"\n",(0,i.jsxs)(n.p,{children:["Aggregate stats from the ",(0,i.jsx)(n.a,{href:"https://github.com/bluesky-social/indigo/tree/main/cmd/tap",children:"Tap"})," instance. Useful for monitoring backfill progress. See ",(0,i.jsx)(n.a,{href:"/guides/backfill#job-lifecycle",children:"Backfill - Job lifecycle"})," for context."]}),"\n",(0,i.jsx)(n.h3,{id:"get-tap-stats",children:"Get Tap stats"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/tap/stats\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/tap/stats -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "repo_count": 5234,\n "record_count": 1048576,\n "outbox_buffer": 42\n}\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Field"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"repo_count"})}),(0,i.jsx)(n.td,{children:"number"}),(0,i.jsx)(n.td,{children:"Total repos Tap is tracking"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"record_count"})}),(0,i.jsx)(n.td,{children:"number"}),(0,i.jsx)(n.td,{children:"Total records Tap has indexed"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"outbox_buffer"})}),(0,i.jsx)(n.td,{children:"number"}),(0,i.jsx)(n.td,{children:"Pending events awaiting delivery (high = Tap is busy)"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["Returns ",(0,i.jsx)(n.code,{children:"502 Bad Gateway"})," if Tap is unreachable."]}),"\n",(0,i.jsx)(n.h2,{id:"backfill",children:"Backfill"}),"\n",(0,i.jsx)(n.h3,{id:"create-a-backfill-job",children:"Create a backfill job"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"POST /admin/backfill\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/backfill \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{ "collection": "xyz.statusphere.status" }\'\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Field"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Required"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"collection"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"Limit to a single collection (backfills all if omitted)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"did"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"Limit to a single DID (discovers all via relay if omitted)"})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "status": "pending"\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"list-backfill-jobs",children:"List backfill jobs"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/backfill/status\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/backfill/status -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "collection": "xyz.statusphere.status",\n "did": null,\n "status": "completed",\n "total_repos": 42,\n "processed_repos": 42,\n "total_records": 1000,\n "error": null,\n "started_at": "2025-01-01T00:01:00Z",\n "completed_at": "2025-01-01T00:05:00Z",\n "created_at": "2025-01-01T00:00:00Z"\n }\n]\n'})}),"\n",(0,i.jsx)(n.h2,{id:"event-logs",children:"Event Logs"}),"\n",(0,i.jsxs)(n.p,{children:["HappyView records an audit trail of system events: lexicon changes, record operations, Lua script executions and errors, admin actions, backfill jobs, and Tap connectivity. See the ",(0,i.jsx)(n.a,{href:"/guides/event-logs",children:"Event Logs guide"})," for details on event types and retention."]}),"\n",(0,i.jsx)(n.h3,{id:"list-event-logs",children:"List event logs"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/events\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl "http://localhost:3000/admin/events?severity=error&limit=10" -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Required"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"event_type"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:["Filter by exact event type (e.g. ",(0,i.jsx)(n.code,{children:"script.error"}),")"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"category"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:["Filter by category prefix (e.g. ",(0,i.jsx)(n.code,{children:"lexicon"})," matches all lexicon events)"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"severity"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:["Filter by severity: ",(0,i.jsx)(n.code,{children:"info"}),", ",(0,i.jsx)(n.code,{children:"warn"}),", or ",(0,i.jsx)(n.code,{children:"error"})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"subject"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"Filter by subject (lexicon ID, record URI, admin DID, etc.)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"cursor"})}),(0,i.jsx)(n.td,{children:"string"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsx)(n.td,{children:"Pagination cursor (ISO 8601 timestamp from previous response)"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"limit"})}),(0,i.jsx)(n.td,{children:"number"}),(0,i.jsx)(n.td,{children:"no"}),(0,i.jsxs)(n.td,{children:["Results per page (default ",(0,i.jsx)(n.code,{children:"50"}),", max ",(0,i.jsx)(n.code,{children:"100"}),")"]})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "events": [\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "event_type": "script.error",\n "severity": "error",\n "actor_did": "did:plc:abc123",\n "subject": "com.example.feed.like",\n "detail": {\n "error": "attempt to index nil value",\n "script_source": "function handle() ... end",\n "input": { "status": "hello" },\n "caller_did": "did:plc:abc123",\n "method": "com.example.feed.like"\n },\n "created_at": "2026-03-01T12:00:00Z"\n }\n ],\n "cursor": "2026-03-01T11:59:00Z"\n}\n'})}),"\n",(0,i.jsxs)(n.p,{children:["Events are returned in reverse chronological order (newest first). Pass the ",(0,i.jsx)(n.code,{children:"cursor"})," value from the response to fetch the next page."]}),"\n",(0,i.jsx)(n.h2,{id:"admin-management",children:"Admin management"}),"\n",(0,i.jsx)(n.h3,{id:"add-an-admin",children:"Add an admin"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"POST /admin/admins\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X POST http://localhost:3000/admin/admins \\\n -H "$AUTH" \\\n -H "Content-Type: application/json" \\\n -d \'{ "did": "did:plc:newadmin" }\'\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"201 Created"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "did": "did:plc:newadmin"\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"list-admins",children:"List admins"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"GET /admin/admins\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl http://localhost:3000/admin/admins -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"200 OK"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'[\n {\n "id": "550e8400-e29b-41d4-a716-446655440000",\n "did": "did:plc:admin",\n "created_at": "2025-01-01T00:00:00Z",\n "last_used_at": "2025-01-02T12:00:00Z"\n }\n]\n'})}),"\n",(0,i.jsx)(n.h3,{id:"remove-an-admin",children:"Remove an admin"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"DELETE /admin/admins/{id}\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'curl -X DELETE http://localhost:3000/admin/admins/550e8400-e29b-41d4-a716-446655440000 \\\n -H "$AUTH"\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Response"}),": ",(0,i.jsx)(n.code,{children:"204 No Content"})]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},8453(e,n,s){s.d(n,{R:()=>l,x:()=>c});var d=s(6540);const i={},r=d.createContext(i);function l(e){const n=d.useContext(r);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),d.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.6a50479b.js b/assets/js/main.6a50479b.js new file mode 100644 index 0000000..c351fc3 --- /dev/null +++ b/assets/js/main.6a50479b.js @@ -0,0 +1,2 @@ +/*! For license information please see main.6a50479b.js.LICENSE.txt */ +(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[8792],{8328(e,t,n){"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"009f1e98":[function(){return n.e(7715).then(n.bind(n,3511))},"@site/docs/getting-started/configuration.md",3511],"111eee19":[function(){return n.e(8779).then(n.bind(n,9071))},"@site/docs/reference/troubleshooting.md",9071],"121e86a6":[function(){return n.e(5011).then(n.bind(n,7544))},"@site/docs/reference/scripts/get-record.md",7544],17896441:[function(){return Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,1527))},"@theme/DocItem",1527],"22dd74f7":[function(){return n.e(1567).then(n.t.bind(n,5226,19))},"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",5226],"23374ca6":[function(){return n.e(2278).then(n.bind(n,7403))},"@site/docs/README.md",7403],"280f48ec":[function(){return n.e(787).then(n.bind(n,4796))},"@site/docs/reference/scripts/sidecar-records.md",4796],"2d1b556d":[function(){return n.e(1952).then(n.bind(n,8385))},"@site/docs/reference/scripts/algolia-sync.md",8385],"2df7fd65":[function(){return n.e(1977).then(n.bind(n,853))},"@site/docs/guides/event-logs.md",853],"33ec3d65":[function(){return n.e(6803).then(n.bind(n,6974))},"@site/docs/reference/architecture.md",6974],"3d80a749":[function(){return n.e(5219).then(n.bind(n,6755))},"@site/docs/reference/changelog.md",6755],"43880f7a":[function(){return n.e(6590).then(n.bind(n,1572))},"@site/docs/reference/scripts/create-record.md",1572],"539fb2af":[function(){return n.e(5563).then(n.bind(n,8289))},"@site/docs/getting-started/dashboard.md",8289],"5d3a5990":[function(){return n.e(3197).then(n.bind(n,7825))},"@site/docs/reference/scripts/expanded-query.md",7825],"5e95c892":[function(){return n.e(9647).then(n.bind(n,7121))},"@theme/DocsRoot",7121],"5fd2dbdb":[function(){return n.e(4440).then(n.bind(n,6395))},"@site/docs/tutorials/statusphere.md",6395],"6acefe75":[function(){return n.e(6495).then(n.bind(n,1438))},"@site/docs/reference/scripts/update-or-delete.md",1438],"774696b9":[function(){return n.e(8865).then(n.bind(n,8158))},"@site/docs/guides/index-hooks.md",8158],"846656e5":[function(){return n.e(9492).then(n.bind(n,5231))},"@site/docs/reference/glossary.md",5231],"89877b86":[function(){return n.e(7520).then(n.bind(n,2749))},"@site/docs/getting-started/deployment/docker.md",2749],"919abb94":[function(){return n.e(20).then(n.bind(n,521))},"@site/docs/reference/scripts/upsert-record.md",521],"920ba7ef":[function(){return n.e(5953).then(n.bind(n,1189))},"@site/docs/guides/scripting.md",1189],"9985d6d5":[function(){return n.e(203).then(n.bind(n,2223))},"@site/docs/getting-started/deployment/railway.md",2223],a4086a70:[function(){return n.e(7194).then(n.bind(n,9297))},"@site/docs/reference/scripts/batch-save.md",9297],a51dfc20:[function(){return n.e(8897).then(n.bind(n,4783))},"@site/docs/reference/xrpc-api.md",4783],a77ba7fa:[function(){return n.e(6087).then(n.bind(n,6494))},"@site/docs/getting-started/authentication.md",6494],a7bd4aaa:[function(){return n.e(7098).then(n.bind(n,1723))},"@theme/DocVersionRoot",1723],a94703ab:[function(){return Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,8115))},"@theme/DocRoot",8115],aba21aa0:[function(){return n.e(5742).then(n.t.bind(n,7093,19))},"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],b27c7406:[function(){return n.e(2618).then(n.bind(n,537))},"@site/docs/getting-started/deployment/other.md",537],bccc5e9b:[function(){return n.e(2431).then(n.bind(n,9641))},"@site/docs/guides/backfill.md",9641],bde15bec:[function(){return n.e(6438).then(n.bind(n,8796))},"@site/docs/reference/scripts/complex-mutations.md",8796],c985d368:[function(){return n.e(2007).then(n.bind(n,4436))},"@site/docs/reference/scripts/cascading-delete.md",4436],d26b9010:[function(){return n.e(9301).then(n.bind(n,1952))},"@site/docs/guides/api-keys.md",1952],d2e94323:[function(){return n.e(3993).then(n.bind(n,7791))},"@site/docs/guides/lexicons.md",7791],e7f37855:[function(){return n.e(9097).then(n.bind(n,2371))},"@site/docs/reference/scripts/meilisearch-sync.md",2371],e8644baa:[function(){return n.e(9178).then(n.bind(n,8525))},"@site/docs/reference/scripts/paginated-list.md",8525],ec125a10:[function(){return n.e(9659).then(n.bind(n,2192))},"@site/docs/reference/admin-api.md",2192],f142c65c:[function(){return n.e(9957).then(n.bind(n,9573))},"@site/docs/reference/scripts/list-or-fetch.md",9573],fac68122:[function(){return n.e(5986).then(n.bind(n,4924))},"@site/docs/reference/production-deployment.md",4924],fbd7a87c:[function(){return n.e(1361).then(n.bind(n,8594))},"@site/docs/getting-started/quickstart.md",8594]};var l=n(4848);function s(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:function(){return n.e(2237).then(n.bind(n,2237))},modules:["@theme/NotFound"],webpack:function(){return[2237]},render:function(e,t){var n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,Object.assign({},t))})}});var r=o[e+"-"+t],d={},f=[],p=[],m=(0,u.A)(r);return Object.entries(m).forEach(function(e){var t=e[0],n=e[1],r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))}),a().Map({loading:s,loader:d,modules:f,webpack:function(){return p},render:function(t,n){var a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(function(t){var n=t[0],r=t[1],o=r.default;if(!o)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter(function(e){return"default"!==e}).forEach(function(e){o[e]=r[e]});var i=a,l=n.split(".");l.slice(0,-1).forEach(function(e){i=i[e]}),i[l[l.length-1]]=o});var o=a.__comp;delete a.__comp;var i=a.__context;delete a.__context;var s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,Object.assign({},a,s,n))})}})}const f=[{path:"/",component:d("/","b55"),routes:[{path:"/",component:d("/","ef3"),routes:[{path:"/",component:d("/","56a"),routes:[{path:"/getting-started/authentication",component:d("/getting-started/authentication","fd3"),exact:!0,sidebar:"docs"},{path:"/getting-started/configuration",component:d("/getting-started/configuration","641"),exact:!0,sidebar:"docs"},{path:"/getting-started/dashboard",component:d("/getting-started/dashboard","889"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/docker",component:d("/getting-started/deployment/docker","d4f"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/other",component:d("/getting-started/deployment/other","a50"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/railway",component:d("/getting-started/deployment/railway","d15"),exact:!0,sidebar:"docs"},{path:"/getting-started/quickstart",component:d("/getting-started/quickstart","c60"),exact:!0,sidebar:"docs"},{path:"/guides/api-keys",component:d("/guides/api-keys","d38"),exact:!0},{path:"/guides/backfill",component:d("/guides/backfill","8e9"),exact:!0,sidebar:"docs"},{path:"/guides/event-logs",component:d("/guides/event-logs","a81"),exact:!0,sidebar:"docs"},{path:"/guides/index-hooks",component:d("/guides/index-hooks","755"),exact:!0,sidebar:"docs"},{path:"/guides/lexicons",component:d("/guides/lexicons","f9a"),exact:!0,sidebar:"docs"},{path:"/guides/scripting",component:d("/guides/scripting","259"),exact:!0,sidebar:"docs"},{path:"/reference/admin-api",component:d("/reference/admin-api","cec"),exact:!0,sidebar:"docs"},{path:"/reference/architecture",component:d("/reference/architecture","5c9"),exact:!0,sidebar:"docs"},{path:"/reference/changelog",component:d("/reference/changelog","03b"),exact:!0},{path:"/reference/glossary",component:d("/reference/glossary","aa6"),exact:!0,sidebar:"docs"},{path:"/reference/production-deployment",component:d("/reference/production-deployment","935"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/algolia-sync",component:d("/reference/scripts/algolia-sync","ae9"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/batch-save",component:d("/reference/scripts/batch-save","e3f"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/cascading-delete",component:d("/reference/scripts/cascading-delete","2dc"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/complex-mutations",component:d("/reference/scripts/complex-mutations","a45"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/create-record",component:d("/reference/scripts/create-record","d2f"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/expanded-query",component:d("/reference/scripts/expanded-query","7c6"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/get-record",component:d("/reference/scripts/get-record","5c8"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/list-or-fetch",component:d("/reference/scripts/list-or-fetch","62b"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/meilisearch-sync",component:d("/reference/scripts/meilisearch-sync","c95"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/paginated-list",component:d("/reference/scripts/paginated-list","917"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/sidecar-records",component:d("/reference/scripts/sidecar-records","b55"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/update-or-delete",component:d("/reference/scripts/update-or-delete","d03"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/upsert-record",component:d("/reference/scripts/upsert-record","279"),exact:!0,sidebar:"docs"},{path:"/reference/troubleshooting",component:d("/reference/troubleshooting","af4"),exact:!0,sidebar:"docs"},{path:"/reference/xrpc-api",component:d("/reference/xrpc-api","a2e"),exact:!0,sidebar:"docs"},{path:"/tutorials/statusphere",component:d("/tutorials/statusphere","187"),exact:!0,sidebar:"docs"},{path:"/",component:d("/","280"),exact:!0,sidebar:"docs"}]}]}]},{path:"*",component:d("*")}]},6125(e,t,n){"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848),o=r.createContext(!1);function i(e){var t=e.children,n=(0,r.useState)(!1),i=n[0],l=n[1];return(0,r.useEffect)(function(){l(!0)},[]),(0,a.jsx)(o.Provider,{value:i,children:t})}},8600(e,t,n){"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const u=[n(119),n(6134),n(6294)];var c=n(8328),d=n(6347),f=n(2831),p=n(4848);function m(e){var t=e.children;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(4563),h=function(e){return e.defaultFormatter(e)};function y(e){var t=e.children;return(0,p.jsx)(g.AL,{formatter:h,children:t})}function b(e){var t=e.children;return(0,p.jsx)(y,{children:t})}var v=n(5260),w=n(4586),k=n(6025),x=n(6342),S=n(5500),E=n(2131),_=n(4090),A=n(440),C=n(1463);function T(){var e=(0,w.A)().i18n,t=e.currentLocale,n=e.defaultLocale,r=e.localeConfigs,a=(0,E.o)(),o=r[t].htmlLang,i=function(e){return e.replace("-","_")};return(0,p.jsxs)(v.A,{children:[Object.entries(r).map(function(e){var t=e[0],n=e[1].htmlLang;return(0,p.jsx)("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)}),(0,p.jsx)("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:i(o)}),Object.values(r).filter(function(e){return o!==e.htmlLang}).map(function(e){return(0,p.jsx)("meta",{property:"og:locale:alternate",content:i(e.htmlLang)},"meta-og-"+e.htmlLang)})]})}function j(e){var t=e.permalink,n=(0,w.A)().siteConfig.url,r=function(){var e=(0,w.A)().siteConfig,t=e.url,n=e.baseUrl,r=e.trailingSlash,a=(0,d.zy)().pathname;return t+(0,A.Ks)((0,k.Ay)(a),{trailingSlash:r,baseUrl:n})}(),a=t?""+n+t:r;return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function O(){var e=(0,w.A)().i18n.currentLocale,t=(0,x.p)(),n=t.metadata,r=t.image;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:_.w})]}),r&&(0,p.jsx)(S.be,{image:r}),(0,p.jsx)(j,{}),(0,p.jsx)(T,{}),(0,p.jsx)(C.A,{tag:"default",locale:e}),(0,p.jsx)(v.A,{children:n.map(function(e,t){return(0,p.jsx)("meta",Object.assign({},e),t)})})]})}var P=new Map;var N=n(6125),L=n(6988),R=n(7387),I=n(205);function F(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/d,l:()=>f});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"README","docs":[{"id":"getting-started/authentication","path":"/getting-started/authentication","sidebar":"docs"},{"id":"getting-started/configuration","path":"/getting-started/configuration","sidebar":"docs"},{"id":"getting-started/dashboard","path":"/getting-started/dashboard","sidebar":"docs"},{"id":"getting-started/deployment/docker","path":"/getting-started/deployment/docker","sidebar":"docs"},{"id":"getting-started/deployment/other","path":"/getting-started/deployment/other","sidebar":"docs"},{"id":"getting-started/deployment/railway","path":"/getting-started/deployment/railway","sidebar":"docs"},{"id":"getting-started/quickstart","path":"/getting-started/quickstart","sidebar":"docs"},{"id":"guides/api-keys","path":"/guides/api-keys"},{"id":"guides/backfill","path":"/guides/backfill","sidebar":"docs"},{"id":"guides/event-logs","path":"/guides/event-logs","sidebar":"docs"},{"id":"guides/index-hooks","path":"/guides/index-hooks","sidebar":"docs"},{"id":"guides/lexicons","path":"/guides/lexicons","sidebar":"docs"},{"id":"guides/scripting","path":"/guides/scripting","sidebar":"docs"},{"id":"README","path":"/","sidebar":"docs"},{"id":"reference/admin-api","path":"/reference/admin-api","sidebar":"docs"},{"id":"reference/architecture","path":"/reference/architecture","sidebar":"docs"},{"id":"reference/changelog","path":"/reference/changelog"},{"id":"reference/glossary","path":"/reference/glossary","sidebar":"docs"},{"id":"reference/production-deployment","path":"/reference/production-deployment","sidebar":"docs"},{"id":"reference/scripts/algolia-sync","path":"/reference/scripts/algolia-sync","sidebar":"docs"},{"id":"reference/scripts/batch-save","path":"/reference/scripts/batch-save","sidebar":"docs"},{"id":"reference/scripts/cascading-delete","path":"/reference/scripts/cascading-delete","sidebar":"docs"},{"id":"reference/scripts/complex-mutations","path":"/reference/scripts/complex-mutations","sidebar":"docs"},{"id":"reference/scripts/create-record","path":"/reference/scripts/create-record","sidebar":"docs"},{"id":"reference/scripts/expanded-query","path":"/reference/scripts/expanded-query","sidebar":"docs"},{"id":"reference/scripts/get-record","path":"/reference/scripts/get-record","sidebar":"docs"},{"id":"reference/scripts/list-or-fetch","path":"/reference/scripts/list-or-fetch","sidebar":"docs"},{"id":"reference/scripts/meilisearch-sync","path":"/reference/scripts/meilisearch-sync","sidebar":"docs"},{"id":"reference/scripts/paginated-list","path":"/reference/scripts/paginated-list","sidebar":"docs"},{"id":"reference/scripts/sidecar-records","path":"/reference/scripts/sidecar-records","sidebar":"docs"},{"id":"reference/scripts/update-or-delete","path":"/reference/scripts/update-or-delete","sidebar":"docs"},{"id":"reference/scripts/upsert-record","path":"/reference/scripts/upsert-record","sidebar":"docs"},{"id":"reference/troubleshooting","path":"/reference/troubleshooting","sidebar":"docs"},{"id":"reference/xrpc-api","path":"/reference/xrpc-api","sidebar":"docs"},{"id":"tutorials/statusphere","path":"/tutorials/statusphere","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"https://happyview.dev","baseUrl":"/"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.9.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.9.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.9.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.9.2"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.9.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.9.2"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.9.2"}}}');var u=n(4848),c={siteConfig:a.A,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f(e){var t=e.children;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7489(e,t,n){"use strict";n.d(t,{A:()=>h});var r=n(7387),a=n(6540),o=n(8193),i=n(5260),l=n(440),s=n(9139),u=n(3102),c=n(4848);function d(e){var t=e.error,n=e.tryAgain;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(f,{error:t})]})}function f(e){var t=e.error,n=(0,l.rA)(t).map(function(e){return e.message}).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){var t=e.children;return(0,c.jsx)(u.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function m(e){var t=e.error,n=e.tryAgain;return(0,c.jsx)(p,{children:(0,c.jsxs)(h,{fallback:function(){return(0,c.jsx)(d,{error:t,tryAgain:n})},children:[(0,c.jsx)(i.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(s.A,{children:(0,c.jsx)(d,{error:t,tryAgain:n})})]})})}var g=function(e){return(0,c.jsx)(m,Object.assign({},e))},h=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:g)(a)}return null!=t?t:null},t}(a.Component)},8193(e,t,n){"use strict";n.d(t,{A:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,Object.assign({},e))}},8774(e,t,n){"use strict";n.d(t,{A:()=>g});var r=n(8587),a=n(6540),o=n(4625),i=n(440),l=n(4586),s=n(6654),u=n(8193),c=n(3427),d=n(6025),f=n(4848),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,g,h=e.isNavLink,y=e.to,b=e.href,v=e.activeClassName,w=e.isActive,k=e["data-noBrokenLinkCheck"],x=e.autoAddBaseUrl,S=void 0===x||x,E=(0,r.A)(e,p),_=(0,l.A)().siteConfig,A=_.trailingSlash,C=_.baseUrl,T=_.future.experimental_router,j=(0,d.hH)().withBaseUrl,O=(0,c.A)(),P=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,function(){return P.current});var N=y||b;var L,R,I=(0,s.A)(N),F=null==N?void 0:N.replace("pathname://",""),D=void 0!==F?(L=F,S&&function(e){return e.startsWith("/")}(L)?j(L):L):void 0;"hash"===T&&null!=(n=D)&&n.startsWith("./")&&(D=null==(R=D)?void 0:R.slice(1));D&&I&&(D=(0,i.Ks)(D,{trailingSlash:A,baseUrl:C}));var z=(0,a.useRef)(!1),M=h?o.k2:o.N_,B=u.A.canUseIntersectionObserver,U=(0,a.useRef)(),$=function(){z.current||null==D||(window.docusaurus.preload(D),z.current=!0)};(0,a.useEffect)(function(){return!B&&I&&u.A.canUseDOM&&null!=D&&window.docusaurus.prefetch(D),function(){B&&U.current&&U.current.disconnect()}},[U,D,B,I]);var H=null!=(m=null==(g=D)?void 0:g.startsWith("#"))&&m,V=!E.target||"_self"===E.target,W=!D||!I||!V||H&&"hash"!==T;k||!H&&W||O.collectLink(D),E.id&&O.collectAnchor(E.id);var q={};return W?(0,f.jsx)("a",Object.assign({ref:P,href:D},N&&!I&&{target:"_blank",rel:"noopener noreferrer"},E,q)):(0,f.jsx)(M,Object.assign({},E,{onMouseEnter:$,onTouchStart:$,innerRef:function(e){P.current=e,B&&e&&I&&(U.current=new window.IntersectionObserver(function(t){t.forEach(function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(U.current.unobserve(e),U.current.disconnect(),null!=D&&window.docusaurus.prefetch(D))})}),U.current.observe(e))},to:D},h&&{isActive:w,activeClassName:v},q))}const g=a.forwardRef(m)},1312(e,t,n){"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){var n=e.split(/(\{\w+\})/).map(function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e});return n.some(function(e){return(0,r.isValidElement)(e)})?n.map(function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e}).filter(function(e){return""!==e}):n.join("")}var i=n(2654);function l(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function s(e,t){return o(l({message:e.message,id:e.id}),t)}function u(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},7065(e,t,n){"use strict";n.d(t,{W:()=>r});var r="default"},6654(e,t,n){"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025(e,t,n){"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=e.future.experimental_router,l=(0,r.useCallback)(function(e,r){return function(e){var t=e.siteUrl,n=e.baseUrl,r=e.url,a=e.options,i=void 0===a?{}:a,l=i.forcePrependBaseUrl,s=void 0!==l&&l,u=i.absolute,c=void 0!==u&&u,d=e.router;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===d)return r.startsWith("/")?"."+r:"./"+r;if(s)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;var f=r.startsWith(n)?r:n+r.replace(/^\//,"");return c?t+f:f}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})},[n,t,i]);return{withBaseUrl:l}}function l(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},3427(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=(n(4848),r.createContext({collectAnchor:function(){},collectLink:function(){}}));function o(){return(0,r.useContext)(a)}},4586(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){var e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921(e,t,n){"use strict";n.d(t,{A:()=>r});function r(e){var t={};return function e(n,r){Object.entries(n).forEach(function(n){var a,o=n[0],i=n[1],l=r?r+"."+o:o;"object"==typeof(a=i)&&a&&Object.keys(a).length>0?e(i,l):t[l]=i})}(e),t}},3102(e,t,n){"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848),o=r.createContext(null);function i(e){var t=e.children,n=e.value,i=r.useContext(o),l=(0,r.useMemo)(function(){return function(e){var t=e.parent,n=e.value;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:i,value:n})},[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},3886(e,t,n){"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(679),s=n(3807),u=n(4848),c=function(e){return"docs-preferred-version-"+e},d=function(e,t,n){(0,l.Wf)(c(e),{persistence:t}).set(n)},f=function(e,t){return(0,l.Wf)(c(e),{persistence:t}).get()},p=function(e,t){(0,l.Wf)(c(e),{persistence:t}).del()};var m=r.createContext(null);function g(){var e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)(function(){return Object.keys(e)},[e]),o=(0,r.useState)(function(){return function(e){return Object.fromEntries(e.map(function(e){return[e,{preferredVersionName:null}]}))}(n)}),l=o[0],s=o[1];return(0,r.useEffect)(function(){s(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map(function(e){return[e,(t=e,a=f(t,n),r[t].versions.some(function(e){return e.name===a})?{preferredVersionName:a}:(p(t,n),{preferredVersionName:null}))];var t,a}))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]),[l,(0,r.useMemo)(function(){return{savePreferredVersion:function(e,n){d(e,t,n),s(function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))})}}},[t])]}function h(e){var t=e.children,n=g();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){var t=e.children;return(0,u.jsx)(h,{children:t})}function b(){var e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){var t;void 0===e&&(e=o.W);var n=(0,a.ht)(e),i=b(),l=i[0],s=i[1],u=l[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find(function(e){return e.name===u}))?t:null,savePreferredVersionName:(0,r.useCallback)(function(t){s.savePreferredVersion(e,t)},[s,e])}}},609(e,t,n){"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),a=n(3807),o=n(4848),i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){var t=e.children,n=e.name,a=e.items,i=(0,r.useMemo)(function(){return n&&a?{name:n,items:a}:null},[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){var e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},4718(e,t,n){"use strict";n.d(t,{Nr:()=>p,w8:()=>g,B5:()=>S,Vd:()=>w,QB:()=>x,fW:()=>k,OF:()=>v,Y:()=>y});var r=n(3845),a=n(6540),o=n(6347),i=n(2831),l=n(4070),s=n(9169);function u(e){return Array.from(new Set(e))}var c=n(3886),d=n(3025),f=n(609);function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(var t,n=(0,r.A)(e.items);!(t=n()).done;){var a=p(t.value);if(a)return a}}(e):void 0:e.href}var m=function(e,t){return void 0!==e&&(0,s.ys)(e,t)};function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||function(e,t){return e.some(function(e){return g(e,t)})}(e.items,t))}function h(e,t){switch(e.type){case"category":return g(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(function(e){return h(e,t)});case"link":return!e.unlisted||g(e,t);default:return!0}}function y(e,t){return(0,a.useMemo)(function(){return e.filter(function(e){return h(e,t)})},[e,t])}function b(e){var t=e.sidebarItems,n=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(t){for(var a,l=(0,r.A)(t);!(a=l()).done;){var u=a.value;if("category"===u.type&&((0,s.ys)(u.href,n)||e(u.items))||"link"===u.type&&(0,s.ys)(u.href,n))return o&&"category"!==u.type||i.unshift(u),!0}return!1}(t),i}function v(){var e,t=(0,f.t)(),n=(0,o.zy)().pathname;return!1!==(null==(e=(0,l.vT)())?void 0:e.pluginData.breadcrumbs)&&t?b({sidebarItems:t.items,pathname:n}):null}function w(e){var t=(0,l.zK)(e).activeVersion,n=(0,c.g1)(e).preferredVersion,r=(0,l.r7)(e);return(0,a.useMemo)(function(){return u([t,n,r].filter(Boolean))},[t,n,r])}function k(e,t){var n=w(t);return(0,a.useMemo)(function(){var t=n.flatMap(function(e){return e.sidebars?Object.entries(e.sidebars):[]}),r=t.find(function(t){return t[0]===e});if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map(function(e){return e.name}).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map(function(e){return e[0]}).join("\n- "));return r[1]},[e,n])}function x(e,t){var n=w(t);return(0,a.useMemo)(function(){var t=n.flatMap(function(e){return e.docs}),r=t.find(function(t){return t.id===e});if(!r){if(n.flatMap(function(e){return e.draftIds}).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map(function(e){return e.name}).join(", ")+'".\nAvailable doc ids are:\n- '+u(t.map(function(e){return e.id})).join("\n- "))}return r},[e,n])}function S(e){var t=e.route,n=(0,o.zy)(),r=(0,d.r)(),a=t.routes,l=a.find(function(e){return(0,o.B6)(n.pathname,e)});if(!l)return null;var s=l.sidebar,u=s?r.docsSidebars[s]:void 0;return{docElement:(0,i.v)(a),sidebarName:s,sidebarItems:u}}},3025(e,t,n){"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(3807),o=n(4848),i=r.createContext(null);function l(e){var t=e.children,n=e.version;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){var e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},4070(e,t,n){"use strict";n.d(t,{zK:()=>g,vT:()=>f,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>p});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});var n=(0,a.A)().globalData[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}var l=function(e){return e.versions.find(function(e){return e.isLast})};function s(e,t){var n,a,o=function(e,t){return[].concat(e.versions).sort(function(e,t){return e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0}).find(function(e){return!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})})}(e,t),i=null==o?void 0:o.docs.find(function(e){return!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})});return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(n=i.id,a={},e.versions.forEach(function(e){e.docs.forEach(function(t){t.id===n&&(a[e.name]=t)})}),a):{}}}var u={},c=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},d=function(e){try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});var r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":" (pluginId="+e),{cause:t})}};function f(e){return void 0===e&&(e={}),function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).sort(function(e,t){return t[1].path.localeCompare(e[1].path)}).find(function(e){var n=e[1];return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})}),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map(function(e){return e.path}).join(", "));return o}(c(),(0,r.zy)().pathname,e)}function p(e){return d(e).versions}function m(e){var t=d(e);return l(t)}function g(e){return s(d(e),(0,r.zy)().pathname)}function h(e){return function(e,t){var n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(d(e),(0,r.zy)().pathname)}},6294(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout(function(){a().start()},200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},6134(e,t,n){"use strict";var r,a,o,i=n(1765),l=n(4784);r=i.My,a=l.A.themeConfig.prism.additionalLanguages,o=globalThis.Prism,globalThis.Prism=r,a.forEach(function(e){"php"===e&&n(9700),n(3890)("./prism-"+e)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=r)},1107(e,t,n){"use strict";n.d(t,{A:()=>d});var r=n(8587),a=(n(6540),n(4164)),o=n(1312),i=n(3535),l=n(8774),s=n(3427),u=n(4848),c=["as","id"];function d(e){var t=e.as,n=e.id,d=(0,r.A)(e,c),f=(0,s.A)(),p=(0,i.v)(n);if("h1"===t||!n)return(0,u.jsx)(t,Object.assign({},d,{id:void 0}));f.collectAnchor(n);var m=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof d.children?d.children:n});return(0,u.jsxs)(t,Object.assign({},d,{className:(0,a.A)("anchor",p,d.className),id:n,children:[d.children,(0,u.jsx)(l.A,{className:"hash-link",to:"#"+n,"aria-label":m,title:m,translate:"no",children:"\u200b"})]}))}},3186(e,t,n){"use strict";n.d(t,{A:()=>i});n(6540);var r=n(1312);const a="iconExternalLink_nPIU";var o=n(4848);function i(e){var t=e.width,n=void 0===t?13.5:t,i=e.height,l=void 0===i?13.5:i;return(0,o.jsx)("svg",{width:n,height:l,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a,children:(0,o.jsx)("use",{href:"#theme-svg-external-link"})})}},9139(e,t,n){"use strict";n.d(t,{A:()=>Wt});var r=n(6540),a=n(4164),o=n(7489),i=n(5500),l=n(6347),s=n(1312),u=n(5062),c=n(4848),d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){var e=(0,r.useRef)(null),t=(0,l.W6)().action,n=(0,r.useCallback)(function(e){e.preventDefault();var t,n=null!=(t=document.querySelector("main:first-of-type"))?t:document.getElementById(d);n&&f(n)},[]);return(0,u.$)(function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&f(e.current)}),{containerRef:e,onClick:n}}var m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){var t,n=null!=(t=e.children)?t:m,r=p(),a=r.containerRef,o=r.onClick;return(0,c.jsx)("div",{ref:a,role:"region","aria-label":m,children:(0,c.jsx)("a",Object.assign({},e,{href:"#"+d,onClick:o,children:n}))})}var h=n(7559),y=n(4090);const b="skipToContent_fXgn";function v(){return(0,c.jsx)(g,{className:b})}var w=n(6342),k=n(5041),x=n(8587),S=["width","height","color","strokeWidth","className"];function E(e){var t=e.width,n=void 0===t?21:t,r=e.height,a=void 0===r?21:r,o=e.color,i=void 0===o?"currentColor":o,l=e.strokeWidth,s=void 0===l?1.2:l,u=(e.className,(0,x.A)(e,S));return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 15 15",width:n,height:a},u,{children:(0,c.jsx)("g",{stroke:i,strokeWidth:s,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})}))}const _="closeButton_CVFx";function A(e){return(0,c.jsx)("button",Object.assign({type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.A)("clean-btn close",_,e.className),children:(0,c.jsx)(E,{width:14,height:14,strokeWidth:3.1})}))}const C="content_knG7";function T(e){var t=(0,w.p)().announcementBar.content;return(0,c.jsx)("div",Object.assign({},e,{className:(0,a.A)(C,e.className),dangerouslySetInnerHTML:{__html:t}}))}const j="announcementBar_mb4j",O="announcementBarPlaceholder_vyr4",P="announcementBarClose_gvF7",N="announcementBarContent_xLdY";function L(){var e=(0,w.p)().announcementBar,t=(0,k.M)(),n=t.isActive,r=t.close;if(!n)return null;var o=e.backgroundColor,i=e.textColor,l=e.isCloseable;return(0,c.jsxs)("div",{className:(0,a.A)(h.G.announcementBar.container,j),style:{backgroundColor:o,color:i},role:"banner",children:[l&&(0,c.jsx)("div",{className:O}),(0,c.jsx)(T,{className:N}),l&&(0,c.jsx)(A,{onClick:r,className:P})]})}var R=n(2069),I=n(3104);var F=n(3807),D=n(5600),z=r.createContext(null);function M(e){var t,n,a,o,i,l,s,u=e.children,d=(t=(0,R.M)(),n=(0,D.YL)(),a=(0,r.useState)(!1),o=a[0],i=a[1],l=null!==n.component,s=(0,F.ZC)(l),(0,r.useEffect)(function(){l&&!s&&i(!0)},[l,s]),(0,r.useEffect)(function(){l?t.shown||i(!0):i(!1)},[t.shown,l]),(0,r.useMemo)(function(){return[o,i]},[o]));return(0,c.jsx)(z.Provider,{value:d,children:u})}function B(e){if(e.component){var t=e.component;return(0,c.jsx)(t,Object.assign({},e.props))}}function U(){var e=(0,r.useContext)(z);if(!e)throw new F.dV("NavbarSecondaryMenuDisplayProvider");var t=e[0],n=e[1],a=(0,r.useCallback)(function(){return n(!1)},[n]),o=(0,D.YL)();return(0,r.useMemo)(function(){return{shown:t,hide:a,content:B(o)}},[a,o,t])}function $(e){var t=e.children,n=e.inert;return(0,c.jsx)("div",Object.assign({className:(0,a.A)(h.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu")},function(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}(n),{children:t}))}function H(e){var t=e.header,n=e.primaryMenu,r=e.secondaryMenu,o=U().shown;return(0,c.jsxs)("div",{className:(0,a.A)(h.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)($,{inert:o,children:n}),(0,c.jsx)($,{inert:!o,children:r})]})]})}var V=n(5293),W=n(2303);function q(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})}))}function G(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})}))}function Q(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})}))}const Y="toggle_vylO",K="toggleButton_gllP",Z="toggleIcon_g3eP",X="systemToggleIcon_QzmC",J="lightToggleIcon_pyhR",ee="darkToggleIcon_wfgR",te="toggleButtonDisabled_aARS";function ne(e){switch(e){case null:return(0,s.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error("unexpected color mode "+e)}}function re(e){return(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:ne(e)})}function ae(){return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(q,{"aria-hidden":!0,className:(0,a.A)(Z,J)}),(0,c.jsx)(G,{"aria-hidden":!0,className:(0,a.A)(Z,ee)}),(0,c.jsx)(Q,{"aria-hidden":!0,className:(0,a.A)(Z,X)})]})}function oe(e){var t=e.className,n=e.buttonClassName,r=e.respectPrefersColorScheme,o=e.value,i=e.onChange,l=(0,W.A)();return(0,c.jsx)("div",{className:(0,a.A)(Y,t),children:(0,c.jsx)("button",{className:(0,a.A)("clean-btn",K,!l&&te,n),type:"button",onClick:function(){return i(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error("unexpected color mode "+e)}}(o,r))},disabled:!l,title:ne(o),"aria-label":re(o),children:(0,c.jsx)(ae,{})})})}const ie=r.memo(oe),le="darkNavbarColorModeToggle_X3D1";function se(e){var t=e.className,n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode,a=r.disableSwitch,o=r.respectPrefersColorScheme,i=(0,V.G)(),l=i.colorModeChoice,s=i.setColorMode;return a?null:(0,c.jsx)(ie,{className:t,buttonClassName:"dark"===n?le:void 0,respectPrefersColorScheme:o,value:l,onChange:s})}var ue=n(3465);function ce(){return(0,c.jsx)(ue.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function de(){var e=(0,R.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()},children:(0,c.jsx)(E,{color:"var(--ifm-color-emphasis-600)"})})}function fe(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(ce,{}),(0,c.jsx)(se,{className:"margin-right--md"}),(0,c.jsx)(de,{})]})}var pe=n(8774),me=n(6025),ge=n(6654);function he(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ye=n(3186),be=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function ve(e){var t=e.activeBasePath,n=e.activeBaseRegex,r=e.to,a=e.href,o=e.label,i=e.html,l=e.isDropdownLink,s=e.prependBaseUrlToHref,u=(0,x.A)(e,be),d=(0,me.Ay)(r),f=(0,me.Ay)(t),p=(0,me.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,ge.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(ye.A,Object.assign({},l&&{width:12,height:12}))]})};return a?(0,c.jsx)(pe.A,Object.assign({href:s?p:a},u,g)):(0,c.jsx)(pe.A,Object.assign({to:d,isNavLink:!0},(t||n)&&{isActive:function(e,t){return n?he(n,t.pathname):t.pathname.startsWith(f)}},u,g))}var we=["className","isDropdownItem"];function ke(e){var t=e.className,n=(e.isDropdownItem,(0,x.A)(e,we));return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ve,Object.assign({className:(0,a.A)("menu__link",t)},n))})}var xe=["className","isDropdownItem"];function Se(e){var t=e.className,n=e.isDropdownItem,r=void 0!==n&&n,o=(0,x.A)(e,xe),i=(0,c.jsx)(ve,Object.assign({className:(0,a.A)(r?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:r},o));return r?(0,c.jsx)("li",{children:i}):i}var Ee=["mobile","position"];function _e(e){var t,n=e.mobile,r=void 0!==n&&n,a=(e.position,(0,x.A)(e,Ee)),o=r?ke:Se;return(0,c.jsx)(o,Object.assign({},a,{activeClassName:null!=(t=a.activeClassName)?t:r?"menu__link--active":"navbar__link--active"}))}var Ae=n(1422),Ce=n(9169),Te=n(4586);const je="dropdownNavbarItemMobile_J0Sd";var Oe=["items","className","position","onClick"];function Pe(e,t){return e.some(function(e){return function(e,t){return!!(0,Ce.ys)(e.to,t)||!!he(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)})}function Ne(e){var t=e.collapsed,n=e.onClick;return(0,c.jsx)("button",{"aria-label":t?(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:n})}function Le(e){var t,n,o=e.items,i=e.className,s=(e.position,e.onClick),u=(0,x.A)(e,Oe),d=(n=(0,Te.A)().siteConfig.baseUrl,(0,l.zy)().pathname.replace(n,"/")),f=(0,Ce.ys)(u.to,d),p=Pe(o,d),m=function(e){var t=e.active,n=(0,Ae.u)({initialState:function(){return!t}}),a=n.collapsed,o=n.toggleCollapsed,i=n.setCollapsed;return(0,r.useEffect)(function(){t&&i(!1)},[t,i]),{collapsed:a,toggleCollapsed:o}}({active:f||p}),g=m.collapsed,h=m.toggleCollapsed,y=u.to?void 0:"#";return(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":g}),children:[(0,c.jsxs)("div",{className:(0,a.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":f}),children:[(0,c.jsx)(ve,Object.assign({role:"button",className:(0,a.A)(je,"menu__link menu__link--sublist",i),href:y},u,{onClick:function(e){"#"===y&&e.preventDefault(),h()},children:null!=(t=u.children)?t:u.label})),(0,c.jsx)(Ne,{collapsed:g,onClick:function(e){e.preventDefault(),h()}})]}),(0,c.jsx)(Ae.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:o.map(function(e,t){return(0,r.createElement)(ot,Object.assign({mobile:!0,isDropdownItem:!0,onClick:s,activeClassName:"menu__link--active"},e,{key:t}))})})]})}var Re=["items","position","className","onClick"];function Ie(e){var t,n=e.items,o=e.position,i=e.className,l=(e.onClick,(0,x.A)(e,Re)),s=(0,r.useRef)(null),u=(0,r.useState)(!1),d=u[0],f=u[1];return(0,r.useEffect)(function(){var e=function(e){s.current&&!s.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d}),children:[(0,c.jsx)(ve,Object.assign({"aria-haspopup":"true","aria-expanded":d,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",i)},l,{onClick:l.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(!d))},children:null!=(t=l.children)?t:l.label})),(0,c.jsx)("ul",{className:"dropdown__menu",children:n.map(function(e,t){return(0,r.createElement)(ot,Object.assign({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))})})]})}var Fe=["mobile"];function De(e){var t=e.mobile,n=void 0!==t&&t,r=(0,x.A)(e,Fe),a=n?Le:Ie;return(0,c.jsx)(a,Object.assign({},r))}var ze=n(2131),Me=n(7485),Be=["width","height"];function Ue(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=void 0===r?20:r,o=(0,x.A)(e,Be);return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:n,height:a,"aria-hidden":!0},o,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})}))}const $e="iconLanguage_nlXk";var He=["mobile","dropdownItemsBefore","dropdownItemsAfter","queryString"];function Ve(){var e=(0,Te.A)(),t=e.siteConfig,n=e.i18n.localeConfigs,r=(0,ze.o)(),a=(0,Me.Hl)(function(e){return e.location.search}),o=(0,Me.Hl)(function(e){return e.location.hash}),i=function(e){var t=n[e];if(!t)throw new Error("Docusaurus bug, no locale config found for locale="+e);return t};return{getURL:function(e,n){var l=(0,Me.jy)([a,n.queryString],"append");return""+function(e){return i(e).url===t.url?"pathname://"+r.createUrl({locale:e,fullyQualified:!1}):r.createUrl({locale:e,fullyQualified:!0})}(e)+l+o},getLabel:function(e){return i(e).label},getLang:function(e){return i(e).htmlLang}}}const We=function(){return null},qe="navbarSearchContainer_Bca1";function Ge(e){var t=e.children,n=e.className;return(0,c.jsx)("div",{className:(0,a.A)(n,qe),children:t})}var Qe=n(4070),Ye=n(4718),Ke=["docId","label","docsPluginId"];var Ze=["sidebarId","label","docsPluginId"];var Xe=["label","to","docsPluginId"];var Je=n(3886),et=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter","versions"];function tt(e){var t=e.docsPluginId,n=e.configs;return function(e,t){if(t){var n=new Map(e.map(function(e){return[e.name,e]})),r=function(t,r){var a,o=n.get(t);if(!o)throw new Error("No docs version exist for name '"+t+"', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- "+e.map(function(e){return""+e.name}).join("\n- "));return{version:o,label:null!=(a=null==r?void 0:r.label)?a:o.label}};return Array.isArray(t)?t.map(function(e){return r(e,void 0)}):Object.entries(t).map(function(e){var t=e[0],n=e[1];return r(t,n)})}return e.map(function(e){return{version:e,label:e.label}})}((0,Qe.jh)(t),n)}function nt(e,t){var n;return null!=(n=t.alternateDocVersions[e.name])?n:function(e){return e.docs.find(function(t){return t.id===e.mainDocId})}(e)}const rt={default:_e,localeDropdown:function(e){var t=e.mobile,n=e.dropdownItemsBefore,r=e.dropdownItemsAfter,a=e.queryString,o=(0,x.A)(e,He),i=Ve(),l=(0,Te.A)().i18n,u=l.currentLocale,d=l.locales.map(function(e){return{label:i.getLabel(e),lang:i.getLang(e),to:i.getURL(e,{queryString:a}),target:"_self",autoAddBaseUrl:!1,className:e===u?t?"menu__link--active":"dropdown__link--active":""}}),f=[].concat(n,d,r),p=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):i.getLabel(u);return(0,c.jsx)(De,Object.assign({},o,{mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{className:$e}),p]}),items:f}))},search:function(e){var t=e.mobile,n=e.className;return t?null:(0,c.jsx)(Ge,{className:n,children:(0,c.jsx)(We,{})})},dropdown:De,html:function(e){var t=e.value,n=e.className,r=e.mobile,o=void 0!==r&&r,i=e.isDropdownItem,l=void 0!==i&&i,s=l?"li":"div";return(0,c.jsx)(s,{className:(0,a.A)({navbar__item:!o&&!l,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){var t=e.docId,n=e.label,r=e.docsPluginId,a=(0,x.A)(e,Ke),o=(0,Qe.zK)(r).activeDoc,i=(0,Ye.QB)(t,r),l=(null==o?void 0:o.path)===(null==i?void 0:i.path);return null===i||i.unlisted&&!l?null:(0,c.jsx)(_e,Object.assign({exact:!0},a,{isActive:function(){return l||!(null==o||!o.sidebar)&&o.sidebar===i.sidebar},label:null!=n?n:i.id,to:i.path}))},docSidebar:function(e){var t=e.sidebarId,n=e.label,r=e.docsPluginId,a=(0,x.A)(e,Ze),o=(0,Qe.zK)(r).activeDoc,i=(0,Ye.fW)(t,r).link;if(!i)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return(0,c.jsx)(_e,Object.assign({exact:!0},a,{isActive:function(){return(null==o?void 0:o.sidebar)===t},label:null!=n?n:i.label,to:i.path}))},docsVersion:function(e){var t=e.label,n=e.to,r=e.docsPluginId,a=(0,x.A)(e,Xe),o=(0,Ye.Vd)(r)[0],i=null!=t?t:o.label,l=null!=n?n:function(e){return e.docs.find(function(t){return t.id===e.mainDocId})}(o).path;return(0,c.jsx)(_e,Object.assign({},a,{label:i,to:l}))},docsVersionDropdown:function(e){var t=e.mobile,n=e.docsPluginId,r=e.dropdownActiveClassDisabled,a=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=e.versions,l=(0,x.A)(e,et),u=(0,Me.Hl)(function(e){return e.location.search}),d=(0,Me.Hl)(function(e){return e.location.hash}),f=(0,Qe.zK)(n),p=(0,Je.g1)(n).savePreferredVersionName,m=tt({docsPluginId:n,configs:i}),g=function(e){var t,n=e.docsPluginId,r=e.versionItems;return null!=(t=(0,Ye.Vd)(n).map(function(e){return r.find(function(t){return t.version===e})}).filter(function(e){return void 0!==e})[0])?t:r[0]}({docsPluginId:n,versionItems:m}),h=[].concat(a,m.map(function(e){var t=e.version;return{label:e.label,to:""+nt(t,f).path+u+d,isActive:function(){return t===f.activeVersion},onClick:function(){return p(t.name)}}}),o),y=t&&h.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:nt(g.version,f).path;return h.length<=1?(0,c.jsx)(_e,Object.assign({},l,{mobile:t,label:y,to:b,isActive:r?function(){return!1}:void 0})):(0,c.jsx)(De,Object.assign({},l,{mobile:t,label:y,to:b,items:h,isActive:r?function(){return!1}:void 0}))}};var at=["type"];function ot(e){var t=e.type,n=(0,x.A)(e,at),r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=rt[r];if(!a)throw new Error('No NavbarItem component found for type "'+t+'".');return(0,c.jsx)(a,Object.assign({},n))}function it(){var e=(0,R.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(function(t,n){return(0,r.createElement)(ot,Object.assign({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))})})}function lt(e){return(0,c.jsx)("button",Object.assign({},e,{type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})}))}function st(){var e=0===(0,w.p)().navbar.items.length,t=U();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(lt,{onClick:function(){return t.hide()}}),t.content]})}function ut(){var e,t=(0,R.M)();return void 0===(e=t.shown)&&(e=!0),(0,r.useEffect)(function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}},[e]),t.shouldRender?(0,c.jsx)(H,{header:(0,c.jsx)(fe,{}),primaryMenu:(0,c.jsx)(it,{}),secondaryMenu:(0,c.jsx)(st,{})}):null}const ct="navbarHideable_m1mJ",dt="navbarHidden_jGov";function ft(e){return(0,c.jsx)("div",Object.assign({role:"presentation"},e,{className:(0,a.A)("navbar-sidebar__backdrop",e.className)}))}function pt(e){var t=e.children,n=(0,w.p)().navbar,o=n.hideOnScroll,i=n.style,l=(0,R.M)(),d=function(e){var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),l=(0,r.useCallback)(function(e){null!==e&&(i.current=e.getBoundingClientRect().height)},[]);return(0,I.Mq)(function(t,n){var r=t.scrollY;if(e)if(r=l?a(!1):r+u0&&(0,c.jsx)(Pt,{links:n}),logo:r&&(0,c.jsx)(It,{logo:r}),copyright:t&&(0,c.jsx)(Ft,{copyright:t})})}const Mt=r.memo(zt);var Bt=(0,F.fM)([V.a,k.o,I.Tv,Je.VQ,i.Jx,function(e){var t=e.children;return(0,c.jsx)(D.y_,{children:(0,c.jsx)(R.e,{children:(0,c.jsx)(M,{children:t})})})}]);function Ut(e){var t=e.children;return(0,c.jsx)(Bt,{children:t})}var $t=n(1107);function Ht(e){var t=e.error,n=e.tryAgain;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)($t.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(mt.a2,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(mt.bq,{error:t})})]})})})}const Vt="mainWrapper_z2l0";function Wt(e){var t=e.children,n=e.noFooter,r=e.wrapperClassName,l=e.title,s=e.description;return(0,y.J)(),(0,c.jsxs)(Ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(L,{}),(0,c.jsx)(xt,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(h.G.layout.main.container,h.G.wrapper.main,Vt,r),children:(0,c.jsx)(o.A,{fallback:function(e){return(0,c.jsx)(Ht,Object.assign({},e))},children:t})}),!n&&(0,c.jsx)(Mt,{})]})}},3465(e,t,n){"use strict";n.d(t,{A:()=>f});var r=n(8587),a=(n(6540),n(8774)),o=n(6025),i=n(4586),l=n(6342),s=n(1122),u=n(4848),c=["imageClassName","titleClassName"];function d(e){var t=e.logo,n=e.alt,r=e.imageClassName,a={light:(0,o.Ay)(t.src),dark:(0,o.Ay)(t.srcDark||t.src)},i=(0,u.jsx)(s.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,u.jsx)("div",{className:r,children:i}):i}function f(e){var t,n=(0,i.A)().siteConfig.title,s=(0,l.p)().navbar,f=s.title,p=s.logo,m=e.imageClassName,g=e.titleClassName,h=(0,r.A)(e,c),y=(0,o.Ay)((null==p?void 0:p.href)||"/"),b=f?"":n,v=null!=(t=null==p?void 0:p.alt)?t:b;return(0,u.jsxs)(a.A,Object.assign({to:y},h,(null==p?void 0:p.target)&&{target:p.target},{children:[p&&(0,u.jsx)(d,{logo:p,alt:v,imageClassName:m}),null!=f&&(0,u.jsx)("b",{className:g,children:f})]}))}},1463(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){var t=e.locale,n=e.version,o=e.tag,i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122(e,t,n){"use strict";n.d(t,{A:()=>f});var r=n(8587),a=n(6540),o=n(4164),i=n(2303),l=n(5293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var u=n(4848);function c(e){var t=e.className,n=e.children,r=(0,i.A)(),c=(0,l.G)().colorMode;return(0,u.jsx)(u.Fragment,{children:(r?"dark"===c?["dark"]:["light"]:["light","dark"]).map(function(e){var r=n({theme:e,className:(0,o.A)(t,s.themedComponent,s["themedComponent--"+e])});return(0,u.jsx)(a.Fragment,{children:r},e)})})}var d=["sources","className","alt"];function f(e){var t=e.sources,n=e.className,a=e.alt,o=(0,r.A)(e,d);return(0,u.jsx)(c,{className:n,children:function(e){var n=e.theme,r=e.className;return(0,u.jsx)("img",Object.assign({src:t[n],alt:a,className:r},o))}})}},1422(e,t,n){"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(8587),a=n(6540),o=n(205),i=n(3109),l=n(4848),s=["collapsed"],u=["lazy"];function c(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)(function(){o(function(e){return!e})},[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var d={display:"none",overflow:"hidden",height:"0px"},f={display:"block",overflow:"visible",height:"auto"};function p(e,t){var n=t?d:f;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function m(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)(function(){var e,a=t.current;function l(){var e,t,n=a.scrollHeight,o=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,i.O)())return 1;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!=(t=null==r?void 0:r.easing)?t:"ease-in-out"),height:n+"px"}}function s(){var e=l();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return p(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame(function(){n?(s(),requestAnimationFrame(function(){a.style.height=d.height,a.style.overflow=d.overflow})):(a.style.display="block",requestAnimationFrame(function(){s()}))}),function(){return cancelAnimationFrame(e)}},[t,n,r])}function g(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,s=e.onCollapseTransitionEnd,u=e.className,c=(0,a.useRef)(null);return m({collapsibleRef:c,collapsed:r,animation:i}),(0,l.jsx)(n,{ref:c,onTransitionEnd:function(e){"height"===e.propertyName&&(p(c.current,r),null==s||s(r))},className:u,children:o})}function h(e){var t=e.collapsed,n=(0,r.A)(e,s),i=(0,a.useState)(!t),u=i[0],c=i[1],d=(0,a.useState)(t),f=d[0],p=d[1];return(0,o.A)(function(){t||c(!0)},[t]),(0,o.A)(function(){u&&p(t)},[u,t]),u?(0,l.jsx)(g,Object.assign({},n,{collapsed:f})):null}function y(e){var t=e.lazy,n=(0,r.A)(e,u),a=t?h:g;return(0,l.jsx)(a,Object.assign({},n))}},5041(e,t,n){"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),a=n(2303),o=n(679),i=n(3807),l=n(6342),s=n(4848),u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=function(){return"true"===u.get()},f=function(e){return u.set(String(e))},p=r.createContext(null);function m(e){var t=e.children,n=function(){var e=(0,l.p)().announcementBar,t=(0,a.A)(),n=(0,r.useState)(function(){return!!t&&d()}),o=n[0],i=n[1];(0,r.useEffect)(function(){i(d())},[]);var s=(0,r.useCallback)(function(){f(!0),i(!0)},[]);return(0,r.useEffect)(function(){if(e){var t=e.id,n=c.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;c.set(t),r&&f(!1),!r&&d()||i(!1)}},[e]),(0,r.useMemo)(function(){return{isActive:!!e&&!o,close:s}},[e,o,s])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function g(){var e=(0,r.useContext)(p);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293(e,t,n){"use strict";n.d(t,{G:()=>x,a:()=>k});var r=n(6540),a=n(2303),o=n(3807),i=n(679),l=n(6342),s=n(4848);function u(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function c(e){return t="(prefers-color-scheme: dark)",n=function(){return e(u())},(r=window.matchMedia(t)).addEventListener("change",n),function(){return r.removeEventListener("change",n)};var t,n,r}var d=r.createContext(void 0),f=(0,i.Wf)("theme"),p="system",m=function(e){return"dark"===e?"dark":"light"},g=function(e){return null===e||e===p?null:m(e)},h=function(){return m(document.documentElement.getAttribute("data-theme"))},y=function(e){document.documentElement.setAttribute("data-theme",m(e))},b=function(){return g(document.documentElement.getAttribute("data-theme-choice"))},v=function(e){var t;document.documentElement.setAttribute("data-theme-choice",null!=(t=g(e))?t:p)};function w(){var e=(0,l.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,o=e.respectPrefersColorScheme,i=function(){var e=(0,l.p)().colorMode.defaultMode,t=(0,a.A)(),n=(0,r.useState)(t?h():e),o=n[0],i=n[1],s=(0,r.useState)(t?b():null),u=s[0],c=s[1];return(0,r.useEffect)(function(){i(h()),c(b())},[]),{colorMode:o,setColorModeState:i,colorModeChoice:u,setColorModeChoiceState:c}}(),s=i.colorMode,d=i.setColorModeState,p=i.colorModeChoice,w=i.setColorModeChoiceState;(0,r.useEffect)(function(){n&&f.del()},[n]);var k=(0,r.useCallback)(function(e,n){void 0===n&&(n={});var r=n.persist,a=void 0===r||r;if(null===e){var i=o?u():t;y(i),d(i),v(null),w(null)}else y(e),v(e),d(e),w(e);a&&function(e){null===e?f.del():f.set(m(e))}(e)},[d,w,o,t]);return(0,r.useEffect)(function(){return f.listen(function(e){k(g(e.newValue))})},[k]),(0,r.useEffect)(function(){if(null===p&&o)return c(function(e){d(e),y(e)})},[o,p,d]),(0,r.useMemo)(function(){return{colorMode:s,colorModeChoice:p,setColorMode:k,get isDarkTheme(){return"dark"===s},setLightTheme:function(){k("light")},setDarkTheme:function(){k("dark")}}},[s,p,k])}function k(e){var t=e.children,n=w();return(0,s.jsx)(d.Provider,{value:n,children:t})}function x(){var e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2069(e,t,n){"use strict";n.d(t,{M:()=>m,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(3807),u=n(4848),c=r.createContext(void 0);function d(){var e,t=(e=(0,a.YL)(),0===(0,l.p)().navbar.items.length&&!e.component),n=(0,o.l)(),i=!t&&"mobile"===n,s=(0,r.useState)(!1),u=s[0],c=s[1],d=(0,r.useCallback)(function(){c(function(e){return!e})},[]);return(0,r.useEffect)(function(){"desktop"===n&&c(!1)},[n]),(0,r.useMemo)(function(){return{disabled:t,shouldRender:i,toggle:d,shown:u}},[t,i,d,u])}function f(e){var t=e.handler;return(0,i.$Z)(t),null}function p(e){var t=e.children,n=d();return(0,u.jsxs)(u.Fragment,{children:[n.shown&&(0,u.jsx)(f,{handler:function(){return n.toggle(),!1}}),(0,u.jsx)(c.Provider,{value:n,children:t})]})}function m(){var e=r.useContext(c);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600(e,t,n){"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),a=n(3807),o=n(4848),i=r.createContext(null);function l(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){var e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){var t=e.component,n=e.props,o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");var l=o[1],s=(0,a.Be)(n);return(0,r.useEffect)(function(){l({component:t,props:s})},[l,t,s]),(0,r.useEffect)(function(){return function(){return l({component:null,props:null})}},[l]),null}},4090(e,t,n){"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540),a="navigation-with-keyboard";function o(){(0,r.useEffect)(function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},4581(e,t,n){"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193),o="desktop",i="mobile";function l(e){var t=(void 0===e?{}:e).desktopBreakpoint,n=void 0===t?996:t,l=(0,r.useState)(function(){return"ssr"}),s=l[0],u=l[1];return(0,r.useEffect)(function(){function e(){u(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o:i}(n))}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}},[n]),s}},7559(e,t,n){"use strict";n.d(t,{G:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:function(e){return"theme-admonition-"+e}},announcementBar:{container:"theme-announcement-bar"},tabs:{container:"theme-tabs-container"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109(e,t,n){"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3535(e,t,n){"use strict";n.d(t,{v:()=>i});var r=n(6342);const a="anchorTargetStickyNavbar_Vzrq",o="anchorTargetHideOnScrollNavbar_vjPI";function i(e){var t=(0,r.p)().navbar.hideOnScroll;if(void 0!==e)return t?o:a}},2181(e,t,n){"use strict";n.d(t,{bq:()=>f,MN:()=>d,a2:()=>c,k2:()=>p});var r=n(7387),a=n(6540),o=n(1312),i=n(440);const l="errorBoundaryError_a6uf",s="errorBoundaryFallback_VBag";var u=n(4848);function c(e){return(0,u.jsx)("button",Object.assign({type:"button"},e,{children:(0,u.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})}))}function d(e){var t=e.error,n=e.tryAgain;return(0,u.jsxs)("div",{className:s,children:[(0,u.jsx)("p",{children:t.message}),(0,u.jsx)(c,{onClick:n})]})}function f(e){var t=e.error,n=(0,i.rA)(t).map(function(e){return e.message}).join("\n\nCause:\n");return(0,u.jsx)("p",{className:l,children:n})}var p=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e,t){throw this.props.onError(e,t)},n.render=function(){return this.props.children},t}(a.Component)},7485(e,t,n){"use strict";n.d(t,{$Z:()=>l,Hl:()=>s,jy:()=>u});var r=n(3845),a=n(6540),o=n(6347),i=n(3807);function l(e){!function(e){var t=(0,o.W6)(),n=(0,i._q)(e);(0,a.useEffect)(function(){return t.block(function(e,t){return n(e,t)})},[t,n])}(function(t,n){if("POP"===n)return e(t,n)})}function s(e){var t=(0,o.W6)();return(0,a.useSyncExternalStore)(t.listen,function(){return e(t)},function(){return e(Object.assign({},t,{location:Object.assign({},t.location,{search:"",hash:"",state:void 0})}))})}function u(e,t){var n=function(e,t){for(var n,a=new URLSearchParams,o=(0,r.A)(e);!(n=o()).done;)for(var i,l=n.value,s=(0,r.A)(l.entries());!(i=s()).done;){var u=i.value,c=u[0],d=u[1];"append"===t?a.append(c,d):a.set(c,d)}return a}(e.map(function(e){return new URLSearchParams(null!=e?e:"")}),t),a=n.toString();return a?"?"+a:a}},5500(e,t,n){"use strict";n.d(t,{Jx:()=>y,be:()=>m,e3:()=>h});var r=n(6540),a=n(4164),o=n(5260),i=n(6803),l=n(6025),s=n(4563),u=n(4848);function c(e){var t=e.title,n=(0,s.s$)().format(t);return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("title",{children:n}),(0,u.jsx)("meta",{property:"og:title",content:n})]})}function d(e){var t=e.description;return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{name:"description",content:t}),(0,u.jsx)("meta",{property:"og:description",content:t})]})}function f(e){var t=e.image,n=(0,(0,l.hH)().withBaseUrl)(t,{absolute:!0});return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{property:"og:image",content:n}),(0,u.jsx)("meta",{name:"twitter:image",content:n})]})}function p(e){var t=e.keywords;return(0,u.jsx)(o.A,{children:(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(t)?t.join(","):t})})}function m(e){var t=e.title,n=e.description,r=e.keywords,a=e.image,i=e.children;return(0,u.jsxs)(u.Fragment,{children:[t&&(0,u.jsx)(c,{title:t}),n&&(0,u.jsx)(d,{description:n}),r&&(0,u.jsx)(p,{keywords:r}),a&&(0,u.jsx)(f,{image:a}),i&&(0,u.jsx)(o.A,{children:i})]})}var g=r.createContext(void 0);function h(e){var t=e.className,n=e.children,i=r.useContext(g),l=(0,a.A)(i,t);return(0,u.jsxs)(g.Provider,{value:l,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:l})}),n]})}function y(e){var t=e.children,n=(0,i.A)(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),o="plugin-id-"+n.plugin.id;return(0,u.jsx)(h,{className:(0,a.A)(r,o),children:t})}},3807(e,t,n){"use strict";n.d(t,{dV:()=>m,fM:()=>h,_q:()=>f,ZC:()=>p,Be:()=>g});var r=n(8634),a=n(7387);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=n(3662);function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(l=function(){return!!e})()}function s(e){var t="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(l())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&(0,i.A)(a,n.prototype),a}(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),(0,i.A)(n,e)},s(e)}var u=n(6540),c=n(205),d=n(4848);function f(e){var t=(0,u.useRef)(e);return(0,c.A)(function(){t.current=e},[e]),(0,u.useCallback)(function(){return t.current.apply(t,arguments)},[])}function p(e){var t=(0,u.useRef)();return(0,c.A)(function(){t.current=e}),t.current}var m=function(e){function t(t,n){var a,o,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null!=(a=null==(o=i.stack)||null==(o=o.split("\n")[1])||null==(o=o.match((0,r.A)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+t+">. "+(null!=n?n:""),i}return(0,a.A)(t,e),t}(s(Error));function g(e){var t=Object.entries(e);return t.sort(function(e,t){return e[0].localeCompare(t[0])}),(0,u.useMemo)(function(){return e},t.flat())}function h(e){return function(t){var n=t.children;return(0,d.jsx)(d.Fragment,{children:e.reduceRight(function(e,t){return(0,d.jsx)(t,{children:e})},n)})}}},9169(e,t,n){"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)(function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap(function(e){var t;return null!=(t=e.routes)?t:[]}))}(e.routes)}({routes:a.A,baseUrl:e})},[e])}},3104(e,t,n){"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,gk:()=>p});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(3807)),l=n(4848);var s=r.createContext(void 0);function u(e){var t,n=e.children,a=(t=(0,r.useRef)(!0),(0,r.useMemo)(function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}},[]));return(0,l.jsx)(s.Provider,{value:a,children:n})}function c(){var e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}var d=function(){return a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function f(e,t){void 0===t&&(t=[]);var n=c().scrollEventsEnabledRef,a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(function(){var e=function(){if(n.current){var e=d();o(e,a.current),a.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}},[o,n].concat(t))}function p(){var e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(n){e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(n):function(e){var t=null,n=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(n&&a>e||!n&&au});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}');var a=r.N;function o(e){var t=e.key,n=e.oldValue,r=e.newValue,a=e.storage;if(n!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}var l=!1;var s={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,t){var n=""+e+r.M;if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t,listen:t}}(n);var a=i(null==t?void 0:t.persistence);return null===a?s:{get:function(){try{return a.getItem(n)}catch(e){return console.error("Docusaurus storage error, can't get key="+n,e),null}},set:function(e){try{var t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(r){console.error("Docusaurus storage error, can't set "+n+"="+e,r)}},del:function(){try{var e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(t){console.error("Docusaurus storage error, can't delete key="+n,t)}},listen:function(e){try{var t=function(t){t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),function(){return window.removeEventListener("storage",t)}}catch(r){return console.error("Docusaurus storage error, can't listen for changes of key="+n,r),function(){}}}}}},4563(e,t,n){"use strict";n.d(t,{AL:()=>c,s$:()=>d});var r=n(6540),a=n(4586),o=n(6803),i=n(3807),l=n(4848),s=function(e){var t=e.title,n=e.siteTitle,r=e.titleDelimiter,a=null==t?void 0:t.trim();return a&&a!==n?a+" "+r+" "+n:n},u=(0,r.createContext)(null);function c(e){var t=e.formatter,n=e.children;return(0,l.jsx)(u.Provider,{value:t,children:n})}function d(){var e=function(){var e=(0,r.useContext)(u);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),t=(0,a.A)().siteConfig,n=t.title,l=t.titleDelimiter,c=(0,o.A)().plugin;return{format:function(t){return e({title:t,siteTitle:n,titleDelimiter:l,plugin:c,defaultFormatter:s})}}}},2131(e,t,n){"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){var e=(0,r.A)(),t=e.siteConfig,n=t.baseUrl,i=t.trailingSlash,l=e.i18n.localeConfigs,s=(0,a.zy)().pathname,u=(0,o.Ks)(s,{trailingSlash:i,baseUrl:n}).replace(n,"");return{createUrl:function(e){var t=e.locale,n=e.fullyQualified,r=function(e){var t=l[e];if(!t)throw new Error("Unexpected Docusaurus bug, no locale config found for locale="+e);return t}(t);return""+(""+(n?r.url:""))+r.baseUrl+u}}}},5062(e,t,n){"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(3807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(function(){n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},6342(e,t,n){"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},2983(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var i=e.split(/[#?]/)[0],l="/"===i||i===r?i:(s=i,u=n,u?a(s):o(s));var s,u;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;var r=n(2566);function a(e){return e.endsWith("/")?e:e+"/"}function o(e){return(0,r.removeSuffix)(e,"/")}},253(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t].concat(e(t.cause));return[t]}},440(e,t,n){"use strict";t.rA=t.Ks=void 0;var r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:""+t+e},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:""+e+t},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513(e,t,n){"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>p,sC:()=>T,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout(function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302(e,t,n){var r=n(4634);e.exports=g,e.exports.parse=o,e.exports.compile=function(e,t){return u(o(e,t),t)},e.exports.tokensToFunction=u,e.exports.tokensToRegExp=m;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,l=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var c=n[0],f=n[1],p=n.index;if(s+=e.slice(l,p),l=p+c.length,f)s+=f[1];else{var m=e[l],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=g||u,_=y||b,A=g||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:h||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?d(_):w?".*":i(E,A)})}}return l-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function u(e,t){for(var n=new Array(e.length),a=0;a[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},9700(){!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(m+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},3890(e,t,n){var r={"./prism-lua":64};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3890},2694(e,t,n){"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556(e,t,n){e.exports=n(2694)()},6925(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1247(e,t,n){"use strict";var r=n(9982),a=n(6540),o=n(961);function i(e){var t="https://react.dev/errors/"+e;if(1z||(e.current=D[z],D[z]=null,z--)}function U(e,t){z++,D[z]=e.current,e.current=t}var $,H,V=M(null),W=M(null),q=M(null),G=M(null);function Q(e,t){switch(U(q,t),U(W,e),U(V,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?yd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bd(t=yd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(V),U(V,e)}function Y(){B(V),B(W),B(q)}function K(e){null!==e.memoizedState&&U(G,e);var t=V.current,n=bd(t,e.type);t!==n&&(U(W,e),U(V,n))}function Z(e){W.current===e&&(B(V),B(W)),G.current===e&&(B(G),df._currentValue=F)}function X(e){if(void 0===$)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);$=t&&t[1]||"",H=-1)":-1--a||s[r]!==u[a]){var c="\n"+s[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?X(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return X(e.type);case 16:return X("Lazy");case 13:return e.child!==t&&null!==t?X("Suspense Fallback"):X("Suspense");case 19:return X("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return X("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,ae=r.unstable_scheduleCallback,oe=r.unstable_cancelCallback,ie=r.unstable_shouldYield,le=r.unstable_requestPaint,se=r.unstable_now,ue=r.unstable_getCurrentPriorityLevel,ce=r.unstable_ImmediatePriority,de=r.unstable_UserBlockingPriority,fe=r.unstable_NormalPriority,pe=r.unstable_LowPriority,me=r.unstable_IdlePriority,ge=r.log,he=r.unstable_setDisableYieldValue,ye=null,be=null;function ve(e){if("function"==typeof ge&&he(e),be&&"function"==typeof be.setStrictMode)try{be.setStrictMode(ye,e)}catch(t){}}var we=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ke(e)/xe|0)|0},ke=Math.log,xe=Math.LN2;var Se=256,Ee=262144,_e=4194304;function Ae(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ce(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,o=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=134217727&r;return 0!==l?0!==(r=l&~o)?a=Ae(r):0!==(i&=l)?a=Ae(i):n||0!==(n=l&~e)&&(a=Ae(n)):0!==(l=r&~o)?a=Ae(l):0!==i?a=Ae(i):n||0!==(n=r&~e)&&(a=Ae(n)),0===a?0:0!==t&&t!==a&&0===(t&o)&&((o=a&-a)>=(n=t&-t)||32===o&&4194048&n)?t:a}function Te(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function je(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Oe(){var e=_e;return!(62914560&(_e<<=1))&&(_e=4194304),e}function Pe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ne(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Le(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-we(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Re(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-we(n),a=1<=An),jn=String.fromCharCode(32),On=!1;function Pn(e,t){switch(e){case"keyup":return-1!==En.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ln=!1;var Rn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Rn[e.type]:"textarea"===t}function Fn(e,t,n,r){It?Ft?Ft.push(r):Ft=[r]:It=r,0<(t=rd(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Dn=null,zn=null;function Mn(e){Yc(e,0)}function Bn(e){if(mt(Xe(e)))return e}function Un(e,t){if("change"===e)return t}var $n=!1;if(Ut){var Hn;if(Ut){var Vn="oninput"in document;if(!Vn){var Wn=document.createElement("div");Wn.setAttribute("oninput","return;"),Vn="function"==typeof Wn.oninput}Hn=Vn}else Hn=!1;$n=Hn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=gt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=gt((e=t.contentWindow).document)}return t}function ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var or=Ut&&"documentMode"in document&&11>=document.documentMode,ir=null,lr=null,sr=null,ur=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;ur||null==ir||ir!==gt(r)||("selectionStart"in(r=ir)&&ar(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sr&&Jn(sr,r)||(sr=r,0<(r=rd(lr,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=ir)))}function dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var fr={animationend:dr("Animation","AnimationEnd"),animationiteration:dr("Animation","AnimationIteration"),animationstart:dr("Animation","AnimationStart"),transitionrun:dr("Transition","TransitionRun"),transitionstart:dr("Transition","TransitionStart"),transitioncancel:dr("Transition","TransitionCancel"),transitionend:dr("Transition","TransitionEnd")},pr={},mr={};function gr(e){if(pr[e])return pr[e];if(!fr[e])return e;var t,n=fr[e];for(t in n)if(n.hasOwnProperty(t)&&t in mr)return pr[e]=n[t];return e}Ut&&(mr=document.createElement("div").style,"AnimationEvent"in window||(delete fr.animationend.animation,delete fr.animationiteration.animation,delete fr.animationstart.animation),"TransitionEvent"in window||delete fr.transitionend.transition);var hr=gr("animationend"),yr=gr("animationiteration"),br=gr("animationstart"),vr=gr("transitionrun"),wr=gr("transitionstart"),kr=gr("transitioncancel"),xr=gr("transitionend"),Sr=new Map,Er="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){Sr.set(e,t),rt(t,[e])}Er.push("scrollEnd");var Ar="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Cr=[],Tr=0,jr=0;function Or(){for(var e=Tr,t=jr=Tr=0;t>=i,a-=i,na=1<<32-we(t)+a|n<g?(h=d,d=null):h=d.sibling;var y=p(a,d,l[g],s);if(null===y){null===d&&(d=h);break}e&&d&&null===y.alternate&&t(a,d),i=o(y,i,g),null===c?u=y:c.sibling=y,c=y,d=h}if(g===l.length)return n(a,d),da&&aa(a,g),u;if(null===d){for(;gh?(y=g,g=null):y=g.sibling;var v=p(a,g,b.value,u);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(a,g),l=o(v,l,h),null===d?c=v:d.sibling=v,d=v,g=y}if(b.done)return n(a,g),da&&aa(a,h),c;if(null===g){for(;!b.done;h++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,h),null===d?c=b:d.sibling=b,d=b);return da&&aa(a,h),c}for(g=r(g);!b.done;h++,b=s.next())null!==(b=m(g,a,h,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),l=o(b,l,h),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach(function(e){return t(a,e)}),da&&aa(a,h),c}(s,u,c=v.call(c),d)}if("function"==typeof c.then)return b(s,u,uo(c),d);if(c.$$typeof===k)return b(s,u,La(s,c),d);fo(s,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==u&&6===u.tag?(n(s,u.sibling),(d=a(u,c)).return=s,s=d):(n(s,u),(d=Vr(c,s.mode,d)).return=s,s=d),l(s)):n(s,u)}return function(e,t,n,r){try{so=0;var a=b(e,t,n,r);return lo=null,a}catch(i){if(i===Za||i===Ja)throw i;var o=zr(29,i,null,e.mode);return o.lanes=r,o.return=e,o}}}var mo=po(!0),go=po(!1),ho=!1;function yo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function wo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&pu){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,t=Ir(e),Rr(e,null,n),t}return Pr(e,r,t,n),Ir(e)}function ko(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}function xo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var So=!1;function Eo(){if(So){if(null!==Va)throw Va}}function _o(e,t,n,r){So=!1;var a=e.updateQueue;ho=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var f=-536870913&l.lane,m=f!==l.lane;if(m?(hu&f)===f:(r&f)===f){0!==f&&f===Ha&&(So=!0),null!==c&&(c=c.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var g=e,h=l;f=t;var y=n;switch(h.tag){case 1:if("function"==typeof(g=h.payload)){d=g.call(y,d,f);break e}d=g;break e;case 3:g.flags=-65537&g.flags|128;case 0:if(null==(f="function"==typeof(g=h.payload)?g.call(y,d,f):g))break e;d=p({},d,f);break e;case 2:ho=!0}}null!==(f=l.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=a.callbacks)?a.callbacks=[f]:m.push(f))}else m={lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=m,s=d):c=c.next=m,i|=f;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(m=l).next,m.next=null,a.lastBaseUpdate=m,a.shared.pending=null}}null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null===o&&(a.shared.lanes=0),Eu|=i,e.lanes=i,e.memoizedState=d}}function Ao(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function Co(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;eo?o:8;var i,l,s,u=R.T,c={};R.T=c,dl(e,!1,t,n);try{var d=a(),f=R.S;if(null!==f&&f(c,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)cl(e,t,(i=r,l=[],s={status:"pending",value:null,reason:null,then:function(e){l.push(e)}},d.then(function(){s.status="fulfilled",s.value=i;for(var e=0;e<\/script>",o=o.removeChild(o.firstChild);break;case"select":o="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o="string"==typeof r.is?l.createElement(a,{is:r.is}):l.createElement(a)}}o[Ue]=t,o[$e]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)o.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break e;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}t.stateNode=o;e:switch(fd(o,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&ls(t)}}return fs(t),ss(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=q.current,ba(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=ua))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Ue]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ud(e.nodeValue,n)))||ga(t,!0)}else(e=hd(e).createTextNode(r))[Ue]=t,t.stateNode=e}return fs(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=ba(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[Ue]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),e=!1}else n=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(Mo(t),t):(Mo(t),null);if(128&t.flags)throw Error(i(558))}return fs(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=ba(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[Ue]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),a=!1}else a=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(Mo(t),t):(Mo(t),null)}return Mo(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),o=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cs(t,t.updateQueue),fs(t),null);case 4:return Y(),null===e&&Jc(t.stateNode.containerInfo),fs(t),null;case 10:return Aa(t.type),fs(t),null;case 19:if(B(Bo),null===(r=t.memoizedState))return fs(t),null;if(a=!!(128&t.flags),null===(o=r.rendering))if(a)ds(r,!1);else{if(0!==Su||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(o=Uo(e))){for(t.flags|=128,ds(r,!1),e=o.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Ur(n,e),n=n.sibling;return U(Bo,1&Bo.current|2),da&&aa(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&se()>Ru&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=Uo(o))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),ds(r,!0),null===r.tail&&"hidden"===r.tailMode&&!o.alternate&&!da)return fs(t),null}else 2*se()-r.renderingStartTime>Ru&&536870912!==n&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(null!==(e=r.last)?e.sibling=o:t.child=o,r.last=o)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=se(),e.sibling=null,n=Bo.current,U(Bo,a?1&n|2:1&n),da&&aa(t,r.treeForkCount),e):(fs(t),null);case 22:case 23:return Mo(t),No(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(fs(t),6&t.subtreeFlags&&(t.flags|=8192)):fs(t),null!==(n=t.updateQueue)&&cs(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&B(Ga),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Aa(za),fs(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function ms(e,t){switch(la(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Aa(za),Y(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Z(t),null;case 31:if(null!==t.memoizedState){if(Mo(t),null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(Mo(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return B(Bo),null;case 4:return Y(),null;case 10:return Aa(t.type),null;case 22:case 23:return Mo(t),No(),null!==e&&B(Ga),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Aa(za),null;default:return null}}function gs(e,t){switch(la(t),t.tag){case 3:Aa(za),Y();break;case 26:case 27:case 5:Z(t);break;case 4:Y();break;case 31:null!==t.memoizedState&&Mo(t);break;case 13:Mo(t);break;case 19:B(Bo);break;case 10:Aa(t.type);break;case 22:case 23:Mo(t),No(),null!==e&&B(Ga);break;case 24:Aa(za)}}function hs(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var a=r.next;n=a;do{if((n.tag&e)===e){r=void 0;var o=n.create,i=n.inst;r=o(),i.destroy=r}n=n.next}while(n!==a)}}catch(l){Sc(t,t.return,l)}}function ys(e,t,n){try{var r=t.updateQueue,a=null!==r?r.lastEffect:null;if(null!==a){var o=a.next;r=o;do{if((r.tag&e)===e){var i=r.inst,l=i.destroy;if(void 0!==l){i.destroy=void 0,a=t;var s=n,u=l;try{u()}catch(c){Sc(a,s,c)}}}r=r.next}while(r!==o)}}catch(c){Sc(t,t.return,c)}}function bs(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Co(t,n)}catch(r){Sc(e,e.return,r)}}}function vs(e,t,n){n.props=Sl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){Sc(e,t,r)}}function ws(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(a){Sc(e,t,a)}}function ks(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(a){Sc(e,t,a)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(o){Sc(e,t,o)}else n.current=null}function xs(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(a){Sc(e,e.return,a)}}function Ss(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,o=null,l=null,s=null,u=null,c=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&null!=f)switch(m){case"checked":case"value":break;case"defaultValue":u=f;default:r.hasOwnProperty(m)||cd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(null!=m||null!=f))switch(p){case"type":o=m;break;case"name":a=m;break;case"checked":c=m;break;case"defaultChecked":d=m;break;case"value":l=m;break;case"defaultValue":s=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(i(137,t));break;default:m!==f&&cd(e,t,p,m,r,f)}}return void bt(e,l,s,u,c,d,o,a);case"select":for(o in m=l=s=p=null,n)if(u=n[o],n.hasOwnProperty(o)&&null!=u)switch(o){case"value":break;case"multiple":m=u;default:r.hasOwnProperty(o)||cd(e,t,o,null,r,u)}for(a in r)if(o=r[a],u=n[a],r.hasOwnProperty(a)&&(null!=o||null!=u))switch(a){case"value":p=o;break;case"defaultValue":s=o;break;case"multiple":l=o;default:o!==u&&cd(e,t,a,o,r,u)}return t=s,n=l,r=m,void(null!=p?kt(e,!!n,p,!1):!!r!=!!n&&(null!=t?kt(e,!!n,t,!0):kt(e,!!n,n?[]:"",!1)));case"textarea":for(s in m=p=null,n)if(a=n[s],n.hasOwnProperty(s)&&null!=a&&!r.hasOwnProperty(s))switch(s){case"value":case"children":break;default:cd(e,t,s,null,r,a)}for(l in r)if(a=r[l],o=n[l],r.hasOwnProperty(l)&&(null!=a||null!=o))switch(l){case"value":p=a;break;case"defaultValue":m=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(i(91));break;default:a!==o&&cd(e,t,l,a,r,o)}return void xt(e,p,m);case"option":for(var g in n)if(p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g))if("selected"===g)e.selected=!1;else cd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(null!=p||null!=m))if("selected"===u)e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p;else cd(e,t,u,p,r,m);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&cd(e,t,h,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:cd(e,t,c,p,r,m)}return;default:if(Tt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&dd(e,t,y,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||void 0===p&&void 0===m||dd(e,t,d,p,r,m);return}}for(var b in n)p=n[b],n.hasOwnProperty(b)&&null!=p&&!r.hasOwnProperty(b)&&cd(e,t,b,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||null==p&&null==m||cd(e,t,f,p,r,m)}(r,e.type,n,t),r[$e]=t}catch(a){Sc(e,e.return,a)}}function Es(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ad(e.type)||4===e.tag}function _s(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Es(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ad(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function As(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Nt));else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(As(e,t,n),e=e.sibling;null!==e;)As(e,t,n),e=e.sibling}function Cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Cs(e,t,n),e=e.sibling;null!==e;)Cs(e,t,n),e=e.sibling}function Ts(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);fd(t,r,n),t[Ue]=e,t[$e]=n}catch(o){Sc(e,e.return,o)}}var js=!1,Os=!1,Ps=!1,Ns="function"==typeof WeakSet?WeakSet:Set,Ls=null;function Rs(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Qs(e,n),4&r&&hs(5,n);break;case 1:if(Qs(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(i){Sc(n,n.return,i)}else{var a=Sl(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(a,t,e.__reactInternalSnapshotBeforeUpdate)}catch(l){Sc(n,n.return,l)}}64&r&&bs(n),512&r&&ws(n,n.return);break;case 3:if(Qs(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Co(e,t)}catch(i){Sc(n,n.return,i)}}break;case 27:null===t&&4&r&&Ts(n);case 26:case 5:Qs(e,n),null===t&&4&r&&xs(n),512&r&&ws(n,n.return);break;case 12:Qs(e,n);break;case 31:Qs(e,n),4&r&&Bs(e,n);break;case 13:Qs(e,n),4&r&&Us(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Cc.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||js)){t=null!==t&&null!==t.memoizedState||Os,a=js;var o=Os;js=r,(Os=t)&&!o?Ks(e,n,!!(8772&n.subtreeFlags)):Qs(e,n),js=a,Os=o}break;case 30:break;default:Qs(e,n)}}function Is(e){var t=e.alternate;null!==t&&(e.alternate=null,Is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Ye(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Fs=null,Ds=!1;function zs(e,t,n){for(n=n.child;null!==n;)Ms(e,t,n),n=n.sibling}function Ms(e,t,n){if(be&&"function"==typeof be.onCommitFiberUnmount)try{be.onCommitFiberUnmount(ye,n)}catch(o){}switch(n.tag){case 26:Os||ks(n,t),zs(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Os||ks(n,t);var r=Fs,a=Ds;Ad(n.type)&&(Fs=n.stateNode,Ds=!1),zs(e,t,n),zd(n.stateNode),Fs=r,Ds=a;break;case 5:Os||ks(n,t);case 6:if(r=Fs,a=Ds,Fs=null,zs(e,t,n),Ds=a,null!==(Fs=r))if(Ds)try{(9===Fs.nodeType?Fs.body:"HTML"===Fs.nodeName?Fs.ownerDocument.body:Fs).removeChild(n.stateNode)}catch(i){Sc(n,t,i)}else try{Fs.removeChild(n.stateNode)}catch(i){Sc(n,t,i)}break;case 18:null!==Fs&&(Ds?(Cd(9===(e=Fs).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Wf(e)):Cd(Fs,n.stateNode));break;case 4:r=Fs,a=Ds,Fs=n.stateNode.containerInfo,Ds=!0,zs(e,t,n),Fs=r,Ds=a;break;case 0:case 11:case 14:case 15:ys(2,n,t),Os||ys(4,n,t),zs(e,t,n);break;case 1:Os||(ks(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&vs(n,t,r)),zs(e,t,n);break;case 21:zs(e,t,n);break;case 22:Os=(r=Os)||null!==n.memoizedState,zs(e,t,n),Os=r;break;default:zs(e,t,n)}}function Bs(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{Wf(e)}catch(n){Sc(t,t.return,n)}}}function Us(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Wf(e)}catch(n){Sc(t,t.return,n)}}function $s(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ns),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ns),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Tc.bind(null,e,t);t.then(r,r)}})}function Hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r title"))),fd(o,r,n),o[Ue]=e,et(o),r=o;break e;case"link":var l=nf("link","href",a).get(r+(n.href||""));if(l)for(var s=0;sl)break;var c=s.transferSize,d=s.initiatorType;c&&pd(d)&&(i+=c*((s=s.responseEnd)of?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(a)}}:null}(d,m)))return Bu=o,e.cancelPendingCommit=m(gc.bind(null,e,t,o,n,r,a,i,l,s,c,d,null,f,p)),void Xu(e,o,i,!u)}gc(e,t,o,n,r,a,i,l,s)}function Zu(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;rh&&(i=h,h=g,g=i);var y=tr(l,g),b=tr(l,h);if(y&&b&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==b.node||p.focusOffset!==b.offset)){var v=d.createRange();v.setStart(y.node,y.offset),p.removeAllRanges(),g>h?(p.addRange(v),p.extend(b.node,b.offset)):(v.setEnd(b.node,b.offset),p.addRange(v))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof l.focus&&l.focus(),l=0;ln?32:n,R.T=null,n=$u,$u=null;var o=zu,l=Bu;if(Du=0,Mu=zu=null,Bu=0,6&pu)throw Error(i(331));var s=pu;if(pu|=4,su(o.current),eu(o,o.current,l,n),pu=s,Fc(0,!1),be&&"function"==typeof be.onPostCommitFiberRoot)try{be.onPostCommitFiberRoot(ye,o)}catch(u){}return!0}finally{I.p=a,R.T=r,vc(e,t)}}function xc(e,t,n){t=Qr(n,t),null!==(e=wo(e,t=jl(e.stateNode,t,2),2))&&(Ne(e,2),Ic(e))}function Sc(e,t,n){if(3===e.tag)xc(e,e,n);else for(;null!==t;){if(3===t.tag){xc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Fu||!Fu.has(r))){e=Qr(n,e),null!==(r=wo(t,n=Ol(2),2))&&(Pl(n,r,t,e),Ne(r,2),Ic(r));break}}t=t.return}}function Ec(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fu;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(ku=!0,a.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function _c(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,mu===e&&(hu&n)===n&&(4===Su||3===Su&&(62914560&hu)===hu&&300>se()-Nu?!(2&pu)&&tc(e,0):Au|=n,Tu===hu&&(Tu=0)),Ic(e)}function Ac(e,t){0===t&&(t=Oe()),null!==(e=Lr(e,t))&&(Ne(e,t),Ic(e))}function Cc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ac(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),Ac(e,n)}var jc=null,Oc=null,Pc=!1,Nc=!1,Lc=!1,Rc=0;function Ic(e){e!==Oc&&null===e.next&&(null===Oc?jc=Oc=e:Oc=Oc.next=e),Nc=!0,Pc||(Pc=!0,Ed(function(){6&pu?ae(ce,Dc):zc()}))}function Fc(e,t){if(!Lc&&Nc){Lc=!0;do{for(var n=!1,r=jc;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var o=0;else{var i=r.suspendedLanes,l=r.pingedLanes;o=(1<<31-we(42|e)+1)-1,o=201326741&(o&=a&~(i&~l))?201326741&o|1:o?2|o:0}0!==o&&(n=!0,Uc(r,o))}else o=hu,!(3&(o=Ce(r,r===mu?o:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Te(r,o)||(n=!0,Uc(r,o));r=r.next}}while(n);Lc=!1}}function Dc(){zc()}function zc(){Nc=Pc=!1;var e=0;0!==Rc&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==wd&&(wd=e,!0);return wd=null,!1}()&&(e=Rc);for(var t=se(),n=null,r=jc;null!==r;){var a=r.next,o=Mc(r,t);0===o?(r.next=null,null===n?jc=a:n.next=a,null===a&&(Oc=n)):(n=r,(0!==e||3&o)&&(Nc=!0)),r=a}0!==Du&&5!==Du||Fc(e,!1),0!==Rc&&(Rc=0)}function Mc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=-62914561&e.pendingLanes;0 title"):null)}function af(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var of=0;function lf(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)uf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var sf=null;function uf(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sf=new Map,t.forEach(cf,e),sf=null,lf.call(e))}function cf(e,t){if(!(4&t.state.loading)){var n=sf.get(e);if(n)var r=n.get(null);else{n=new Map,sf.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;oJ,vd:()=>W});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),u=n.n(s),c=n(2833),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map(function(e){return h[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return f({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[h.BASE]}).map(function(e){return e[h.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},F=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},D=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},z=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=F(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=O(t);return a?"<"+e+' data-rh="true" '+a+">"+R(o,r)+"":"<"+e+' data-rh="true">'+R(o,r)+""}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return F(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return D(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"")},"")}(e,t,n)}}}},M=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=P(e.metaTags,v),o=P(t,y),i=P(n,b);return{priorityMethods:{toComponent:function(){return[].concat(D(h.META,a.priority),D(h.LINK,o.priority),D(h.SCRIPT,i.priority))},toString:function(){return z(h.META,a.priority,r)+" "+z(h.LINK,o.priority,r)+" "+z(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:z(h.BASE,t,r),bodyAttributes:z("bodyAttributes",n,r),htmlAttributes:z("htmlAttributes",a,r),link:z(h.LINK,c,r),meta:z(h.META,d,r),noscript:z(h.NOSCRIPT,o,r),script:z(h.SCRIPT,f,r),style:z(h.STYLE,i,r),title:z(h.TITLE,{title:s,titleAttributes:u},r)}},B=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=M({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var q=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(h.BODY,e.bodyAttributes),G(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=O(e)),G(h.TITLE,t)}(c,d);var f={baseTag:q(h.BASE,n),linkTags:q(h.LINK,a),metaTags:q(h.META,o),noscriptTags:q(h.NOSCRIPT,i),scriptTags:q(h.SCRIPT,s),styleTags:q(h.STYLE,u)},p={},m={};Object.keys(f).forEach(function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)}),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case h.BODY:return f({},a,{bodyAttributes:f({},o)});case h.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach(function(t){var r;n=f({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Z),l=Object.keys(i).reduce(function(e,t){return e[x[t]||t]=i[t],e},{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,function(e){return r.createElement(K,f({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case h:case g:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=h,t.Memo=g,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363(e,t,n){"use strict";e.exports=n(2799)},3259(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;ti,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a}),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map(function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})})):null}},4625(e,t,n){"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(6347),a=n(7387),o=n(6540),i=n(1513),l=n(8168),s=n(8587),u=n(1561),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;ax,Ix:()=>v,W6:()=>P,XZ:()=>b,dO:()=>j,qh:()=>S,zy:()=>N});var r=n(7387),a=n(6540),o=n(5556),i=n.n(o),l=n(1513),s=n(1561),u=n(8168),c=n(5302),d=n.n(c),f=(n(4363),n(8587)),p=(n(4146),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i>>1,a=e[r];if(!(0>>1;ro(s,n))uo(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(uo(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,p=3,m=!1,g=!1,h=!1,y=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function x(e){if(h=!1,k(e),!g)if(null!==r(u))g=!0,E||(E=!0,S());else{var t=r(c);null!==t&&N(x,t.startTime-e)}}var S,E=!1,_=-1,A=5,C=-1;function T(){return!!y||!(t.unstable_now()-Ce&&T());){var i=f.callback;if("function"==typeof i){f.callback=null,p=f.priorityLevel;var l=i(f.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){f.callback=l,k(e),n=!0;break t}f===r(u)&&a(u),k(e)}else a(u);f=r(u)}if(null!==f)n=!0;else{var s=r(c);null!==s&&N(x,s.startTime-e),n=!1}}break e}finally{f=null,p=o,m=!1}n=void 0}}finally{n?S():E=!1}}}if("function"==typeof w)S=function(){w(j)};else if("undefined"!=typeof MessageChannel){var O=new MessageChannel,P=O.port2;O.port1.onmessage=j,S=function(){P.postMessage(null)}}else S=function(){b(j,0)};function N(e,n){_=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(h?(v(_),_=-1):h=!0,N(x,o-i))):(e.sortIndex=l,n(u,e),g||m||(g=!0,E||(E=!0,S()))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},9982(e,t,n){"use strict";e.exports=n(4477)},2833(e){e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;sr});const r={title:"HappyView",tagline:"Lexicon-driven ATProto AppView",url:"https://happyview.dev",baseUrl:"/",favicon:"img/favicon.png",onBrokenLinks:"throw",markdown:{mermaid:!0,format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1},hooks:{onBrokenMarkdownLinks:"warn",onBrokenMarkdownImages:"throw"}},themes:["@docusaurus/theme-mermaid"],i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{path:"docs",routeBasePath:"/",sidebarPath:"./sidebars.ts"},blog:!1,theme:{}}]],themeConfig:{image:"img/og.png",navbar:{title:"",logo:{alt:"HappyView",src:"img/logo.light.png",srcDark:"img/logo.dark.png"},items:[{type:"docSidebar",sidebarId:"docs",position:"left",label:"Docs"},{href:"https://github.com/gamesgamesgamesgamesgames/happyview",label:"GitHub",position:"right"}],hideOnScroll:!1},prism:{additionalLanguages:["lua"],theme:{plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},footer:{copyright:"Copyright \xa9 2026 [Birbhouse Games](https://birb.house).",style:"light",links:[]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},baseUrlIssueBanner:!0,future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},3845(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{A:()=>a})},8168(e,t,n){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tr})},7387(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(3662);function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,r.A)(e,t)}},8587(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},3662(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{A:()=>r})},8634(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{A:()=>o});var a=n(3662);function o(){o=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,o){var i=RegExp(e,r);return t.set(i,o||t.get(e)),(0,a.A)(i,n.prototype)}function i(e,n){var r=t.get(n);return Object.keys(r).reduce(function(t,n){var a=r[n];if("number"==typeof a)t[n]=e[a];else{for(var o=0;void 0===e[a[o]]&&o+1]+)(>|$)/g,function(e,t,n){if(""===n)return e;var r=o[t];return Array.isArray(r)?"$"+r.join("$"):"number"==typeof r?"$"+r:""}))}if("function"==typeof a){var l=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=r(e[e.length-1])&&(e=[].slice.call(e)).push(i(e,l)),a.apply(this,e)})}return e[Symbol.replace].call(this,n,a)},o.apply(this,arguments)}},4164(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;ta});const a=function(){for(var e,t,n=0,a="",o=arguments.length;nC,f4:()=>ne});var r,a,o,i,l,s,u,c=n(6540),d=n(4164),f=Object.create,p=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,h(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,A=1;if(b){if(!(_=o(k,S,e,y))||_.index>=e.length)break;var C=_.index,T=_.index+_[0].length,j=S;for(j+=x.value.length;C>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof a)continue;for(var O=x;O!==t.tail&&(jd.reach&&(d.reach=R);var I=x.prev;if(N&&(I=s(t,I,N),S+=N.length),u(t,I,A),x=s(t,I,new a(f,h?r.tokenize(P,h):P,v,P)),L&&s(t,x,L),A>1){var F={cause:f+","+m,reach:R};i(e,t,n,x.prev,S,F),d&&F.reach>d.reach&&(d.reach=F.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(A());C.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n}).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o=d.length)return;var i,s,f,p,m,g,h,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=g.substring(0,h),m=c[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(m,p)).length&&((f=[1,1]).push.apply(f,l(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,m),p=g.substring(h+i.length),m=[],s&&m.push(s),m.push(f),p&&(t(g=[p]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(m)),o+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(//g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,function(){return n}).replace(//g,function(){return r}).replace(//g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>O,github:()=>P,gruvboxMaterialDark:()=>Q,gruvboxMaterialLight:()=>Y,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>N,nightOwlLight:()=>L,oceanicNext:()=>F,okaidia:()=>D,oneDark:()=>q,oneLight:()=>G,palenight:()=>z,shadesOfPurple:()=>M,synthwave84:()=>B,ultramin:()=>U,vsDark:()=>$,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},O={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},P={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},N={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",F={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},z={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},M={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},U={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},$={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},q={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},G={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},Y={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},K=/\r\n|\r|\n/,Z=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},X=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)0?u:["plain"],e=c):(u=X(u,c.type),c.alias&&(u=X(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(K),f=d.length;l.push({types:u,content:d[0]});for(let t=1;t{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=S(S({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),l=(e=>(0,c.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l},[e]))(i),s=(e=>{const t=(0,c.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,c.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l},[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>(0,c.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ne=e=>(0,c.createElement)(te,E(S({},e),{prism:e.prism||C,theme:e.theme||$,code:e.code,language:e.language}))},1561(e,t,n){"use strict";n.d(t,{A:()=>a});var r="Invariant failed";function a(e,t){if(!e)throw new Error(r)}},1635(e,t,n){"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>o,__asyncDelegator:()=>_,__asyncGenerator:()=>E,__asyncValues:()=>A,__await:()=>S,__awaiter:()=>m,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>R,__classPrivateFieldSet:()=>L,__createBinding:()=>h,__decorate:()=>l,__disposeResources:()=>D,__esDecorate:()=>u,__exportStar:()=>y,__extends:()=>a,__generator:()=>g,__importDefault:()=>P,__importStar:()=>O,__makeTemplateObject:()=>C,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>z,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>x,__spreadArrays:()=>k,__values:()=>b,default:()=>M});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var m={};for(var g in r)m[g]="access"===g?{}:r[g];for(var g in r.access)m.access[g]=r.access[g];m.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var h=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],m);if("accessor"===s){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(l=i(h.get))&&(d.get=l),(l=i(h.set))&&(d.set=l),(l=i(h.init))&&a.unshift(l)}else(l=i(h))&&("field"===s?a.unshift(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a0&&a[a.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t1||l(e,t)})},t&&(r[e]=t(r[e])))}function l(e,t){try{(n=a[e](t)).value instanceof S?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:S(e[r](t)),done:!1}:a?a(t):t}:a}}function A(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},j=function(e){return j=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},j(e)};function O(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=j(e),r=0;r{e.O(0,[1869],()=>{return t=8600,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/assets/js/main.b60bf66c.js.LICENSE.txt b/assets/js/main.6a50479b.js.LICENSE.txt similarity index 100% rename from assets/js/main.b60bf66c.js.LICENSE.txt rename to assets/js/main.6a50479b.js.LICENSE.txt diff --git a/assets/js/main.b60bf66c.js b/assets/js/main.b60bf66c.js deleted file mode 100644 index 159c899..0000000 --- a/assets/js/main.b60bf66c.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.b60bf66c.js.LICENSE.txt */ -(self.webpackChunkhappyview_docs=self.webpackChunkhappyview_docs||[]).push([[8792],{8328(e,t,n){"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"009f1e98":[function(){return n.e(7715).then(n.bind(n,3511))},"@site/docs/getting-started/configuration.md",3511],"111eee19":[function(){return n.e(8779).then(n.bind(n,9071))},"@site/docs/reference/troubleshooting.md",9071],"121e86a6":[function(){return n.e(5011).then(n.bind(n,7544))},"@site/docs/reference/scripts/get-record.md",7544],17896441:[function(){return Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,1527))},"@theme/DocItem",1527],"22dd74f7":[function(){return n.e(1567).then(n.t.bind(n,5226,19))},"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",5226],"23374ca6":[function(){return n.e(2278).then(n.bind(n,7403))},"@site/docs/README.md",7403],"280f48ec":[function(){return n.e(787).then(n.bind(n,4796))},"@site/docs/reference/scripts/sidecar-records.md",4796],"2d1b556d":[function(){return n.e(1952).then(n.bind(n,8385))},"@site/docs/reference/scripts/algolia-sync.md",8385],"2df7fd65":[function(){return n.e(1977).then(n.bind(n,853))},"@site/docs/guides/event-logs.md",853],"33ec3d65":[function(){return n.e(6803).then(n.bind(n,6974))},"@site/docs/reference/architecture.md",6974],"3d80a749":[function(){return n.e(5219).then(n.bind(n,6755))},"@site/docs/reference/changelog.md",6755],"43880f7a":[function(){return n.e(6590).then(n.bind(n,1572))},"@site/docs/reference/scripts/create-record.md",1572],"539fb2af":[function(){return n.e(5563).then(n.bind(n,8289))},"@site/docs/getting-started/dashboard.md",8289],"5d3a5990":[function(){return n.e(3197).then(n.bind(n,7825))},"@site/docs/reference/scripts/expanded-query.md",7825],"5e95c892":[function(){return n.e(9647).then(n.bind(n,7121))},"@theme/DocsRoot",7121],"5fd2dbdb":[function(){return n.e(4440).then(n.bind(n,6395))},"@site/docs/tutorials/statusphere.md",6395],"6acefe75":[function(){return n.e(6495).then(n.bind(n,1438))},"@site/docs/reference/scripts/update-or-delete.md",1438],"774696b9":[function(){return n.e(8865).then(n.bind(n,8158))},"@site/docs/guides/index-hooks.md",8158],"846656e5":[function(){return n.e(9492).then(n.bind(n,5231))},"@site/docs/reference/glossary.md",5231],"89877b86":[function(){return n.e(7520).then(n.bind(n,2749))},"@site/docs/getting-started/deployment/docker.md",2749],"919abb94":[function(){return n.e(20).then(n.bind(n,521))},"@site/docs/reference/scripts/upsert-record.md",521],"920ba7ef":[function(){return n.e(5953).then(n.bind(n,1189))},"@site/docs/guides/scripting.md",1189],"9985d6d5":[function(){return n.e(203).then(n.bind(n,2223))},"@site/docs/getting-started/deployment/railway.md",2223],a4086a70:[function(){return n.e(7194).then(n.bind(n,9297))},"@site/docs/reference/scripts/batch-save.md",9297],a51dfc20:[function(){return n.e(8897).then(n.bind(n,4783))},"@site/docs/reference/xrpc-api.md",4783],a77ba7fa:[function(){return n.e(6087).then(n.bind(n,6494))},"@site/docs/getting-started/authentication.md",6494],a7bd4aaa:[function(){return n.e(7098).then(n.bind(n,1723))},"@theme/DocVersionRoot",1723],a94703ab:[function(){return Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,8115))},"@theme/DocRoot",8115],aba21aa0:[function(){return n.e(5742).then(n.t.bind(n,7093,19))},"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],b27c7406:[function(){return n.e(2618).then(n.bind(n,537))},"@site/docs/getting-started/deployment/other.md",537],bccc5e9b:[function(){return n.e(2431).then(n.bind(n,9641))},"@site/docs/guides/backfill.md",9641],bde15bec:[function(){return n.e(6438).then(n.bind(n,8796))},"@site/docs/reference/scripts/complex-mutations.md",8796],c985d368:[function(){return n.e(2007).then(n.bind(n,4436))},"@site/docs/reference/scripts/cascading-delete.md",4436],d2e94323:[function(){return n.e(3993).then(n.bind(n,7791))},"@site/docs/guides/lexicons.md",7791],e8644baa:[function(){return n.e(9178).then(n.bind(n,8525))},"@site/docs/reference/scripts/paginated-list.md",8525],ec125a10:[function(){return n.e(9659).then(n.bind(n,2192))},"@site/docs/reference/admin-api.md",2192],f142c65c:[function(){return n.e(9957).then(n.bind(n,9573))},"@site/docs/reference/scripts/list-or-fetch.md",9573],fac68122:[function(){return n.e(5986).then(n.bind(n,4924))},"@site/docs/reference/production-deployment.md",4924],fbd7a87c:[function(){return n.e(1361).then(n.bind(n,8594))},"@site/docs/getting-started/quickstart.md",8594]};var l=n(4848);function s(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(6921),c=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:function(){return n.e(2237).then(n.bind(n,2237))},modules:["@theme/NotFound"],webpack:function(){return[2237]},render:function(e,t){var n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,Object.assign({},t))})}});var r=o[e+"-"+t],d={},f=[],p=[],m=(0,u.A)(r);return Object.entries(m).forEach(function(e){var t=e[0],n=e[1],r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))}),a().Map({loading:s,loader:d,modules:f,webpack:function(){return p},render:function(t,n){var a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach(function(t){var n=t[0],r=t[1],o=r.default;if(!o)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter(function(e){return"default"!==e}).forEach(function(e){o[e]=r[e]});var i=a,l=n.split(".");l.slice(0,-1).forEach(function(e){i=i[e]}),i[l[l.length-1]]=o});var o=a.__comp;delete a.__comp;var i=a.__context;delete a.__context;var s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,Object.assign({},a,s,n))})}})}const f=[{path:"/",component:d("/","687"),routes:[{path:"/",component:d("/","12e"),routes:[{path:"/",component:d("/","329"),routes:[{path:"/getting-started/authentication",component:d("/getting-started/authentication","fd3"),exact:!0,sidebar:"docs"},{path:"/getting-started/configuration",component:d("/getting-started/configuration","641"),exact:!0,sidebar:"docs"},{path:"/getting-started/dashboard",component:d("/getting-started/dashboard","889"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/docker",component:d("/getting-started/deployment/docker","d4f"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/other",component:d("/getting-started/deployment/other","a50"),exact:!0,sidebar:"docs"},{path:"/getting-started/deployment/railway",component:d("/getting-started/deployment/railway","d15"),exact:!0,sidebar:"docs"},{path:"/getting-started/quickstart",component:d("/getting-started/quickstart","c60"),exact:!0,sidebar:"docs"},{path:"/guides/backfill",component:d("/guides/backfill","8e9"),exact:!0,sidebar:"docs"},{path:"/guides/event-logs",component:d("/guides/event-logs","a81"),exact:!0,sidebar:"docs"},{path:"/guides/index-hooks",component:d("/guides/index-hooks","755"),exact:!0,sidebar:"docs"},{path:"/guides/lexicons",component:d("/guides/lexicons","f9a"),exact:!0,sidebar:"docs"},{path:"/guides/scripting",component:d("/guides/scripting","259"),exact:!0,sidebar:"docs"},{path:"/reference/admin-api",component:d("/reference/admin-api","cec"),exact:!0,sidebar:"docs"},{path:"/reference/architecture",component:d("/reference/architecture","5c9"),exact:!0,sidebar:"docs"},{path:"/reference/changelog",component:d("/reference/changelog","03b"),exact:!0},{path:"/reference/glossary",component:d("/reference/glossary","aa6"),exact:!0,sidebar:"docs"},{path:"/reference/production-deployment",component:d("/reference/production-deployment","935"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/algolia-sync",component:d("/reference/scripts/algolia-sync","ae9"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/batch-save",component:d("/reference/scripts/batch-save","e3f"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/cascading-delete",component:d("/reference/scripts/cascading-delete","2dc"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/complex-mutations",component:d("/reference/scripts/complex-mutations","a45"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/create-record",component:d("/reference/scripts/create-record","d2f"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/expanded-query",component:d("/reference/scripts/expanded-query","7c6"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/get-record",component:d("/reference/scripts/get-record","5c8"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/list-or-fetch",component:d("/reference/scripts/list-or-fetch","62b"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/paginated-list",component:d("/reference/scripts/paginated-list","917"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/sidecar-records",component:d("/reference/scripts/sidecar-records","b55"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/update-or-delete",component:d("/reference/scripts/update-or-delete","d03"),exact:!0,sidebar:"docs"},{path:"/reference/scripts/upsert-record",component:d("/reference/scripts/upsert-record","279"),exact:!0,sidebar:"docs"},{path:"/reference/troubleshooting",component:d("/reference/troubleshooting","af4"),exact:!0,sidebar:"docs"},{path:"/reference/xrpc-api",component:d("/reference/xrpc-api","a2e"),exact:!0,sidebar:"docs"},{path:"/tutorials/statusphere",component:d("/tutorials/statusphere","187"),exact:!0,sidebar:"docs"},{path:"/",component:d("/","280"),exact:!0,sidebar:"docs"}]}]}]},{path:"*",component:d("*")}]},6125(e,t,n){"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848),o=r.createContext(!1);function i(e){var t=e.children,n=(0,r.useState)(!1),i=n[0],l=n[1];return(0,r.useEffect)(function(){l(!0)},[]),(0,a.jsx)(o.Provider,{value:i,children:t})}},8600(e,t,n){"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const u=[n(119),n(6134),n(6294)];var c=n(8328),d=n(6347),f=n(2831),p=n(4848);function m(e){var t=e.children;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(4563),h=function(e){return e.defaultFormatter(e)};function y(e){var t=e.children;return(0,p.jsx)(g.AL,{formatter:h,children:t})}function b(e){var t=e.children;return(0,p.jsx)(y,{children:t})}var v=n(5260),w=n(4586),k=n(6025),x=n(6342),S=n(5500),E=n(2131),_=n(4090),A=n(440),C=n(1463);function T(){var e=(0,w.A)().i18n,t=e.currentLocale,n=e.defaultLocale,r=e.localeConfigs,a=(0,E.o)(),o=r[t].htmlLang,i=function(e){return e.replace("-","_")};return(0,p.jsxs)(v.A,{children:[Object.entries(r).map(function(e){var t=e[0],n=e[1].htmlLang;return(0,p.jsx)("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)}),(0,p.jsx)("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:i(o)}),Object.values(r).filter(function(e){return o!==e.htmlLang}).map(function(e){return(0,p.jsx)("meta",{property:"og:locale:alternate",content:i(e.htmlLang)},"meta-og-"+e.htmlLang)})]})}function j(e){var t=e.permalink,n=(0,w.A)().siteConfig.url,r=function(){var e=(0,w.A)().siteConfig,t=e.url,n=e.baseUrl,r=e.trailingSlash,a=(0,d.zy)().pathname;return t+(0,A.Ks)((0,k.Ay)(a),{trailingSlash:r,baseUrl:n})}(),a=t?""+n+t:r;return(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function O(){var e=(0,w.A)().i18n.currentLocale,t=(0,x.p)(),n=t.metadata,r=t.image;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(v.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:_.w})]}),r&&(0,p.jsx)(S.be,{image:r}),(0,p.jsx)(j,{}),(0,p.jsx)(T,{}),(0,p.jsx)(C.A,{tag:"default",locale:e}),(0,p.jsx)(v.A,{children:n.map(function(e,t){return(0,p.jsx)("meta",Object.assign({},e),t)})})]})}var P=new Map;var N=n(6125),L=n(6988),R=n(7387),I=n(205);function F(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/d,l:()=>f});var r=n(6540),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"README","docs":[{"id":"getting-started/authentication","path":"/getting-started/authentication","sidebar":"docs"},{"id":"getting-started/configuration","path":"/getting-started/configuration","sidebar":"docs"},{"id":"getting-started/dashboard","path":"/getting-started/dashboard","sidebar":"docs"},{"id":"getting-started/deployment/docker","path":"/getting-started/deployment/docker","sidebar":"docs"},{"id":"getting-started/deployment/other","path":"/getting-started/deployment/other","sidebar":"docs"},{"id":"getting-started/deployment/railway","path":"/getting-started/deployment/railway","sidebar":"docs"},{"id":"getting-started/quickstart","path":"/getting-started/quickstart","sidebar":"docs"},{"id":"guides/backfill","path":"/guides/backfill","sidebar":"docs"},{"id":"guides/event-logs","path":"/guides/event-logs","sidebar":"docs"},{"id":"guides/index-hooks","path":"/guides/index-hooks","sidebar":"docs"},{"id":"guides/lexicons","path":"/guides/lexicons","sidebar":"docs"},{"id":"guides/scripting","path":"/guides/scripting","sidebar":"docs"},{"id":"README","path":"/","sidebar":"docs"},{"id":"reference/admin-api","path":"/reference/admin-api","sidebar":"docs"},{"id":"reference/architecture","path":"/reference/architecture","sidebar":"docs"},{"id":"reference/changelog","path":"/reference/changelog"},{"id":"reference/glossary","path":"/reference/glossary","sidebar":"docs"},{"id":"reference/production-deployment","path":"/reference/production-deployment","sidebar":"docs"},{"id":"reference/scripts/algolia-sync","path":"/reference/scripts/algolia-sync","sidebar":"docs"},{"id":"reference/scripts/batch-save","path":"/reference/scripts/batch-save","sidebar":"docs"},{"id":"reference/scripts/cascading-delete","path":"/reference/scripts/cascading-delete","sidebar":"docs"},{"id":"reference/scripts/complex-mutations","path":"/reference/scripts/complex-mutations","sidebar":"docs"},{"id":"reference/scripts/create-record","path":"/reference/scripts/create-record","sidebar":"docs"},{"id":"reference/scripts/expanded-query","path":"/reference/scripts/expanded-query","sidebar":"docs"},{"id":"reference/scripts/get-record","path":"/reference/scripts/get-record","sidebar":"docs"},{"id":"reference/scripts/list-or-fetch","path":"/reference/scripts/list-or-fetch","sidebar":"docs"},{"id":"reference/scripts/paginated-list","path":"/reference/scripts/paginated-list","sidebar":"docs"},{"id":"reference/scripts/sidecar-records","path":"/reference/scripts/sidecar-records","sidebar":"docs"},{"id":"reference/scripts/update-or-delete","path":"/reference/scripts/update-or-delete","sidebar":"docs"},{"id":"reference/scripts/upsert-record","path":"/reference/scripts/upsert-record","sidebar":"docs"},{"id":"reference/troubleshooting","path":"/reference/troubleshooting","sidebar":"docs"},{"id":"reference/xrpc-api","path":"/reference/xrpc-api","sidebar":"docs"},{"id":"tutorials/statusphere","path":"/tutorials/statusphere","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/","label":"Introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en","translate":false,"url":"https://happyview.dev","baseUrl":"/"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.9.2","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.9.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.9.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.9.2"},"docusaurus-plugin-svgr":{"type":"package","name":"@docusaurus/plugin-svgr","version":"3.9.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.9.2"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.9.2"}}}');var u=n(4848),c={siteConfig:a.A,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f(e){var t=e.children;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7489(e,t,n){"use strict";n.d(t,{A:()=>h});var r=n(7387),a=n(6540),o=n(8193),i=n(5260),l=n(440),s=n(9139),u=n(3102),c=n(4848);function d(e){var t=e.error,n=e.tryAgain;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(f,{error:t})]})}function f(e){var t=e.error,n=(0,l.rA)(t).map(function(e){return e.message}).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){var t=e.children;return(0,c.jsx)(u.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function m(e){var t=e.error,n=e.tryAgain;return(0,c.jsx)(p,{children:(0,c.jsxs)(h,{fallback:function(){return(0,c.jsx)(d,{error:t,tryAgain:n})},children:[(0,c.jsx)(i.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(s.A,{children:(0,c.jsx)(d,{error:t,tryAgain:n})})]})})}var g=function(e){return(0,c.jsx)(m,Object.assign({},e))},h=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:g)(a)}return null!=t?t:null},t}(a.Component)},8193(e,t,n){"use strict";n.d(t,{A:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(545),a=n(4848);function o(e){return(0,a.jsx)(r.mg,Object.assign({},e))}},8774(e,t,n){"use strict";n.d(t,{A:()=>g});var r=n(8587),a=n(6540),o=n(4625),i=n(440),l=n(4586),s=n(6654),u=n(8193),c=n(3427),d=n(6025),f=n(4848),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,g,h=e.isNavLink,y=e.to,b=e.href,v=e.activeClassName,w=e.isActive,k=e["data-noBrokenLinkCheck"],x=e.autoAddBaseUrl,S=void 0===x||x,E=(0,r.A)(e,p),_=(0,l.A)().siteConfig,A=_.trailingSlash,C=_.baseUrl,T=_.future.experimental_router,j=(0,d.hH)().withBaseUrl,O=(0,c.A)(),P=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,function(){return P.current});var N=y||b;var L,R,I=(0,s.A)(N),F=null==N?void 0:N.replace("pathname://",""),D=void 0!==F?(L=F,S&&function(e){return e.startsWith("/")}(L)?j(L):L):void 0;"hash"===T&&null!=(n=D)&&n.startsWith("./")&&(D=null==(R=D)?void 0:R.slice(1));D&&I&&(D=(0,i.Ks)(D,{trailingSlash:A,baseUrl:C}));var z=(0,a.useRef)(!1),M=h?o.k2:o.N_,B=u.A.canUseIntersectionObserver,U=(0,a.useRef)(),$=function(){z.current||null==D||(window.docusaurus.preload(D),z.current=!0)};(0,a.useEffect)(function(){return!B&&I&&u.A.canUseDOM&&null!=D&&window.docusaurus.prefetch(D),function(){B&&U.current&&U.current.disconnect()}},[U,D,B,I]);var H=null!=(m=null==(g=D)?void 0:g.startsWith("#"))&&m,V=!E.target||"_self"===E.target,W=!D||!I||!V||H&&"hash"!==T;k||!H&&W||O.collectLink(D),E.id&&O.collectAnchor(E.id);var q={};return W?(0,f.jsx)("a",Object.assign({ref:P,href:D},N&&!I&&{target:"_blank",rel:"noopener noreferrer"},E,q)):(0,f.jsx)(M,Object.assign({},E,{onMouseEnter:$,onTouchStart:$,innerRef:function(e){P.current=e,B&&e&&I&&(U.current=new window.IntersectionObserver(function(t){t.forEach(function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(U.current.unobserve(e),U.current.disconnect(),null!=D&&window.docusaurus.prefetch(D))})}),U.current.observe(e))},to:D},h&&{isActive:w,activeClassName:v},q))}const g=a.forwardRef(m)},1312(e,t,n){"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),a=n(4848);function o(e,t){var n=e.split(/(\{\w+\})/).map(function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e});return n.some(function(e){return(0,r.isValidElement)(e)})?n.map(function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e}).filter(function(e){return""!==e}):n.join("")}var i=n(2654);function l(e){var t,n,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function s(e,t){return o(l({message:e.message,id:e.id}),t)}function u(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},7065(e,t,n){"use strict";n.d(t,{W:()=>r});var r="default"},6654(e,t,n){"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},6025(e,t,n){"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),a=n(4586),o=n(6654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=e.future.experimental_router,l=(0,r.useCallback)(function(e,r){return function(e){var t=e.siteUrl,n=e.baseUrl,r=e.url,a=e.options,i=void 0===a?{}:a,l=i.forcePrependBaseUrl,s=void 0!==l&&l,u=i.absolute,c=void 0!==u&&u,d=e.router;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===d)return r.startsWith("/")?"."+r:"./"+r;if(s)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;var f=r.startsWith(n)?r:n+r.replace(/^\//,"");return c?t+f:f}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})},[n,t,i]);return{withBaseUrl:l}}function l(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},3427(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=(n(4848),r.createContext({collectAnchor:function(){},collectLink:function(){}}));function o(){return(0,r.useContext)(a)}},4586(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6988);function o(){return(0,r.useContext)(a.o)}},2303(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(6540);const a=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3102);function o(){var e=r.useContext(a.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921(e,t,n){"use strict";n.d(t,{A:()=>r});function r(e){var t={};return function e(n,r){Object.entries(n).forEach(function(n){var a,o=n[0],i=n[1],l=r?r+"."+o:o;"object"==typeof(a=i)&&a&&Object.keys(a).length>0?e(i,l):t[l]=i})}(e),t}},3102(e,t,n){"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(6540),a=n(4848),o=r.createContext(null);function i(e){var t=e.children,n=e.value,i=r.useContext(o),l=(0,r.useMemo)(function(){return function(e){var t=e.parent,n=e.value;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:i,value:n})},[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},3886(e,t,n){"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),a=n(4070),o=n(7065),i=n(6342),l=n(679),s=n(3807),u=n(4848),c=function(e){return"docs-preferred-version-"+e},d=function(e,t,n){(0,l.Wf)(c(e),{persistence:t}).set(n)},f=function(e,t){return(0,l.Wf)(c(e),{persistence:t}).get()},p=function(e,t){(0,l.Wf)(c(e),{persistence:t}).del()};var m=r.createContext(null);function g(){var e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)(function(){return Object.keys(e)},[e]),o=(0,r.useState)(function(){return function(e){return Object.fromEntries(e.map(function(e){return[e,{preferredVersionName:null}]}))}(n)}),l=o[0],s=o[1];return(0,r.useEffect)(function(){s(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map(function(e){return[e,(t=e,a=f(t,n),r[t].versions.some(function(e){return e.name===a})?{preferredVersionName:a}:(p(t,n),{preferredVersionName:null}))];var t,a}))}({allDocsData:e,versionPersistence:t,pluginIds:n}))},[e,t,n]),[l,(0,r.useMemo)(function(){return{savePreferredVersion:function(e,n){d(e,t,n),s(function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))})}}},[t])]}function h(e){var t=e.children,n=g();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){var t=e.children;return(0,u.jsx)(h,{children:t})}function b(){var e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){var t;void 0===e&&(e=o.W);var n=(0,a.ht)(e),i=b(),l=i[0],s=i[1],u=l[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find(function(e){return e.name===u}))?t:null,savePreferredVersionName:(0,r.useCallback)(function(t){s.savePreferredVersion(e,t)},[s,e])}}},609(e,t,n){"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),a=n(3807),o=n(4848),i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){var t=e.children,n=e.name,a=e.items,i=(0,r.useMemo)(function(){return n&&a?{name:n,items:a}:null},[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){var e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},4718(e,t,n){"use strict";n.d(t,{Nr:()=>p,w8:()=>g,B5:()=>S,Vd:()=>w,QB:()=>x,fW:()=>k,OF:()=>v,Y:()=>y});var r=n(3845),a=n(6540),o=n(6347),i=n(2831),l=n(4070),s=n(9169);function u(e){return Array.from(new Set(e))}var c=n(3886),d=n(3025),f=n(609);function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(var t,n=(0,r.A)(e.items);!(t=n()).done;){var a=p(t.value);if(a)return a}}(e):void 0:e.href}var m=function(e,t){return void 0!==e&&(0,s.ys)(e,t)};function g(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||function(e,t){return e.some(function(e){return g(e,t)})}(e.items,t))}function h(e,t){switch(e.type){case"category":return g(e,t)||void 0!==e.href&&!e.linkUnlisted||e.items.some(function(e){return h(e,t)});case"link":return!e.unlisted||g(e,t);default:return!0}}function y(e,t){return(0,a.useMemo)(function(){return e.filter(function(e){return h(e,t)})},[e,t])}function b(e){var t=e.sidebarItems,n=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(t){for(var a,l=(0,r.A)(t);!(a=l()).done;){var u=a.value;if("category"===u.type&&((0,s.ys)(u.href,n)||e(u.items))||"link"===u.type&&(0,s.ys)(u.href,n))return o&&"category"!==u.type||i.unshift(u),!0}return!1}(t),i}function v(){var e,t=(0,f.t)(),n=(0,o.zy)().pathname;return!1!==(null==(e=(0,l.vT)())?void 0:e.pluginData.breadcrumbs)&&t?b({sidebarItems:t.items,pathname:n}):null}function w(e){var t=(0,l.zK)(e).activeVersion,n=(0,c.g1)(e).preferredVersion,r=(0,l.r7)(e);return(0,a.useMemo)(function(){return u([t,n,r].filter(Boolean))},[t,n,r])}function k(e,t){var n=w(t);return(0,a.useMemo)(function(){var t=n.flatMap(function(e){return e.sidebars?Object.entries(e.sidebars):[]}),r=t.find(function(t){return t[0]===e});if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map(function(e){return e.name}).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map(function(e){return e[0]}).join("\n- "));return r[1]},[e,n])}function x(e,t){var n=w(t);return(0,a.useMemo)(function(){var t=n.flatMap(function(e){return e.docs}),r=t.find(function(t){return t.id===e});if(!r){if(n.flatMap(function(e){return e.draftIds}).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map(function(e){return e.name}).join(", ")+'".\nAvailable doc ids are:\n- '+u(t.map(function(e){return e.id})).join("\n- "))}return r},[e,n])}function S(e){var t=e.route,n=(0,o.zy)(),r=(0,d.r)(),a=t.routes,l=a.find(function(e){return(0,o.B6)(n.pathname,e)});if(!l)return null;var s=l.sidebar,u=s?r.docsSidebars[s]:void 0;return{docElement:(0,i.v)(a),sidebarName:s,sidebarItems:u}}},3025(e,t,n){"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),a=n(3807),o=n(4848),i=r.createContext(null);function l(e){var t=e.children,n=e.version;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){var e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},4070(e,t,n){"use strict";n.d(t,{zK:()=>g,vT:()=>f,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>p});var r=n(6347),a=n(4586),o=n(7065);function i(e,t){void 0===t&&(t={});var n=(0,a.A)().globalData[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}var l=function(e){return e.versions.find(function(e){return e.isLast})};function s(e,t){var n,a,o=function(e,t){return[].concat(e.versions).sort(function(e,t){return e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0}).find(function(e){return!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})})}(e,t),i=null==o?void 0:o.docs.find(function(e){return!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})});return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(n=i.id,a={},e.versions.forEach(function(e){e.docs.forEach(function(t){t.id===n&&(a[e.name]=t)})}),a):{}}}var u={},c=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},d=function(e){try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});var r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":" (pluginId="+e),{cause:t})}};function f(e){return void 0===e&&(e={}),function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).sort(function(e,t){return t[1].path.localeCompare(e[1].path)}).find(function(e){var n=e[1];return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})}),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map(function(e){return e.path}).join(", "));return o}(c(),(0,r.zy)().pathname,e)}function p(e){return d(e).versions}function m(e){var t=d(e);return l(t)}function g(e){return s(d(e),(0,r.zy)().pathname)}function h(e){return function(e,t){var n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(d(e),(0,r.zy)().pathname)}},6294(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout(function(){a().start()},200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},6134(e,t,n){"use strict";var r,a,o,i=n(1765),l=n(4784);r=i.My,a=l.A.themeConfig.prism.additionalLanguages,o=globalThis.Prism,globalThis.Prism=r,a.forEach(function(e){"php"===e&&n(9700),n(3890)("./prism-"+e)}),delete globalThis.Prism,void 0!==o&&(globalThis.Prism=r)},1107(e,t,n){"use strict";n.d(t,{A:()=>d});var r=n(8587),a=(n(6540),n(4164)),o=n(1312),i=n(3535),l=n(8774),s=n(3427),u=n(4848),c=["as","id"];function d(e){var t=e.as,n=e.id,d=(0,r.A)(e,c),f=(0,s.A)(),p=(0,i.v)(n);if("h1"===t||!n)return(0,u.jsx)(t,Object.assign({},d,{id:void 0}));f.collectAnchor(n);var m=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof d.children?d.children:n});return(0,u.jsxs)(t,Object.assign({},d,{className:(0,a.A)("anchor",p,d.className),id:n,children:[d.children,(0,u.jsx)(l.A,{className:"hash-link",to:"#"+n,"aria-label":m,title:m,translate:"no",children:"\u200b"})]}))}},3186(e,t,n){"use strict";n.d(t,{A:()=>i});n(6540);var r=n(1312);const a="iconExternalLink_nPIU";var o=n(4848);function i(e){var t=e.width,n=void 0===t?13.5:t,i=e.height,l=void 0===i?13.5:i;return(0,o.jsx)("svg",{width:n,height:l,"aria-label":(0,r.T)({id:"theme.IconExternalLink.ariaLabel",message:"(opens in new tab)",description:"The ARIA label for the external link icon"}),className:a,children:(0,o.jsx)("use",{href:"#theme-svg-external-link"})})}},9139(e,t,n){"use strict";n.d(t,{A:()=>Wt});var r=n(6540),a=n(4164),o=n(7489),i=n(5500),l=n(6347),s=n(1312),u=n(5062),c=n(4848),d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){var e=(0,r.useRef)(null),t=(0,l.W6)().action,n=(0,r.useCallback)(function(e){e.preventDefault();var t,n=null!=(t=document.querySelector("main:first-of-type"))?t:document.getElementById(d);n&&f(n)},[]);return(0,u.$)(function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&f(e.current)}),{containerRef:e,onClick:n}}var m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){var t,n=null!=(t=e.children)?t:m,r=p(),a=r.containerRef,o=r.onClick;return(0,c.jsx)("div",{ref:a,role:"region","aria-label":m,children:(0,c.jsx)("a",Object.assign({},e,{href:"#"+d,onClick:o,children:n}))})}var h=n(7559),y=n(4090);const b="skipToContent_fXgn";function v(){return(0,c.jsx)(g,{className:b})}var w=n(6342),k=n(5041),x=n(8587),S=["width","height","color","strokeWidth","className"];function E(e){var t=e.width,n=void 0===t?21:t,r=e.height,a=void 0===r?21:r,o=e.color,i=void 0===o?"currentColor":o,l=e.strokeWidth,s=void 0===l?1.2:l,u=(e.className,(0,x.A)(e,S));return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 15 15",width:n,height:a},u,{children:(0,c.jsx)("g",{stroke:i,strokeWidth:s,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})}))}const _="closeButton_CVFx";function A(e){return(0,c.jsx)("button",Object.assign({type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.A)("clean-btn close",_,e.className),children:(0,c.jsx)(E,{width:14,height:14,strokeWidth:3.1})}))}const C="content_knG7";function T(e){var t=(0,w.p)().announcementBar.content;return(0,c.jsx)("div",Object.assign({},e,{className:(0,a.A)(C,e.className),dangerouslySetInnerHTML:{__html:t}}))}const j="announcementBar_mb4j",O="announcementBarPlaceholder_vyr4",P="announcementBarClose_gvF7",N="announcementBarContent_xLdY";function L(){var e=(0,w.p)().announcementBar,t=(0,k.M)(),n=t.isActive,r=t.close;if(!n)return null;var o=e.backgroundColor,i=e.textColor,l=e.isCloseable;return(0,c.jsxs)("div",{className:(0,a.A)(h.G.announcementBar.container,j),style:{backgroundColor:o,color:i},role:"banner",children:[l&&(0,c.jsx)("div",{className:O}),(0,c.jsx)(T,{className:N}),l&&(0,c.jsx)(A,{onClick:r,className:P})]})}var R=n(2069),I=n(3104);var F=n(3807),D=n(5600),z=r.createContext(null);function M(e){var t,n,a,o,i,l,s,u=e.children,d=(t=(0,R.M)(),n=(0,D.YL)(),a=(0,r.useState)(!1),o=a[0],i=a[1],l=null!==n.component,s=(0,F.ZC)(l),(0,r.useEffect)(function(){l&&!s&&i(!0)},[l,s]),(0,r.useEffect)(function(){l?t.shown||i(!0):i(!1)},[t.shown,l]),(0,r.useMemo)(function(){return[o,i]},[o]));return(0,c.jsx)(z.Provider,{value:d,children:u})}function B(e){if(e.component){var t=e.component;return(0,c.jsx)(t,Object.assign({},e.props))}}function U(){var e=(0,r.useContext)(z);if(!e)throw new F.dV("NavbarSecondaryMenuDisplayProvider");var t=e[0],n=e[1],a=(0,r.useCallback)(function(){return n(!1)},[n]),o=(0,D.YL)();return(0,r.useMemo)(function(){return{shown:t,hide:a,content:B(o)}},[a,o,t])}function $(e){var t=e.children,n=e.inert;return(0,c.jsx)("div",Object.assign({className:(0,a.A)(h.G.layout.navbar.mobileSidebar.panel,"navbar-sidebar__item menu")},function(e){return parseInt(r.version.split(".")[0],10)<19?{inert:e?"":void 0}:{inert:e}}(n),{children:t}))}function H(e){var t=e.header,n=e.primaryMenu,r=e.secondaryMenu,o=U().shown;return(0,c.jsxs)("div",{className:(0,a.A)(h.G.layout.navbar.mobileSidebar.container,"navbar-sidebar"),children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)($,{inert:o,children:n}),(0,c.jsx)($,{inert:!o,children:r})]})]})}var V=n(5293),W=n(2303);function q(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})}))}function G(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})}))}function Q(e){return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,c.jsx)("path",{fill:"currentColor",d:"m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"})}))}const Y="toggle_vylO",K="toggleButton_gllP",Z="toggleIcon_g3eP",X="systemToggleIcon_QzmC",J="lightToggleIcon_pyhR",ee="darkToggleIcon_wfgR",te="toggleButtonDisabled_aARS";function ne(e){switch(e){case null:return(0,s.T)({message:"system mode",id:"theme.colorToggle.ariaLabel.mode.system",description:"The name for the system color mode"});case"light":return(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"});case"dark":return(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"});default:throw new Error("unexpected color mode "+e)}}function re(e){return(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the color mode toggle"},{mode:ne(e)})}function ae(){return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(q,{"aria-hidden":!0,className:(0,a.A)(Z,J)}),(0,c.jsx)(G,{"aria-hidden":!0,className:(0,a.A)(Z,ee)}),(0,c.jsx)(Q,{"aria-hidden":!0,className:(0,a.A)(Z,X)})]})}function oe(e){var t=e.className,n=e.buttonClassName,r=e.respectPrefersColorScheme,o=e.value,i=e.onChange,l=(0,W.A)();return(0,c.jsx)("div",{className:(0,a.A)(Y,t),children:(0,c.jsx)("button",{className:(0,a.A)("clean-btn",K,!l&&te,n),type:"button",onClick:function(){return i(function(e,t){if(!t)return"dark"===e?"light":"dark";switch(e){case null:return"light";case"light":return"dark";case"dark":return null;default:throw new Error("unexpected color mode "+e)}}(o,r))},disabled:!l,title:ne(o),"aria-label":re(o),children:(0,c.jsx)(ae,{})})})}const ie=r.memo(oe),le="darkNavbarColorModeToggle_X3D1";function se(e){var t=e.className,n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode,a=r.disableSwitch,o=r.respectPrefersColorScheme,i=(0,V.G)(),l=i.colorModeChoice,s=i.setColorMode;return a?null:(0,c.jsx)(ie,{className:t,buttonClassName:"dark"===n?le:void 0,respectPrefersColorScheme:o,value:l,onChange:s})}var ue=n(3465);function ce(){return(0,c.jsx)(ue.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function de(){var e=(0,R.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()},children:(0,c.jsx)(E,{color:"var(--ifm-color-emphasis-600)"})})}function fe(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(ce,{}),(0,c.jsx)(se,{className:"margin-right--md"}),(0,c.jsx)(de,{})]})}var pe=n(8774),me=n(6025),ge=n(6654);function he(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var ye=n(3186),be=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function ve(e){var t=e.activeBasePath,n=e.activeBaseRegex,r=e.to,a=e.href,o=e.label,i=e.html,l=e.isDropdownLink,s=e.prependBaseUrlToHref,u=(0,x.A)(e,be),d=(0,me.Ay)(r),f=(0,me.Ay)(t),p=(0,me.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,ge.A)(a),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,m&&(0,c.jsx)(ye.A,Object.assign({},l&&{width:12,height:12}))]})};return a?(0,c.jsx)(pe.A,Object.assign({href:s?p:a},u,g)):(0,c.jsx)(pe.A,Object.assign({to:d,isNavLink:!0},(t||n)&&{isActive:function(e,t){return n?he(n,t.pathname):t.pathname.startsWith(f)}},u,g))}var we=["className","isDropdownItem"];function ke(e){var t=e.className,n=(e.isDropdownItem,(0,x.A)(e,we));return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ve,Object.assign({className:(0,a.A)("menu__link",t)},n))})}var xe=["className","isDropdownItem"];function Se(e){var t=e.className,n=e.isDropdownItem,r=void 0!==n&&n,o=(0,x.A)(e,xe),i=(0,c.jsx)(ve,Object.assign({className:(0,a.A)(r?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:r},o));return r?(0,c.jsx)("li",{children:i}):i}var Ee=["mobile","position"];function _e(e){var t,n=e.mobile,r=void 0!==n&&n,a=(e.position,(0,x.A)(e,Ee)),o=r?ke:Se;return(0,c.jsx)(o,Object.assign({},a,{activeClassName:null!=(t=a.activeClassName)?t:r?"menu__link--active":"navbar__link--active"}))}var Ae=n(1422),Ce=n(9169),Te=n(4586);const je="dropdownNavbarItemMobile_J0Sd";var Oe=["items","className","position","onClick"];function Pe(e,t){return e.some(function(e){return function(e,t){return!!(0,Ce.ys)(e.to,t)||!!he(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)})}function Ne(e){var t=e.collapsed,n=e.onClick;return(0,c.jsx)("button",{"aria-label":t?(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.expandAriaLabel",message:"Expand the dropdown",description:"The ARIA label of the button to expand the mobile dropdown navbar item"}):(0,s.T)({id:"theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel",message:"Collapse the dropdown",description:"The ARIA label of the button to collapse the mobile dropdown navbar item"}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:n})}function Le(e){var t,n,o=e.items,i=e.className,s=(e.position,e.onClick),u=(0,x.A)(e,Oe),d=(n=(0,Te.A)().siteConfig.baseUrl,(0,l.zy)().pathname.replace(n,"/")),f=(0,Ce.ys)(u.to,d),p=Pe(o,d),m=function(e){var t=e.active,n=(0,Ae.u)({initialState:function(){return!t}}),a=n.collapsed,o=n.toggleCollapsed,i=n.setCollapsed;return(0,r.useEffect)(function(){t&&i(!1)},[t,i]),{collapsed:a,toggleCollapsed:o}}({active:f||p}),g=m.collapsed,h=m.toggleCollapsed,y=u.to?void 0:"#";return(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":g}),children:[(0,c.jsxs)("div",{className:(0,a.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":f}),children:[(0,c.jsx)(ve,Object.assign({role:"button",className:(0,a.A)(je,"menu__link menu__link--sublist",i),href:y},u,{onClick:function(e){"#"===y&&e.preventDefault(),h()},children:null!=(t=u.children)?t:u.label})),(0,c.jsx)(Ne,{collapsed:g,onClick:function(e){e.preventDefault(),h()}})]}),(0,c.jsx)(Ae.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:o.map(function(e,t){return(0,r.createElement)(ot,Object.assign({mobile:!0,isDropdownItem:!0,onClick:s,activeClassName:"menu__link--active"},e,{key:t}))})})]})}var Re=["items","position","className","onClick"];function Ie(e){var t,n=e.items,o=e.position,i=e.className,l=(e.onClick,(0,x.A)(e,Re)),s=(0,r.useRef)(null),u=(0,r.useState)(!1),d=u[0],f=u[1];return(0,r.useEffect)(function(){var e=function(e){s.current&&!s.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}},[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d}),children:[(0,c.jsx)(ve,Object.assign({"aria-haspopup":"true","aria-expanded":d,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",i)},l,{onClick:l.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(!d))},children:null!=(t=l.children)?t:l.label})),(0,c.jsx)("ul",{className:"dropdown__menu",children:n.map(function(e,t){return(0,r.createElement)(ot,Object.assign({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))})})]})}var Fe=["mobile"];function De(e){var t=e.mobile,n=void 0!==t&&t,r=(0,x.A)(e,Fe),a=n?Le:Ie;return(0,c.jsx)(a,Object.assign({},r))}var ze=n(2131),Me=n(7485),Be=["width","height"];function Ue(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=void 0===r?20:r,o=(0,x.A)(e,Be);return(0,c.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:n,height:a,"aria-hidden":!0},o,{children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})}))}const $e="iconLanguage_nlXk";var He=["mobile","dropdownItemsBefore","dropdownItemsAfter","queryString"];function Ve(){var e=(0,Te.A)(),t=e.siteConfig,n=e.i18n.localeConfigs,r=(0,ze.o)(),a=(0,Me.Hl)(function(e){return e.location.search}),o=(0,Me.Hl)(function(e){return e.location.hash}),i=function(e){var t=n[e];if(!t)throw new Error("Docusaurus bug, no locale config found for locale="+e);return t};return{getURL:function(e,n){var l=(0,Me.jy)([a,n.queryString],"append");return""+function(e){return i(e).url===t.url?"pathname://"+r.createUrl({locale:e,fullyQualified:!1}):r.createUrl({locale:e,fullyQualified:!0})}(e)+l+o},getLabel:function(e){return i(e).label},getLang:function(e){return i(e).htmlLang}}}const We=function(){return null},qe="navbarSearchContainer_Bca1";function Ge(e){var t=e.children,n=e.className;return(0,c.jsx)("div",{className:(0,a.A)(n,qe),children:t})}var Qe=n(4070),Ye=n(4718),Ke=["docId","label","docsPluginId"];var Ze=["sidebarId","label","docsPluginId"];var Xe=["label","to","docsPluginId"];var Je=n(3886),et=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter","versions"];function tt(e){var t=e.docsPluginId,n=e.configs;return function(e,t){if(t){var n=new Map(e.map(function(e){return[e.name,e]})),r=function(t,r){var a,o=n.get(t);if(!o)throw new Error("No docs version exist for name '"+t+"', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- "+e.map(function(e){return""+e.name}).join("\n- "));return{version:o,label:null!=(a=null==r?void 0:r.label)?a:o.label}};return Array.isArray(t)?t.map(function(e){return r(e,void 0)}):Object.entries(t).map(function(e){var t=e[0],n=e[1];return r(t,n)})}return e.map(function(e){return{version:e,label:e.label}})}((0,Qe.jh)(t),n)}function nt(e,t){var n;return null!=(n=t.alternateDocVersions[e.name])?n:function(e){return e.docs.find(function(t){return t.id===e.mainDocId})}(e)}const rt={default:_e,localeDropdown:function(e){var t=e.mobile,n=e.dropdownItemsBefore,r=e.dropdownItemsAfter,a=e.queryString,o=(0,x.A)(e,He),i=Ve(),l=(0,Te.A)().i18n,u=l.currentLocale,d=l.locales.map(function(e){return{label:i.getLabel(e),lang:i.getLang(e),to:i.getURL(e,{queryString:a}),target:"_self",autoAddBaseUrl:!1,className:e===u?t?"menu__link--active":"dropdown__link--active":""}}),f=[].concat(n,d,r),p=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):i.getLabel(u);return(0,c.jsx)(De,Object.assign({},o,{mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{className:$e}),p]}),items:f}))},search:function(e){var t=e.mobile,n=e.className;return t?null:(0,c.jsx)(Ge,{className:n,children:(0,c.jsx)(We,{})})},dropdown:De,html:function(e){var t=e.value,n=e.className,r=e.mobile,o=void 0!==r&&r,i=e.isDropdownItem,l=void 0!==i&&i,s=l?"li":"div";return(0,c.jsx)(s,{className:(0,a.A)({navbar__item:!o&&!l,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){var t=e.docId,n=e.label,r=e.docsPluginId,a=(0,x.A)(e,Ke),o=(0,Qe.zK)(r).activeDoc,i=(0,Ye.QB)(t,r),l=(null==o?void 0:o.path)===(null==i?void 0:i.path);return null===i||i.unlisted&&!l?null:(0,c.jsx)(_e,Object.assign({exact:!0},a,{isActive:function(){return l||!(null==o||!o.sidebar)&&o.sidebar===i.sidebar},label:null!=n?n:i.id,to:i.path}))},docSidebar:function(e){var t=e.sidebarId,n=e.label,r=e.docsPluginId,a=(0,x.A)(e,Ze),o=(0,Qe.zK)(r).activeDoc,i=(0,Ye.fW)(t,r).link;if(!i)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return(0,c.jsx)(_e,Object.assign({exact:!0},a,{isActive:function(){return(null==o?void 0:o.sidebar)===t},label:null!=n?n:i.label,to:i.path}))},docsVersion:function(e){var t=e.label,n=e.to,r=e.docsPluginId,a=(0,x.A)(e,Xe),o=(0,Ye.Vd)(r)[0],i=null!=t?t:o.label,l=null!=n?n:function(e){return e.docs.find(function(t){return t.id===e.mainDocId})}(o).path;return(0,c.jsx)(_e,Object.assign({},a,{label:i,to:l}))},docsVersionDropdown:function(e){var t=e.mobile,n=e.docsPluginId,r=e.dropdownActiveClassDisabled,a=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=e.versions,l=(0,x.A)(e,et),u=(0,Me.Hl)(function(e){return e.location.search}),d=(0,Me.Hl)(function(e){return e.location.hash}),f=(0,Qe.zK)(n),p=(0,Je.g1)(n).savePreferredVersionName,m=tt({docsPluginId:n,configs:i}),g=function(e){var t,n=e.docsPluginId,r=e.versionItems;return null!=(t=(0,Ye.Vd)(n).map(function(e){return r.find(function(t){return t.version===e})}).filter(function(e){return void 0!==e})[0])?t:r[0]}({docsPluginId:n,versionItems:m}),h=[].concat(a,m.map(function(e){var t=e.version;return{label:e.label,to:""+nt(t,f).path+u+d,isActive:function(){return t===f.activeVersion},onClick:function(){return p(t.name)}}}),o),y=t&&h.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&h.length>1?void 0:nt(g.version,f).path;return h.length<=1?(0,c.jsx)(_e,Object.assign({},l,{mobile:t,label:y,to:b,isActive:r?function(){return!1}:void 0})):(0,c.jsx)(De,Object.assign({},l,{mobile:t,label:y,to:b,items:h,isActive:r?function(){return!1}:void 0}))}};var at=["type"];function ot(e){var t=e.type,n=(0,x.A)(e,at),r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=rt[r];if(!a)throw new Error('No NavbarItem component found for type "'+t+'".');return(0,c.jsx)(a,Object.assign({},n))}function it(){var e=(0,R.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(function(t,n){return(0,r.createElement)(ot,Object.assign({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))})})}function lt(e){return(0,c.jsx)("button",Object.assign({},e,{type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})}))}function st(){var e=0===(0,w.p)().navbar.items.length,t=U();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(lt,{onClick:function(){return t.hide()}}),t.content]})}function ut(){var e,t=(0,R.M)();return void 0===(e=t.shown)&&(e=!0),(0,r.useEffect)(function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}},[e]),t.shouldRender?(0,c.jsx)(H,{header:(0,c.jsx)(fe,{}),primaryMenu:(0,c.jsx)(it,{}),secondaryMenu:(0,c.jsx)(st,{})}):null}const ct="navbarHideable_m1mJ",dt="navbarHidden_jGov";function ft(e){return(0,c.jsx)("div",Object.assign({role:"presentation"},e,{className:(0,a.A)("navbar-sidebar__backdrop",e.className)}))}function pt(e){var t=e.children,n=(0,w.p)().navbar,o=n.hideOnScroll,i=n.style,l=(0,R.M)(),d=function(e){var t=(0,r.useState)(e),n=t[0],a=t[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),l=(0,r.useCallback)(function(e){null!==e&&(i.current=e.getBoundingClientRect().height)},[]);return(0,I.Mq)(function(t,n){var r=t.scrollY;if(e)if(r=l?a(!1):r+u0&&(0,c.jsx)(Pt,{links:n}),logo:r&&(0,c.jsx)(It,{logo:r}),copyright:t&&(0,c.jsx)(Ft,{copyright:t})})}const Mt=r.memo(zt);var Bt=(0,F.fM)([V.a,k.o,I.Tv,Je.VQ,i.Jx,function(e){var t=e.children;return(0,c.jsx)(D.y_,{children:(0,c.jsx)(R.e,{children:(0,c.jsx)(M,{children:t})})})}]);function Ut(e){var t=e.children;return(0,c.jsx)(Bt,{children:t})}var $t=n(1107);function Ht(e){var t=e.error,n=e.tryAgain;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)($t.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(mt.a2,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(mt.bq,{error:t})})]})})})}const Vt="mainWrapper_z2l0";function Wt(e){var t=e.children,n=e.noFooter,r=e.wrapperClassName,l=e.title,s=e.description;return(0,y.J)(),(0,c.jsxs)(Ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(L,{}),(0,c.jsx)(xt,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(h.G.layout.main.container,h.G.wrapper.main,Vt,r),children:(0,c.jsx)(o.A,{fallback:function(e){return(0,c.jsx)(Ht,Object.assign({},e))},children:t})}),!n&&(0,c.jsx)(Mt,{})]})}},3465(e,t,n){"use strict";n.d(t,{A:()=>f});var r=n(8587),a=(n(6540),n(8774)),o=n(6025),i=n(4586),l=n(6342),s=n(1122),u=n(4848),c=["imageClassName","titleClassName"];function d(e){var t=e.logo,n=e.alt,r=e.imageClassName,a={light:(0,o.Ay)(t.src),dark:(0,o.Ay)(t.srcDark||t.src)},i=(0,u.jsx)(s.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,u.jsx)("div",{className:r,children:i}):i}function f(e){var t,n=(0,i.A)().siteConfig.title,s=(0,l.p)().navbar,f=s.title,p=s.logo,m=e.imageClassName,g=e.titleClassName,h=(0,r.A)(e,c),y=(0,o.Ay)((null==p?void 0:p.href)||"/"),b=f?"":n,v=null!=(t=null==p?void 0:p.alt)?t:b;return(0,u.jsxs)(a.A,Object.assign({to:y},h,(null==p?void 0:p.target)&&{target:p.target},{children:[p&&(0,u.jsx)(d,{logo:p,alt:v,imageClassName:m}),null!=f&&(0,u.jsx)("b",{className:g,children:f})]}))}},1463(e,t,n){"use strict";n.d(t,{A:()=>o});n(6540);var r=n(5260),a=n(4848);function o(e){var t=e.locale,n=e.version,o=e.tag,i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1122(e,t,n){"use strict";n.d(t,{A:()=>f});var r=n(8587),a=n(6540),o=n(4164),i=n(2303),l=n(5293);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var u=n(4848);function c(e){var t=e.className,n=e.children,r=(0,i.A)(),c=(0,l.G)().colorMode;return(0,u.jsx)(u.Fragment,{children:(r?"dark"===c?["dark"]:["light"]:["light","dark"]).map(function(e){var r=n({theme:e,className:(0,o.A)(t,s.themedComponent,s["themedComponent--"+e])});return(0,u.jsx)(a.Fragment,{children:r},e)})})}var d=["sources","className","alt"];function f(e){var t=e.sources,n=e.className,a=e.alt,o=(0,r.A)(e,d);return(0,u.jsx)(c,{className:n,children:function(e){var n=e.theme,r=e.className;return(0,u.jsx)("img",Object.assign({src:t[n],alt:a,className:r},o))}})}},1422(e,t,n){"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(8587),a=n(6540),o=n(205),i=n(3109),l=n(4848),s=["collapsed"],u=["lazy"];function c(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)(function(){o(function(e){return!e})},[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var d={display:"none",overflow:"hidden",height:"0px"},f={display:"block",overflow:"visible",height:"auto"};function p(e,t){var n=t?d:f;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function m(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)(function(){var e,a=t.current;function l(){var e,t,n=a.scrollHeight,o=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,i.O)())return 1;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!=(t=null==r?void 0:r.easing)?t:"ease-in-out"),height:n+"px"}}function s(){var e=l();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return p(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame(function(){n?(s(),requestAnimationFrame(function(){a.style.height=d.height,a.style.overflow=d.overflow})):(a.style.display="block",requestAnimationFrame(function(){s()}))}),function(){return cancelAnimationFrame(e)}},[t,n,r])}function g(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,s=e.onCollapseTransitionEnd,u=e.className,c=(0,a.useRef)(null);return m({collapsibleRef:c,collapsed:r,animation:i}),(0,l.jsx)(n,{ref:c,onTransitionEnd:function(e){"height"===e.propertyName&&(p(c.current,r),null==s||s(r))},className:u,children:o})}function h(e){var t=e.collapsed,n=(0,r.A)(e,s),i=(0,a.useState)(!t),u=i[0],c=i[1],d=(0,a.useState)(t),f=d[0],p=d[1];return(0,o.A)(function(){t||c(!0)},[t]),(0,o.A)(function(){u&&p(t)},[u,t]),u?(0,l.jsx)(g,Object.assign({},n,{collapsed:f})):null}function y(e){var t=e.lazy,n=(0,r.A)(e,u),a=t?h:g;return(0,l.jsx)(a,Object.assign({},n))}},5041(e,t,n){"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),a=n(2303),o=n(679),i=n(3807),l=n(6342),s=n(4848),u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=function(){return"true"===u.get()},f=function(e){return u.set(String(e))},p=r.createContext(null);function m(e){var t=e.children,n=function(){var e=(0,l.p)().announcementBar,t=(0,a.A)(),n=(0,r.useState)(function(){return!!t&&d()}),o=n[0],i=n[1];(0,r.useEffect)(function(){i(d())},[]);var s=(0,r.useCallback)(function(){f(!0),i(!0)},[]);return(0,r.useEffect)(function(){if(e){var t=e.id,n=c.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;c.set(t),r&&f(!1),!r&&d()||i(!1)}},[e]),(0,r.useMemo)(function(){return{isActive:!!e&&!o,close:s}},[e,o,s])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function g(){var e=(0,r.useContext)(p);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293(e,t,n){"use strict";n.d(t,{G:()=>x,a:()=>k});var r=n(6540),a=n(2303),o=n(3807),i=n(679),l=n(6342),s=n(4848);function u(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function c(e){return t="(prefers-color-scheme: dark)",n=function(){return e(u())},(r=window.matchMedia(t)).addEventListener("change",n),function(){return r.removeEventListener("change",n)};var t,n,r}var d=r.createContext(void 0),f=(0,i.Wf)("theme"),p="system",m=function(e){return"dark"===e?"dark":"light"},g=function(e){return null===e||e===p?null:m(e)},h=function(){return m(document.documentElement.getAttribute("data-theme"))},y=function(e){document.documentElement.setAttribute("data-theme",m(e))},b=function(){return g(document.documentElement.getAttribute("data-theme-choice"))},v=function(e){var t;document.documentElement.setAttribute("data-theme-choice",null!=(t=g(e))?t:p)};function w(){var e=(0,l.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,o=e.respectPrefersColorScheme,i=function(){var e=(0,l.p)().colorMode.defaultMode,t=(0,a.A)(),n=(0,r.useState)(t?h():e),o=n[0],i=n[1],s=(0,r.useState)(t?b():null),u=s[0],c=s[1];return(0,r.useEffect)(function(){i(h()),c(b())},[]),{colorMode:o,setColorModeState:i,colorModeChoice:u,setColorModeChoiceState:c}}(),s=i.colorMode,d=i.setColorModeState,p=i.colorModeChoice,w=i.setColorModeChoiceState;(0,r.useEffect)(function(){n&&f.del()},[n]);var k=(0,r.useCallback)(function(e,n){void 0===n&&(n={});var r=n.persist,a=void 0===r||r;if(null===e){var i=o?u():t;y(i),d(i),v(null),w(null)}else y(e),v(e),d(e),w(e);a&&function(e){null===e?f.del():f.set(m(e))}(e)},[d,w,o,t]);return(0,r.useEffect)(function(){return f.listen(function(e){k(g(e.newValue))})},[k]),(0,r.useEffect)(function(){if(null===p&&o)return c(function(e){d(e),y(e)})},[o,p,d]),(0,r.useMemo)(function(){return{colorMode:s,colorModeChoice:p,setColorMode:k,get isDarkTheme(){return"dark"===s},setLightTheme:function(){k("light")},setDarkTheme:function(){k("dark")}}},[s,p,k])}function k(e){var t=e.children,n=w();return(0,s.jsx)(d.Provider,{value:n,children:t})}function x(){var e=(0,r.useContext)(d);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},2069(e,t,n){"use strict";n.d(t,{M:()=>m,e:()=>p});var r=n(6540),a=n(5600),o=n(4581),i=n(7485),l=n(6342),s=n(3807),u=n(4848),c=r.createContext(void 0);function d(){var e,t=(e=(0,a.YL)(),0===(0,l.p)().navbar.items.length&&!e.component),n=(0,o.l)(),i=!t&&"mobile"===n,s=(0,r.useState)(!1),u=s[0],c=s[1],d=(0,r.useCallback)(function(){c(function(e){return!e})},[]);return(0,r.useEffect)(function(){"desktop"===n&&c(!1)},[n]),(0,r.useMemo)(function(){return{disabled:t,shouldRender:i,toggle:d,shown:u}},[t,i,d,u])}function f(e){var t=e.handler;return(0,i.$Z)(t),null}function p(e){var t=e.children,n=d();return(0,u.jsxs)(u.Fragment,{children:[n.shown&&(0,u.jsx)(f,{handler:function(){return n.toggle(),!1}}),(0,u.jsx)(c.Provider,{value:n,children:t})]})}function m(){var e=r.useContext(c);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600(e,t,n){"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),a=n(3807),o=n(4848),i=r.createContext(null);function l(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){var e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){var t=e.component,n=e.props,o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");var l=o[1],s=(0,a.Be)(n);return(0,r.useEffect)(function(){l({component:t,props:s})},[l,t,s]),(0,r.useEffect)(function(){return function(){return l({component:null,props:null})}},[l]),null}},4090(e,t,n){"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(6540),a="navigation-with-keyboard";function o(){(0,r.useEffect)(function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}},[])}},4581(e,t,n){"use strict";n.d(t,{l:()=>l});var r=n(6540),a=n(8193),o="desktop",i="mobile";function l(e){var t=(void 0===e?{}:e).desktopBreakpoint,n=void 0===t?996:t,l=(0,r.useState)(function(){return"ssr"}),s=l[0],u=l[1];return(0,r.useEffect)(function(){function e(){u(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o:i}(n))}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}},[n]),s}},7559(e,t,n){"use strict";n.d(t,{G:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",admonitionType:function(e){return"theme-admonition-"+e}},announcementBar:{container:"theme-announcement-bar"},tabs:{container:"theme-tabs-container"},layout:{navbar:{container:"theme-layout-navbar",containerLeft:"theme-layout-navbar-left",containerRight:"theme-layout-navbar-right",mobileSidebar:{container:"theme-layout-navbar-sidebar",panel:"theme-layout-navbar-sidebar-panel"}},main:{container:"theme-layout-main"},footer:{container:"theme-layout-footer",column:"theme-layout-footer-column"}},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109(e,t,n){"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3535(e,t,n){"use strict";n.d(t,{v:()=>i});var r=n(6342);const a="anchorTargetStickyNavbar_Vzrq",o="anchorTargetHideOnScrollNavbar_vjPI";function i(e){var t=(0,r.p)().navbar.hideOnScroll;if(void 0!==e)return t?o:a}},2181(e,t,n){"use strict";n.d(t,{bq:()=>f,MN:()=>d,a2:()=>c,k2:()=>p});var r=n(7387),a=n(6540),o=n(1312),i=n(440);const l="errorBoundaryError_a6uf",s="errorBoundaryFallback_VBag";var u=n(4848);function c(e){return(0,u.jsx)("button",Object.assign({type:"button"},e,{children:(0,u.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})}))}function d(e){var t=e.error,n=e.tryAgain;return(0,u.jsxs)("div",{className:s,children:[(0,u.jsx)("p",{children:t.message}),(0,u.jsx)(c,{onClick:n})]})}function f(e){var t=e.error,n=(0,i.rA)(t).map(function(e){return e.message}).join("\n\nCause:\n");return(0,u.jsx)("p",{className:l,children:n})}var p=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e,t){throw this.props.onError(e,t)},n.render=function(){return this.props.children},t}(a.Component)},7485(e,t,n){"use strict";n.d(t,{$Z:()=>l,Hl:()=>s,jy:()=>u});var r=n(3845),a=n(6540),o=n(6347),i=n(3807);function l(e){!function(e){var t=(0,o.W6)(),n=(0,i._q)(e);(0,a.useEffect)(function(){return t.block(function(e,t){return n(e,t)})},[t,n])}(function(t,n){if("POP"===n)return e(t,n)})}function s(e){var t=(0,o.W6)();return(0,a.useSyncExternalStore)(t.listen,function(){return e(t)},function(){return e(Object.assign({},t,{location:Object.assign({},t.location,{search:"",hash:"",state:void 0})}))})}function u(e,t){var n=function(e,t){for(var n,a=new URLSearchParams,o=(0,r.A)(e);!(n=o()).done;)for(var i,l=n.value,s=(0,r.A)(l.entries());!(i=s()).done;){var u=i.value,c=u[0],d=u[1];"append"===t?a.append(c,d):a.set(c,d)}return a}(e.map(function(e){return new URLSearchParams(null!=e?e:"")}),t),a=n.toString();return a?"?"+a:a}},5500(e,t,n){"use strict";n.d(t,{Jx:()=>y,be:()=>m,e3:()=>h});var r=n(6540),a=n(4164),o=n(5260),i=n(6803),l=n(6025),s=n(4563),u=n(4848);function c(e){var t=e.title,n=(0,s.s$)().format(t);return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("title",{children:n}),(0,u.jsx)("meta",{property:"og:title",content:n})]})}function d(e){var t=e.description;return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{name:"description",content:t}),(0,u.jsx)("meta",{property:"og:description",content:t})]})}function f(e){var t=e.image,n=(0,(0,l.hH)().withBaseUrl)(t,{absolute:!0});return(0,u.jsxs)(o.A,{children:[(0,u.jsx)("meta",{property:"og:image",content:n}),(0,u.jsx)("meta",{name:"twitter:image",content:n})]})}function p(e){var t=e.keywords;return(0,u.jsx)(o.A,{children:(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(t)?t.join(","):t})})}function m(e){var t=e.title,n=e.description,r=e.keywords,a=e.image,i=e.children;return(0,u.jsxs)(u.Fragment,{children:[t&&(0,u.jsx)(c,{title:t}),n&&(0,u.jsx)(d,{description:n}),r&&(0,u.jsx)(p,{keywords:r}),a&&(0,u.jsx)(f,{image:a}),i&&(0,u.jsx)(o.A,{children:i})]})}var g=r.createContext(void 0);function h(e){var t=e.className,n=e.children,i=r.useContext(g),l=(0,a.A)(i,t);return(0,u.jsxs)(g.Provider,{value:l,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:l})}),n]})}function y(e){var t=e.children,n=(0,i.A)(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),o="plugin-id-"+n.plugin.id;return(0,u.jsx)(h,{className:(0,a.A)(r,o),children:t})}},3807(e,t,n){"use strict";n.d(t,{dV:()=>m,fM:()=>h,_q:()=>f,ZC:()=>p,Be:()=>g});var r=n(8634),a=n(7387);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=n(3662);function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(l=function(){return!!e})()}function s(e){var t="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(l())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&(0,i.A)(a,n.prototype),a}(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),(0,i.A)(n,e)},s(e)}var u=n(6540),c=n(205),d=n(4848);function f(e){var t=(0,u.useRef)(e);return(0,c.A)(function(){t.current=e},[e]),(0,u.useCallback)(function(){return t.current.apply(t,arguments)},[])}function p(e){var t=(0,u.useRef)();return(0,c.A)(function(){t.current=e}),t.current}var m=function(e){function t(t,n){var a,o,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null!=(a=null==(o=i.stack)||null==(o=o.split("\n")[1])||null==(o=o.match((0,r.A)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+t+">. "+(null!=n?n:""),i}return(0,a.A)(t,e),t}(s(Error));function g(e){var t=Object.entries(e);return t.sort(function(e,t){return e[0].localeCompare(t[0])}),(0,u.useMemo)(function(){return e},t.flat())}function h(e){return function(t){var n=t.children;return(0,d.jsx)(d.Fragment,{children:e.reduceRight(function(e,t){return(0,d.jsx)(t,{children:e})},n)})}}},9169(e,t,n){"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),a=n(8328),o=n(4586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)(function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap(function(e){var t;return null!=(t=e.routes)?t:[]}))}(e.routes)}({routes:a.A,baseUrl:e})},[e])}},3104(e,t,n){"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,gk:()=>p});var r=n(6540),a=n(8193),o=n(2303),i=(n(205),n(3807)),l=n(4848);var s=r.createContext(void 0);function u(e){var t,n=e.children,a=(t=(0,r.useRef)(!0),(0,r.useMemo)(function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}},[]));return(0,l.jsx)(s.Provider,{value:a,children:n})}function c(){var e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}var d=function(){return a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function f(e,t){void 0===t&&(t=[]);var n=c().scrollEventsEnabledRef,a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)(function(){var e=function(){if(n.current){var e=d();o(e,a.current),a.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}},[o,n].concat(t))}function p(){var e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(n){e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(n):function(e){var t=null,n=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(n&&a>e||!n&&au});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}');var a=r.N;function o(e){var t=e.key,n=e.oldValue,r=e.newValue,a=e.storage;if(n!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}var l=!1;var s={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,t){var n=""+e+r.M;if("undefined"==typeof window)return function(e){function t(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:t,set:t,del:t,listen:t}}(n);var a=i(null==t?void 0:t.persistence);return null===a?s:{get:function(){try{return a.getItem(n)}catch(e){return console.error("Docusaurus storage error, can't get key="+n,e),null}},set:function(e){try{var t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(r){console.error("Docusaurus storage error, can't set "+n+"="+e,r)}},del:function(){try{var e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(t){console.error("Docusaurus storage error, can't delete key="+n,t)}},listen:function(e){try{var t=function(t){t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),function(){return window.removeEventListener("storage",t)}}catch(r){return console.error("Docusaurus storage error, can't listen for changes of key="+n,r),function(){}}}}}},4563(e,t,n){"use strict";n.d(t,{AL:()=>c,s$:()=>d});var r=n(6540),a=n(4586),o=n(6803),i=n(3807),l=n(4848),s=function(e){var t=e.title,n=e.siteTitle,r=e.titleDelimiter,a=null==t?void 0:t.trim();return a&&a!==n?a+" "+r+" "+n:n},u=(0,r.createContext)(null);function c(e){var t=e.formatter,n=e.children;return(0,l.jsx)(u.Provider,{value:t,children:n})}function d(){var e=function(){var e=(0,r.useContext)(u);if(null===e)throw new i.dV("TitleFormatterProvider");return e}(),t=(0,a.A)().siteConfig,n=t.title,l=t.titleDelimiter,c=(0,o.A)().plugin;return{format:function(t){return e({title:t,siteTitle:n,titleDelimiter:l,plugin:c,defaultFormatter:s})}}}},2131(e,t,n){"use strict";n.d(t,{o:()=>i});var r=n(4586),a=n(6347),o=n(440);function i(){var e=(0,r.A)(),t=e.siteConfig,n=t.baseUrl,i=t.trailingSlash,l=e.i18n.localeConfigs,s=(0,a.zy)().pathname,u=(0,o.Ks)(s,{trailingSlash:i,baseUrl:n}).replace(n,"");return{createUrl:function(e){var t=e.locale,n=e.fullyQualified,r=function(e){var t=l[e];if(!t)throw new Error("Unexpected Docusaurus bug, no locale config found for locale="+e);return t}(t);return""+(""+(n?r.url:""))+r.baseUrl+u}}}},5062(e,t,n){"use strict";n.d(t,{$:()=>i});var r=n(6540),a=n(6347),o=n(3807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)(function(){n&&t!==n&&i({location:t,previousLocation:n})},[i,t,n])}},6342(e,t,n){"use strict";n.d(t,{p:()=>a});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}},2983(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var i=e.split(/[#?]/)[0],l="/"===i||i===r?i:(s=i,u=n,u?a(s):o(s));var s,u;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;var r=n(2566);function a(e){return e.endsWith("/")?e:e+"/"}function o(e){return(0,r.removeSuffix)(e,"/")}},253(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t].concat(e(t.cause));return[t]}},440(e,t,n){"use strict";t.rA=t.Ks=void 0;var r=n(1635);var a=n(2983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(2566);var i=n(253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:""+t+e},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:""+e+t},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513(e,t,n){"use strict";n.d(t,{zR:()=>w,TM:()=>A,yJ:()=>p,sC:()=>T,AO:()=>f});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter(function(e){return e!==r})}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}})},replace:function(e,t){var r="REPLACE",a=p(e,t,g(),w.location);c.confirmTransitionTo(a,r,n,function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))})},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l(function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout(function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout(function(){n.remove(),t()},c)},c)):setTimeout(t,c)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout(function(){n.status&&(n.trickle(),e())},r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always(function(){0===--t?(e=0,n.done()):n.set((e-t)/e)}),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5302(e,t,n){var r=n(4634);e.exports=g,e.exports.parse=o,e.exports.compile=function(e,t){return u(o(e,t),t)},e.exports.tokensToFunction=u,e.exports.tokensToRegExp=m;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,l=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var c=n[0],f=n[1],p=n.index;if(s+=e.slice(l,p),l=p+c.length,f)s+=f[1];else{var m=e[l],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=g||u,_=y||b,A=g||("string"==typeof r[r.length-1]?r[r.length-1]:"");r.push({name:h||o++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?d(_):w?".*":i(E,A)})}}return l-1?"[^"+c(e)+"]+?":c(t)+"|(?:(?!"+c(t)+")[^"+c(e)+"])+?"}function l(e){return encodeURI(e).replace(/[\/?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function s(e){return encodeURI(e).replace(/[?#]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function u(e,t){for(var n=new Array(e.length),a=0;a[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},9700(){!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var g=f.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(m+p.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},3890(e,t,n){var r={"./prism-lua":64};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3890},2694(e,t,n){"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556(e,t,n){e.exports=n(2694)()},6925(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1247(e,t,n){"use strict";var r=n(9982),a=n(6540),o=n(961);function i(e){var t="https://react.dev/errors/"+e;if(1z||(e.current=D[z],D[z]=null,z--)}function U(e,t){z++,D[z]=e.current,e.current=t}var $,H,V=M(null),W=M(null),q=M(null),G=M(null);function Q(e,t){switch(U(q,t),U(W,e),U(V,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?yd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bd(t=yd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}B(V),U(V,e)}function Y(){B(V),B(W),B(q)}function K(e){null!==e.memoizedState&&U(G,e);var t=V.current,n=bd(t,e.type);t!==n&&(U(W,e),U(V,n))}function Z(e){W.current===e&&(B(V),B(W)),G.current===e&&(B(G),df._currentValue=F)}function X(e){if(void 0===$)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);$=t&&t[1]||"",H=-1)":-1--a||s[r]!==u[a]){var c="\n"+s[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{J=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?X(n):""}function te(e,t){switch(e.tag){case 26:case 27:case 5:return X(e.type);case 16:return X("Lazy");case 13:return e.child!==t&&null!==t?X("Suspense Fallback"):X("Suspense");case 19:return X("SuspenseList");case 0:case 15:return ee(e.type,!1);case 11:return ee(e.type.render,!1);case 1:return ee(e.type,!0);case 31:return X("Activity");default:return""}}function ne(e){try{var t="",n=null;do{t+=te(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var re=Object.prototype.hasOwnProperty,ae=r.unstable_scheduleCallback,oe=r.unstable_cancelCallback,ie=r.unstable_shouldYield,le=r.unstable_requestPaint,se=r.unstable_now,ue=r.unstable_getCurrentPriorityLevel,ce=r.unstable_ImmediatePriority,de=r.unstable_UserBlockingPriority,fe=r.unstable_NormalPriority,pe=r.unstable_LowPriority,me=r.unstable_IdlePriority,ge=r.log,he=r.unstable_setDisableYieldValue,ye=null,be=null;function ve(e){if("function"==typeof ge&&he(e),be&&"function"==typeof be.setStrictMode)try{be.setStrictMode(ye,e)}catch(t){}}var we=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ke(e)/xe|0)|0},ke=Math.log,xe=Math.LN2;var Se=256,Ee=262144,_e=4194304;function Ae(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ce(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,o=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=134217727&r;return 0!==l?0!==(r=l&~o)?a=Ae(r):0!==(i&=l)?a=Ae(i):n||0!==(n=l&~e)&&(a=Ae(n)):0!==(l=r&~o)?a=Ae(l):0!==i?a=Ae(i):n||0!==(n=r&~e)&&(a=Ae(n)),0===a?0:0!==t&&t!==a&&0===(t&o)&&((o=a&-a)>=(n=t&-t)||32===o&&4194048&n)?t:a}function Te(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function je(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Oe(){var e=_e;return!(62914560&(_e<<=1))&&(_e=4194304),e}function Pe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ne(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Le(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-we(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function Re(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-we(n),a=1<=An),jn=String.fromCharCode(32),On=!1;function Pn(e,t){switch(e){case"keyup":return-1!==En.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Ln=!1;var Rn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function In(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Rn[e.type]:"textarea"===t}function Fn(e,t,n,r){It?Ft?Ft.push(r):Ft=[r]:It=r,0<(t=rd(t,"onChange")).length&&(n=new nn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Dn=null,zn=null;function Mn(e){Yc(e,0)}function Bn(e){if(mt(Xe(e)))return e}function Un(e,t){if("change"===e)return t}var $n=!1;if(Ut){var Hn;if(Ut){var Vn="oninput"in document;if(!Vn){var Wn=document.createElement("div");Wn.setAttribute("oninput","return;"),Vn="function"==typeof Wn.oninput}Hn=Vn}else Hn=!1;$n=Hn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=er(r)}}function nr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?nr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function rr(e){for(var t=gt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=gt((e=t.contentWindow).document)}return t}function ar(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var or=Ut&&"documentMode"in document&&11>=document.documentMode,ir=null,lr=null,sr=null,ur=!1;function cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;ur||null==ir||ir!==gt(r)||("selectionStart"in(r=ir)&&ar(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},sr&&Jn(sr,r)||(sr=r,0<(r=rd(lr,"onSelect")).length&&(t=new nn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=ir)))}function dr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var fr={animationend:dr("Animation","AnimationEnd"),animationiteration:dr("Animation","AnimationIteration"),animationstart:dr("Animation","AnimationStart"),transitionrun:dr("Transition","TransitionRun"),transitionstart:dr("Transition","TransitionStart"),transitioncancel:dr("Transition","TransitionCancel"),transitionend:dr("Transition","TransitionEnd")},pr={},mr={};function gr(e){if(pr[e])return pr[e];if(!fr[e])return e;var t,n=fr[e];for(t in n)if(n.hasOwnProperty(t)&&t in mr)return pr[e]=n[t];return e}Ut&&(mr=document.createElement("div").style,"AnimationEvent"in window||(delete fr.animationend.animation,delete fr.animationiteration.animation,delete fr.animationstart.animation),"TransitionEvent"in window||delete fr.transitionend.transition);var hr=gr("animationend"),yr=gr("animationiteration"),br=gr("animationstart"),vr=gr("transitionrun"),wr=gr("transitionstart"),kr=gr("transitioncancel"),xr=gr("transitionend"),Sr=new Map,Er="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){Sr.set(e,t),rt(t,[e])}Er.push("scrollEnd");var Ar="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Cr=[],Tr=0,jr=0;function Or(){for(var e=Tr,t=jr=Tr=0;t>=i,a-=i,na=1<<32-we(t)+a|n<g?(h=d,d=null):h=d.sibling;var y=p(a,d,l[g],s);if(null===y){null===d&&(d=h);break}e&&d&&null===y.alternate&&t(a,d),i=o(y,i,g),null===c?u=y:c.sibling=y,c=y,d=h}if(g===l.length)return n(a,d),da&&aa(a,g),u;if(null===d){for(;gh?(y=g,g=null):y=g.sibling;var v=p(a,g,b.value,u);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(a,g),l=o(v,l,h),null===d?c=v:d.sibling=v,d=v,g=y}if(b.done)return n(a,g),da&&aa(a,h),c;if(null===g){for(;!b.done;h++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,h),null===d?c=b:d.sibling=b,d=b);return da&&aa(a,h),c}for(g=r(g);!b.done;h++,b=s.next())null!==(b=m(g,a,h,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),l=o(b,l,h),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach(function(e){return t(a,e)}),da&&aa(a,h),c}(s,u,c=v.call(c),d)}if("function"==typeof c.then)return b(s,u,uo(c),d);if(c.$$typeof===k)return b(s,u,La(s,c),d);fo(s,c)}return"string"==typeof c&&""!==c||"number"==typeof c||"bigint"==typeof c?(c=""+c,null!==u&&6===u.tag?(n(s,u.sibling),(d=a(u,c)).return=s,s=d):(n(s,u),(d=Vr(c,s.mode,d)).return=s,s=d),l(s)):n(s,u)}return function(e,t,n,r){try{so=0;var a=b(e,t,n,r);return lo=null,a}catch(i){if(i===Za||i===Ja)throw i;var o=zr(29,i,null,e.mode);return o.lanes=r,o.return=e,o}}}var mo=po(!0),go=po(!1),ho=!1;function yo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function wo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&pu){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,t=Ir(e),Rr(e,null,n),t}return Pr(e,r,t,n),Ir(e)}function ko(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,Re(e,n)}}function xo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var So=!1;function Eo(){if(So){if(null!==Va)throw Va}}function _o(e,t,n,r){So=!1;var a=e.updateQueue;ho=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var f=-536870913&l.lane,m=f!==l.lane;if(m?(hu&f)===f:(r&f)===f){0!==f&&f===Ha&&(So=!0),null!==c&&(c=c.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var g=e,h=l;f=t;var y=n;switch(h.tag){case 1:if("function"==typeof(g=h.payload)){d=g.call(y,d,f);break e}d=g;break e;case 3:g.flags=-65537&g.flags|128;case 0:if(null==(f="function"==typeof(g=h.payload)?g.call(y,d,f):g))break e;d=p({},d,f);break e;case 2:ho=!0}}null!==(f=l.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=a.callbacks)?a.callbacks=[f]:m.push(f))}else m={lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=m,s=d):c=c.next=m,i|=f;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(m=l).next,m.next=null,a.lastBaseUpdate=m,a.shared.pending=null}}null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null===o&&(a.shared.lanes=0),Eu|=i,e.lanes=i,e.memoizedState=d}}function Ao(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function Co(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;eo?o:8;var i,l,s,u=R.T,c={};R.T=c,dl(e,!1,t,n);try{var d=a(),f=R.S;if(null!==f&&f(c,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)cl(e,t,(i=r,l=[],s={status:"pending",value:null,reason:null,then:function(e){l.push(e)}},d.then(function(){s.status="fulfilled",s.value=i;for(var e=0;e<\/script>",o=o.removeChild(o.firstChild);break;case"select":o="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o="string"==typeof r.is?l.createElement(a,{is:r.is}):l.createElement(a)}}o[Ue]=t,o[$e]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)o.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break e;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}t.stateNode=o;e:switch(fd(o,a,r),a){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&ls(t)}}return fs(t),ss(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&ls(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=q.current,ba(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(a=ua))switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Ue]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ud(e.nodeValue,n)))||ga(t,!0)}else(e=hd(e).createTextNode(r))[Ue]=t,t.stateNode=e}return fs(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=ba(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[Ue]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),e=!1}else n=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?(Mo(t),t):(Mo(t),null);if(128&t.flags)throw Error(i(558))}return fs(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=ba(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[Ue]=t}else va(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;fs(t),a=!1}else a=wa(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?(Mo(t),t):(Mo(t),null)}return Mo(t),128&t.flags?(t.lanes=n,t):(n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(r=t.child).alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(a=r.alternate.memoizedState.cachePool.pool),o=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),cs(t,t.updateQueue),fs(t),null);case 4:return Y(),null===e&&Jc(t.stateNode.containerInfo),fs(t),null;case 10:return Aa(t.type),fs(t),null;case 19:if(B(Bo),null===(r=t.memoizedState))return fs(t),null;if(a=!!(128&t.flags),null===(o=r.rendering))if(a)ds(r,!1);else{if(0!==Su||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(o=Uo(e))){for(t.flags|=128,ds(r,!1),e=o.updateQueue,t.updateQueue=e,cs(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Ur(n,e),n=n.sibling;return U(Bo,1&Bo.current|2),da&&aa(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&se()>Ru&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=Uo(o))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,cs(t,e),ds(r,!0),null===r.tail&&"hidden"===r.tailMode&&!o.alternate&&!da)return fs(t),null}else 2*se()-r.renderingStartTime>Ru&&536870912!==n&&(t.flags|=128,a=!0,ds(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(null!==(e=r.last)?e.sibling=o:t.child=o,r.last=o)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=se(),e.sibling=null,n=Bo.current,U(Bo,a?1&n|2:1&n),da&&aa(t,r.treeForkCount),e):(fs(t),null);case 22:case 23:return Mo(t),No(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?!!(536870912&n)&&!(128&t.flags)&&(fs(t),6&t.subtreeFlags&&(t.flags|=8192)):fs(t),null!==(n=t.updateQueue)&&cs(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&B(Ga),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Aa(za),fs(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}function ms(e,t){switch(la(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Aa(za),Y(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Z(t),null;case 31:if(null!==t.memoizedState){if(Mo(t),null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(Mo(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));va()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return B(Bo),null;case 4:return Y(),null;case 10:return Aa(t.type),null;case 22:case 23:return Mo(t),No(),null!==e&&B(Ga),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Aa(za),null;default:return null}}function gs(e,t){switch(la(t),t.tag){case 3:Aa(za),Y();break;case 26:case 27:case 5:Z(t);break;case 4:Y();break;case 31:null!==t.memoizedState&&Mo(t);break;case 13:Mo(t);break;case 19:B(Bo);break;case 10:Aa(t.type);break;case 22:case 23:Mo(t),No(),null!==e&&B(Ga);break;case 24:Aa(za)}}function hs(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var a=r.next;n=a;do{if((n.tag&e)===e){r=void 0;var o=n.create,i=n.inst;r=o(),i.destroy=r}n=n.next}while(n!==a)}}catch(l){Sc(t,t.return,l)}}function ys(e,t,n){try{var r=t.updateQueue,a=null!==r?r.lastEffect:null;if(null!==a){var o=a.next;r=o;do{if((r.tag&e)===e){var i=r.inst,l=i.destroy;if(void 0!==l){i.destroy=void 0,a=t;var s=n,u=l;try{u()}catch(c){Sc(a,s,c)}}}r=r.next}while(r!==o)}}catch(c){Sc(t,t.return,c)}}function bs(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Co(t,n)}catch(r){Sc(e,e.return,r)}}}function vs(e,t,n){n.props=Sl(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){Sc(e,t,r)}}function ws(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(a){Sc(e,t,a)}}function ks(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(a){Sc(e,t,a)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(o){Sc(e,t,o)}else n.current=null}function xs(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(a){Sc(e,e.return,a)}}function Ss(e,t,n){try{var r=e.stateNode;!function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,o=null,l=null,s=null,u=null,c=null,d=null;for(m in n){var f=n[m];if(n.hasOwnProperty(m)&&null!=f)switch(m){case"checked":case"value":break;case"defaultValue":u=f;default:r.hasOwnProperty(m)||cd(e,t,m,null,r,f)}}for(var p in r){var m=r[p];if(f=n[p],r.hasOwnProperty(p)&&(null!=m||null!=f))switch(p){case"type":o=m;break;case"name":a=m;break;case"checked":c=m;break;case"defaultChecked":d=m;break;case"value":l=m;break;case"defaultValue":s=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(i(137,t));break;default:m!==f&&cd(e,t,p,m,r,f)}}return void bt(e,l,s,u,c,d,o,a);case"select":for(o in m=l=s=p=null,n)if(u=n[o],n.hasOwnProperty(o)&&null!=u)switch(o){case"value":break;case"multiple":m=u;default:r.hasOwnProperty(o)||cd(e,t,o,null,r,u)}for(a in r)if(o=r[a],u=n[a],r.hasOwnProperty(a)&&(null!=o||null!=u))switch(a){case"value":p=o;break;case"defaultValue":s=o;break;case"multiple":l=o;default:o!==u&&cd(e,t,a,o,r,u)}return t=s,n=l,r=m,void(null!=p?kt(e,!!n,p,!1):!!r!=!!n&&(null!=t?kt(e,!!n,t,!0):kt(e,!!n,n?[]:"",!1)));case"textarea":for(s in m=p=null,n)if(a=n[s],n.hasOwnProperty(s)&&null!=a&&!r.hasOwnProperty(s))switch(s){case"value":case"children":break;default:cd(e,t,s,null,r,a)}for(l in r)if(a=r[l],o=n[l],r.hasOwnProperty(l)&&(null!=a||null!=o))switch(l){case"value":p=a;break;case"defaultValue":m=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(i(91));break;default:a!==o&&cd(e,t,l,a,r,o)}return void xt(e,p,m);case"option":for(var g in n)if(p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g))if("selected"===g)e.selected=!1;else cd(e,t,g,null,r,p);for(u in r)if(p=r[u],m=n[u],r.hasOwnProperty(u)&&p!==m&&(null!=p||null!=m))if("selected"===u)e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p;else cd(e,t,u,p,r,m);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&cd(e,t,h,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(i(137,t));break;default:cd(e,t,c,p,r,m)}return;default:if(Tt(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&dd(e,t,y,void 0,r,p);for(d in r)p=r[d],m=n[d],!r.hasOwnProperty(d)||p===m||void 0===p&&void 0===m||dd(e,t,d,p,r,m);return}}for(var b in n)p=n[b],n.hasOwnProperty(b)&&null!=p&&!r.hasOwnProperty(b)&&cd(e,t,b,null,r,p);for(f in r)p=r[f],m=n[f],!r.hasOwnProperty(f)||p===m||null==p&&null==m||cd(e,t,f,p,r,m)}(r,e.type,n,t),r[$e]=t}catch(a){Sc(e,e.return,a)}}function Es(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ad(e.type)||4===e.tag}function _s(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Es(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ad(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function As(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Nt));else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(As(e,t,n),e=e.sibling;null!==e;)As(e,t,n),e=e.sibling}function Cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ad(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Cs(e,t,n),e=e.sibling;null!==e;)Cs(e,t,n),e=e.sibling}function Ts(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,a=t.attributes;a.length;)t.removeAttributeNode(a[0]);fd(t,r,n),t[Ue]=e,t[$e]=n}catch(o){Sc(e,e.return,o)}}var js=!1,Os=!1,Ps=!1,Ns="function"==typeof WeakSet?WeakSet:Set,Ls=null;function Rs(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Qs(e,n),4&r&&hs(5,n);break;case 1:if(Qs(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(i){Sc(n,n.return,i)}else{var a=Sl(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(a,t,e.__reactInternalSnapshotBeforeUpdate)}catch(l){Sc(n,n.return,l)}}64&r&&bs(n),512&r&&ws(n,n.return);break;case 3:if(Qs(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Co(e,t)}catch(i){Sc(n,n.return,i)}}break;case 27:null===t&&4&r&&Ts(n);case 26:case 5:Qs(e,n),null===t&&4&r&&xs(n),512&r&&ws(n,n.return);break;case 12:Qs(e,n);break;case 31:Qs(e,n),4&r&&Bs(e,n);break;case 13:Qs(e,n),4&r&&Us(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Cc.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||js)){t=null!==t&&null!==t.memoizedState||Os,a=js;var o=Os;js=r,(Os=t)&&!o?Ks(e,n,!!(8772&n.subtreeFlags)):Qs(e,n),js=a,Os=o}break;case 30:break;default:Qs(e,n)}}function Is(e){var t=e.alternate;null!==t&&(e.alternate=null,Is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Ye(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Fs=null,Ds=!1;function zs(e,t,n){for(n=n.child;null!==n;)Ms(e,t,n),n=n.sibling}function Ms(e,t,n){if(be&&"function"==typeof be.onCommitFiberUnmount)try{be.onCommitFiberUnmount(ye,n)}catch(o){}switch(n.tag){case 26:Os||ks(n,t),zs(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Os||ks(n,t);var r=Fs,a=Ds;Ad(n.type)&&(Fs=n.stateNode,Ds=!1),zs(e,t,n),zd(n.stateNode),Fs=r,Ds=a;break;case 5:Os||ks(n,t);case 6:if(r=Fs,a=Ds,Fs=null,zs(e,t,n),Ds=a,null!==(Fs=r))if(Ds)try{(9===Fs.nodeType?Fs.body:"HTML"===Fs.nodeName?Fs.ownerDocument.body:Fs).removeChild(n.stateNode)}catch(i){Sc(n,t,i)}else try{Fs.removeChild(n.stateNode)}catch(i){Sc(n,t,i)}break;case 18:null!==Fs&&(Ds?(Cd(9===(e=Fs).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),Wf(e)):Cd(Fs,n.stateNode));break;case 4:r=Fs,a=Ds,Fs=n.stateNode.containerInfo,Ds=!0,zs(e,t,n),Fs=r,Ds=a;break;case 0:case 11:case 14:case 15:ys(2,n,t),Os||ys(4,n,t),zs(e,t,n);break;case 1:Os||(ks(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&vs(n,t,r)),zs(e,t,n);break;case 21:zs(e,t,n);break;case 22:Os=(r=Os)||null!==n.memoizedState,zs(e,t,n),Os=r;break;default:zs(e,t,n)}}function Bs(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{Wf(e)}catch(n){Sc(t,t.return,n)}}}function Us(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{Wf(e)}catch(n){Sc(t,t.return,n)}}function $s(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ns),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ns),t;default:throw Error(i(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Tc.bind(null,e,t);t.then(r,r)}})}function Hs(e,t){var n=t.deletions;if(null!==n)for(var r=0;r title"))),fd(o,r,n),o[Ue]=e,et(o),r=o;break e;case"link":var l=nf("link","href",a).get(r+(n.href||""));if(l)for(var s=0;sl)break;var c=s.transferSize,d=s.initiatorType;c&&pd(d)&&(i+=c*((s=s.responseEnd)of?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(a)}}:null}(d,m)))return Bu=o,e.cancelPendingCommit=m(gc.bind(null,e,t,o,n,r,a,i,l,s,c,d,null,f,p)),void Xu(e,o,i,!u)}gc(e,t,o,n,r,a,i,l,s)}function Zu(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;rh&&(i=h,h=g,g=i);var y=tr(l,g),b=tr(l,h);if(y&&b&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==b.node||p.focusOffset!==b.offset)){var v=d.createRange();v.setStart(y.node,y.offset),p.removeAllRanges(),g>h?(p.addRange(v),p.extend(b.node,b.offset)):(v.setEnd(b.node,b.offset),p.addRange(v))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof l.focus&&l.focus(),l=0;ln?32:n,R.T=null,n=$u,$u=null;var o=zu,l=Bu;if(Du=0,Mu=zu=null,Bu=0,6&pu)throw Error(i(331));var s=pu;if(pu|=4,su(o.current),eu(o,o.current,l,n),pu=s,Fc(0,!1),be&&"function"==typeof be.onPostCommitFiberRoot)try{be.onPostCommitFiberRoot(ye,o)}catch(u){}return!0}finally{I.p=a,R.T=r,vc(e,t)}}function xc(e,t,n){t=Qr(n,t),null!==(e=wo(e,t=jl(e.stateNode,t,2),2))&&(Ne(e,2),Ic(e))}function Sc(e,t,n){if(3===e.tag)xc(e,e,n);else for(;null!==t;){if(3===t.tag){xc(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Fu||!Fu.has(r))){e=Qr(n,e),null!==(r=wo(t,n=Ol(2),2))&&(Pl(n,r,t,e),Ne(r,2),Ic(r));break}}t=t.return}}function Ec(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fu;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(ku=!0,a.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function _c(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,mu===e&&(hu&n)===n&&(4===Su||3===Su&&(62914560&hu)===hu&&300>se()-Nu?!(2&pu)&&tc(e,0):Au|=n,Tu===hu&&(Tu=0)),Ic(e)}function Ac(e,t){0===t&&(t=Oe()),null!==(e=Lr(e,t))&&(Ne(e,t),Ic(e))}function Cc(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Ac(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),Ac(e,n)}var jc=null,Oc=null,Pc=!1,Nc=!1,Lc=!1,Rc=0;function Ic(e){e!==Oc&&null===e.next&&(null===Oc?jc=Oc=e:Oc=Oc.next=e),Nc=!0,Pc||(Pc=!0,Ed(function(){6&pu?ae(ce,Dc):zc()}))}function Fc(e,t){if(!Lc&&Nc){Lc=!0;do{for(var n=!1,r=jc;null!==r;){if(!t)if(0!==e){var a=r.pendingLanes;if(0===a)var o=0;else{var i=r.suspendedLanes,l=r.pingedLanes;o=(1<<31-we(42|e)+1)-1,o=201326741&(o&=a&~(i&~l))?201326741&o|1:o?2|o:0}0!==o&&(n=!0,Uc(r,o))}else o=hu,!(3&(o=Ce(r,r===mu?o:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Te(r,o)||(n=!0,Uc(r,o));r=r.next}}while(n);Lc=!1}}function Dc(){zc()}function zc(){Nc=Pc=!1;var e=0;0!==Rc&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==wd&&(wd=e,!0);return wd=null,!1}()&&(e=Rc);for(var t=se(),n=null,r=jc;null!==r;){var a=r.next,o=Mc(r,t);0===o?(r.next=null,null===n?jc=a:n.next=a,null===a&&(Oc=n)):(n=r,(0!==e||3&o)&&(Nc=!0)),r=a}0!==Du&&5!==Du||Fc(e,!1),0!==Rc&&(Rc=0)}function Mc(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=-62914561&e.pendingLanes;0 title"):null)}function af(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var of=0;function lf(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)uf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var sf=null;function uf(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sf=new Map,t.forEach(cf,e),sf=null,lf.call(e))}function cf(e,t){if(!(4&t.state.loading)){var n=sf.get(e);if(n)var r=n.get(null);else{n=new Map,sf.set(e,n);for(var a=e.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;oJ,vd:()=>W});var r=n(6540),a=n(5556),o=n.n(a),i=n(115),l=n.n(i),s=n(311),u=n.n(s),c=n(2833),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map(function(e){return h[e]}),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce(function(e,t){return e[k[t]]=t,e},{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,function(){return t});var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},A=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return f({},e,t)},{})},C=function(e,t){return t.filter(function(e){return void 0!==e[h.BASE]}).map(function(e){return e[h.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},F=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,n){return t[k[n]||n]=e[n],t},t)},D=function(e,t){return t.map(function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach(function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),r.createElement(e,o)})},z=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=F(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=O(t);return a?"<"+e+' data-rh="true" '+a+">"+R(o,r)+"":"<"+e+' data-rh="true">'+R(o,r)+""}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return F(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return D(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var a=Object.keys(r).filter(function(e){return!("innerHTML"===e||"cssText"===e)}).reduce(function(e,t){var a=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+a:a},""),o=r.innerHTML||r.cssText||"",i=-1===L.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"")},"")}(e,t,n)}}}},M=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=P(e.metaTags,v),o=P(t,y),i=P(n,b);return{priorityMethods:{toComponent:function(){return[].concat(D(h.META,a.priority),D(h.LINK,o.priority),D(h.SCRIPT,i.priority))},toString:function(){return z(h.META,a.priority,r)+" "+z(h.LINK,o.priority,r)+" "+z(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:z(h.BASE,t,r),bodyAttributes:z("bodyAttributes",n,r),htmlAttributes:z("htmlAttributes",a,r),link:z(h.LINK,c,r),meta:z(h.META,d,r),noscript:z(h.NOSCRIPT,o,r),script:z(h.SCRIPT,f,r),style:z(h.STYLE,i,r),title:z(h.TITLE,{title:s,titleAttributes:u},r)}},B=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=M({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var q=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach(function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some(function(e,t){return n=t,r.isEqualNode(e)})?o.splice(n,1):i.push(r)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return r.appendChild(e)}),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(h.BODY,e.bodyAttributes),G(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=O(e)),G(h.TITLE,t)}(c,d);var f={baseTag:q(h.BASE,n),linkTags:q(h.LINK,a),metaTags:q(h.META,o),noscriptTags:q(h.NOSCRIPT,i),scriptTags:q(h.SCRIPT,s),styleTags:q(h.STYLE,u)},p={},m={};Object.keys(f).forEach(function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)}),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case h.BODY:return f({},a,{bodyAttributes:f({},o)});case h.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach(function(t){var r;n=f({},n,((r={})[t]=e[t],r))}),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some(function(t){return e.type===t}),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some(function(e){return"string"!=typeof e}),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``} ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Z),l=Object.keys(i).reduce(function(e,t){return e[x[t]||t]=i[t],e},{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,function(e){return r.createElement(K,f({},a,{context:e}))})},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case h:case g:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=h,t.Memo=g,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363(e,t,n){"use strict";e.exports=n(2799)},3259(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;ti,v:()=>l});var r=n(6347),a=n(8168),o=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some(function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a}),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map(function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})})):null}},4625(e,t,n){"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(6347),a=n(7387),o=n(6540),i=n(1513),l=n(8168),s=n(8587),u=n(1561),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;ax,Ix:()=>v,W6:()=>P,XZ:()=>b,dO:()=>j,qh:()=>S,zy:()=>N});var r=n(7387),a=n(6540),o=n(5556),i=n.n(o),l=n(1513),s=n(1561),u=n(8168),c=n(5302),d=n.n(c),f=(n(4363),n(8587)),p=(n(4146),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i>>1,a=e[r];if(!(0>>1;ro(s,n))uo(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(uo(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,p=3,m=!1,g=!1,h=!1,y=!1,b="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function x(e){if(h=!1,k(e),!g)if(null!==r(u))g=!0,E||(E=!0,S());else{var t=r(c);null!==t&&N(x,t.startTime-e)}}var S,E=!1,_=-1,A=5,C=-1;function T(){return!!y||!(t.unstable_now()-Ce&&T());){var i=f.callback;if("function"==typeof i){f.callback=null,p=f.priorityLevel;var l=i(f.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){f.callback=l,k(e),n=!0;break t}f===r(u)&&a(u),k(e)}else a(u);f=r(u)}if(null!==f)n=!0;else{var s=r(c);null!==s&&N(x,s.startTime-e),n=!1}}break e}finally{f=null,p=o,m=!1}n=void 0}}finally{n?S():E=!1}}}if("function"==typeof w)S=function(){w(j)};else if("undefined"!=typeof MessageChannel){var O=new MessageChannel,P=O.port2;O.port1.onmessage=j,S=function(){P.postMessage(null)}}else S=function(){b(j,0)};function N(e,n){_=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(h?(v(_),_=-1):h=!0,N(x,o-i))):(e.sortIndex=l,n(u,e),g||m||(g=!0,E||(E=!0,S()))),e},t.unstable_shouldYield=T,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},9982(e,t,n){"use strict";e.exports=n(4477)},2833(e){e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;sr});const r={title:"HappyView",tagline:"Lexicon-driven ATProto AppView",url:"https://happyview.dev",baseUrl:"/",favicon:"img/favicon.png",onBrokenLinks:"throw",markdown:{mermaid:!0,format:"mdx",emoji:!0,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1},hooks:{onBrokenMarkdownLinks:"warn",onBrokenMarkdownImages:"throw"}},themes:["@docusaurus/theme-mermaid"],i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{path:"docs",routeBasePath:"/",sidebarPath:"./sidebars.ts"},blog:!1,theme:{}}]],themeConfig:{image:"img/og.png",navbar:{title:"",logo:{alt:"HappyView",src:"img/logo.light.png",srcDark:"img/logo.dark.png"},items:[{type:"docSidebar",sidebarId:"docs",position:"left",label:"Docs"},{href:"https://github.com/gamesgamesgamesgamesgames/happyview",label:"GitHub",position:"right"}],hideOnScroll:!1},prism:{additionalLanguages:["lua"],theme:{plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},footer:{copyright:"Copyright \xa9 2026 [Birbhouse Games](https://birb.house).",style:"light",links:[]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},blog:{sidebar:{groupByYear:!0}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3},mermaid:{theme:{dark:"dark",light:"default"},options:{}}},baseUrlIssueBanner:!0,future:{v4:{removeLegacyPostBuildHeadAttribute:!1,useCssCascadeLayers:!1},experimental_faster:{swcJsLoader:!1,swcJsMinimizer:!1,swcHtmlMinimizer:!1,lightningCssMinimizer:!1,mdxCrossCompilerCache:!1,rspackBundler:!1,rspackPersistentCache:!1,ssgWorkerThreads:!1},experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1}},3845(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{A:()=>a})},8168(e,t,n){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tr})},7387(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(3662);function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,r.A)(e,t)}},8587(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},3662(e,t,n){"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{A:()=>r})},8634(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{A:()=>o});var a=n(3662);function o(){o=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,o){var i=RegExp(e,r);return t.set(i,o||t.get(e)),(0,a.A)(i,n.prototype)}function i(e,n){var r=t.get(n);return Object.keys(r).reduce(function(t,n){var a=r[n];if("number"==typeof a)t[n]=e[a];else{for(var o=0;void 0===e[a[o]]&&o+1]+)(>|$)/g,function(e,t,n){if(""===n)return e;var r=o[t];return Array.isArray(r)?"$"+r.join("$"):"number"==typeof r?"$"+r:""}))}if("function"==typeof a){var l=this;return e[Symbol.replace].call(this,n,function(){var e=arguments;return"object"!=r(e[e.length-1])&&(e=[].slice.call(e)).push(i(e,l)),a.apply(this,e)})}return e[Symbol.replace].call(this,n,a)},o.apply(this,arguments)}},4164(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;ta});const a=function(){for(var e,t,n=0,a="",o=arguments.length;nC,f4:()=>ne});var r,a,o,i,l,s,u,c=n(6540),d=n(4164),f=Object.create,p=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,h(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},A=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,A=1;if(b){if(!(_=o(k,S,e,y))||_.index>=e.length)break;var C=_.index,T=_.index+_[0].length,j=S;for(j+=x.value.length;C>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof a)continue;for(var O=x;O!==t.tail&&(jd.reach&&(d.reach=R);var I=x.prev;if(N&&(I=s(t,I,N),S+=N.length),u(t,I,A),x=s(t,I,new a(f,h?r.tokenize(P,h):P,v,P)),L&&s(t,x,L),A>1){var F={cause:f+","+m,reach:R};i(e,t,n,x.prev,S,F),d&&F.reach>d.reach&&(d.reach=F.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),C=((e,t,n)=>(n=null!=e?f(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||p(e,a,{get:()=>t[a],enumerable:!(r=g(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(A());C.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},C.languages.markup.tag.inside["attr-value"].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside["internal-subset"].inside=C.languages.markup,C.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend("markup",{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,o=C,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend("clike",{"class-name":[C.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:C.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:C.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),C.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),C.languages.markup&&(C.languages.markup.tag.addInlined("script","javascript"),C.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),C.languages.js=C.languages.javascript,C.languages.actionscript=C.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript["class-name"].alias="function",delete C.languages.actionscript.parameter,delete C.languages.actionscript["literal-property"],C.languages.markup&&C.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(C),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach(function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source}),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,function(){return r})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,function(){return r}).replace(/<>/g,function(){return"(?:"+a+"|"+o+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(C),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,function(){return t}),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,function(){return r}),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:C.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},C.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var t=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map(function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n}).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o=d.length)return;var i,s,f,p,m,g,h,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=g.substring(0,h),m=c[i],f=void 0,(p={})["interpolation-punctuation"]=a,3===(p=e.tokenize(m,p)).length&&((f=[1,1]).push.apply(f,l(p[1],e.languages.javascript,"javascript")),p.splice.apply(p,f)),f=new e.Token("interpolation",p,r.alias,m),p=g.substring(h+i.length),m=[],s&&m.push(s),m.push(f),p&&(t(g=[p]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(m)),o+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(C),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,function(){return n})),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(C),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(C),C.languages.n4js=C.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),C.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),C.languages.n4jsd=C.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(//g,function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source}),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,function(){return n}).replace(//g,function(){return r}).replace(//g,function(){return a}),RegExp(e,t)}function i(t){for(var n=[],r=0;r"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)})}(C),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(C),C.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},C.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(C),C.languages.c=C.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},C.languages.c.string],char:C.languages.c.char,comment:C.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:C.languages.c}}}}),C.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete C.languages.c.boolean,C.languages.objectivec=C.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete C.languages.objectivec["class-name"],C.languages.objc=C.languages.objectivec,C.languages.reason=C.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),C.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete C.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return/[^\s\S]/.source}),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(C),C.languages.go=C.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),C.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(C),C.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},C.languages.python["string-interpolation"].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},C.languages.webmanifest=C.languages.json;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>O,github:()=>P,gruvboxMaterialDark:()=>Q,gruvboxMaterialLight:()=>Y,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>N,nightOwlLight:()=>L,oceanicNext:()=>F,okaidia:()=>D,oneDark:()=>q,oneLight:()=>G,palenight:()=>z,shadesOfPurple:()=>M,synthwave84:()=>B,ultramin:()=>U,vsDark:()=>$,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},O={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},P={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},N={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},L={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",F={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},z={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},M={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},U={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},$={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},q={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},G={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q={plain:{color:"#ebdbb2",backgroundColor:"#292828"},styles:[{types:["imports","class-name","maybe-class-name","constant","doctype","builtin","function"],style:{color:"#d8a657"}},{types:["property-access"],style:{color:"#7daea3"}},{types:["tag"],style:{color:"#e78a4e"}},{types:["attr-name","char","url","regex"],style:{color:"#a9b665"}},{types:["attr-value","string"],style:{color:"#89b482"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#ea6962"}},{types:["entity","number","symbol"],style:{color:"#d3869b"}}]},Y={plain:{color:"#654735",backgroundColor:"#f9f5d7"},styles:[{types:["delimiter","boolean","keyword","selector","important","atrule","property","variable","deleted"],style:{color:"#af2528"}},{types:["imports","class-name","maybe-class-name","constant","doctype","builtin"],style:{color:"#b4730e"}},{types:["string","attr-value"],style:{color:"#477a5b"}},{types:["property-access"],style:{color:"#266b79"}},{types:["function","attr-name","char","url"],style:{color:"#72761e"}},{types:["tag"],style:{color:"#b94c07"}},{types:["comment","prolog","cdata","operator","inserted"],style:{color:"#a89984"}},{types:["entity","number","symbol"],style:{color:"#924f79"}}]},K=/\r\n|\r|\n/,Z=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},X=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},J=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)0?u:["plain"],e=c):(u=X(u,c.type),c.alias&&(u=X(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(K),f=d.length;l.push({types:u,content:d[0]});for(let t=1;t{const{plain:n}=e,r=e.styles.reduce((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach(t=>{const n=S(S({},e[t]),a);e[t]=n}),e},{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},te=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=ee(r,o),l=(e=>(0,c.useCallback)(t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l},[e]))(i),s=(e=>{const t=(0,c.useCallback)(({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map(t=>e[t]))},[e]);return(0,c.useCallback)(e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l},[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>(0,c.useMemo)(()=>{if(null==n)return J([t]);const a={code:t,grammar:n,language:r,tokens:[]};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(t,n),e.hooks.run("after-tokenize",a),J(a.tokens)},[t,n,r,e]))({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ne=e=>(0,c.createElement)(te,E(S({},e),{prism:e.prism||C,theme:e.theme||$,code:e.code,language:e.language}))},1561(e,t,n){"use strict";n.d(t,{A:()=>a});var r="Invariant failed";function a(e,t){if(!e)throw new Error(r)}},1635(e,t,n){"use strict";n.r(t),n.d(t,{__addDisposableResource:()=>I,__assign:()=>o,__asyncDelegator:()=>_,__asyncGenerator:()=>E,__asyncValues:()=>A,__await:()=>S,__awaiter:()=>m,__classPrivateFieldGet:()=>N,__classPrivateFieldIn:()=>R,__classPrivateFieldSet:()=>L,__createBinding:()=>h,__decorate:()=>l,__disposeResources:()=>D,__esDecorate:()=>u,__exportStar:()=>y,__extends:()=>a,__generator:()=>g,__importDefault:()=>P,__importStar:()=>O,__makeTemplateObject:()=>C,__metadata:()=>p,__param:()=>s,__propKey:()=>d,__read:()=>v,__rest:()=>i,__rewriteRelativeImportExtension:()=>z,__runInitializers:()=>c,__setFunctionName:()=>f,__spread:()=>w,__spreadArray:()=>x,__spreadArrays:()=>k,__values:()=>b,default:()=>M});var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;l--)(a=e[l])&&(i=(o<3?a(i):o>3?a(t,n,i):a(t,n))||i);return o>3&&i&&Object.defineProperty(t,n,i),i}function s(e,t){return function(n,r){t(n,r,e)}}function u(e,t,n,r,a,o){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var l,s=r.kind,u="getter"===s?"get":"setter"===s?"set":"value",c=!t&&e?r.static?e:e.prototype:null,d=t||(c?Object.getOwnPropertyDescriptor(c,r.name):{}),f=!1,p=n.length-1;p>=0;p--){var m={};for(var g in r)m[g]="access"===g?{}:r[g];for(var g in r.access)m.access[g]=r.access[g];m.addInitializer=function(e){if(f)throw new TypeError("Cannot add initializers after decoration has completed");o.push(i(e||null))};var h=(0,n[p])("accessor"===s?{get:d.get,set:d.set}:d[u],m);if("accessor"===s){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(l=i(h.get))&&(d.get=l),(l=i(h.set))&&(d.set=l),(l=i(h.init))&&a.unshift(l)}else(l=i(h))&&("field"===s?a.unshift(l):d[u]=l)}c&&Object.defineProperty(c,r.name,d),f=!0}function c(e,t,n){for(var r=arguments.length>2,a=0;a0&&a[a.length-1])||6!==l[0]&&2!==l[0])){o=0;continue}if(3===l[0]&&(!a||l[1]>a[0]&&l[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(l){a={error:l}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function w(){for(var e=[],t=0;t1||l(e,t)})},t&&(r[e]=t(r[e])))}function l(e,t){try{(n=a[e](t)).value instanceof S?Promise.resolve(n.value.v).then(s,u):c(o[0][2],n)}catch(r){c(o[0][3],r)}var n}function s(e){l("next",e)}function u(e){l("throw",e)}function c(e,t){e(t),o.shift(),o.length&&l(o[0][0],o[0][1])}}function _(e){var t,n;return t={},r("next"),r("throw",function(e){throw e}),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:S(e[r](t)),done:!1}:a?a(t):t}:a}}function A(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise(function(r,a){(function(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)})(r,a,(t=e[n](t)).done,t.value)})}}}function C(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var T=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},j=function(e){return j=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},j(e)};function O(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=j(e),r=0;r{e.O(0,[1869],()=>{return t=8600,e(e.s=t);var t});e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~main.86e072ab.js b/assets/js/runtime~main.3142db48.js similarity index 57% rename from assets/js/runtime~main.86e072ab.js rename to assets/js/runtime~main.3142db48.js index 9308db4..b8b2210 100644 --- a/assets/js/runtime~main.86e072ab.js +++ b/assets/js/runtime~main.3142db48.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,t,r,c={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return c[e].call(d.exports,d,d.exports,b),d.exports}b.m=c,e=[],b.O=(a,d,t,r)=>{if(!d){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every(e=>b.O[e](d[o]))?d.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[d,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;("object"==typeof f||"function"==typeof f)&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce((a,d)=>(b.f[d](e,a),a),[])),b.u=e=>"assets/js/"+({20:"919abb94",203:"9985d6d5",787:"280f48ec",1361:"fbd7a87c",1567:"22dd74f7",1952:"2d1b556d",1977:"2df7fd65",2007:"c985d368",2278:"23374ca6",2431:"bccc5e9b",2618:"b27c7406",3197:"5d3a5990",3993:"d2e94323",4440:"5fd2dbdb",5011:"121e86a6",5219:"3d80a749",5563:"539fb2af",5742:"aba21aa0",5953:"920ba7ef",5986:"fac68122",6087:"a77ba7fa",6438:"bde15bec",6495:"6acefe75",6590:"43880f7a",6803:"33ec3d65",7098:"a7bd4aaa",7194:"a4086a70",7520:"89877b86",7715:"009f1e98",8401:"17896441",8779:"111eee19",8865:"774696b9",8897:"a51dfc20",9048:"a94703ab",9178:"e8644baa",9492:"846656e5",9647:"5e95c892",9659:"ec125a10",9957:"f142c65c"}[e]||e)+"."+{20:"3ec12698",165:"4c5708a1",203:"2071e97d",225:"04246537",291:"e48169fe",787:"8ce2f590",1203:"4c8aeaab",1361:"e3e74927",1567:"786d0f6d",1741:"e6304f1e",1746:"afdbc2a0",1903:"c19e32df",1952:"0f3febed",1977:"5f144859",2007:"9be5144d",2130:"6aca0963",2217:"7fbe9dae",2237:"02886161",2278:"a9405a6f",2279:"14e9bbca",2291:"742b3f1e",2334:"0d54c30f",2431:"c3f06d4f",2492:"04a5c13d",2618:"d8754146",2821:"25ddbeb7",3197:"a75f4a7b",3356:"916f8094",3624:"3861afa5",3815:"62684417",3993:"dec694d1",4312:"3fc60254",4440:"3f63380d",4616:"c38d0c4b",4732:"37c818cd",4802:"c2bb0f45",4981:"a26c6f29",5011:"4a23b8e6",5149:"dc032f86",5219:"4b7483e6",5480:"0ac51d82",5563:"ab94867b",5734:"a0ed7a40",5742:"dfe711f3",5953:"2e58966a",5955:"5524a460",5986:"66f4e9f8",5996:"973aad9b",6087:"be66bc37",6241:"ddb16fb6",6438:"3fe537d8",6495:"bf671ca4",6567:"ba0bae2c",6590:"a0c8f815",6803:"9c357e99",6992:"6dfc4d99",7098:"1619d051",7194:"58f7d6fe",7520:"b544ad88",7592:"a68b31ac",7715:"4381c598",7873:"c42f29b1",7928:"08dd813c",8142:"f23a31c7",8249:"c71477f6",8401:"0e3115cb",8731:"da0fb09f",8756:"2c2f045b",8779:"94292821",8795:"1c60dc80",8865:"5358730d",8897:"c793654e",9032:"6c8ca03c",9048:"df97c324",9178:"350e6ac9",9412:"2ce5e84d",9492:"d2c6f90f",9510:"2071eba3",9620:"117206fb",9647:"ac259cea",9659:"b1db9ed3",9717:"bdeb521f",9957:"366ae717"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="happyview-docs:",b.l=(e,a,d,c)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach(e=>e(d)),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401","919abb94":"20","9985d6d5":"203","280f48ec":"787",fbd7a87c:"1361","22dd74f7":"1567","2d1b556d":"1952","2df7fd65":"1977",c985d368:"2007","23374ca6":"2278",bccc5e9b:"2431",b27c7406:"2618","5d3a5990":"3197",d2e94323:"3993","5fd2dbdb":"4440","121e86a6":"5011","3d80a749":"5219","539fb2af":"5563",aba21aa0:"5742","920ba7ef":"5953",fac68122:"5986",a77ba7fa:"6087",bde15bec:"6438","6acefe75":"6495","43880f7a":"6590","33ec3d65":"6803",a7bd4aaa:"7098",a4086a70:"7194","89877b86":"7520","009f1e98":"7715","111eee19":"8779","774696b9":"8865",a51dfc20:"8897",a94703ab:"9048",e8644baa:"9178","846656e5":"9492","5e95c892":"9647",ec125a10:"9659",f142c65c:"9957"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise((d,r)=>t=e[a]=[d,r]);d.push(t[2]=r);var c=b.p+b.u(a),f=new Error;b.l(c,d=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",f.name="ChunkLoadError",f.type=r,f.request=c,t[1](f)}},"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var t,r,[c,f,o]=d,n=0;if(c.some(a=>0!==e[a])){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(d);n{"use strict";var e,a,d,t,r,c={},f={};function b(e){var a=f[e];if(void 0!==a)return a.exports;var d=f[e]={exports:{}};return c[e].call(d.exports,d,d.exports,b),d.exports}b.m=c,e=[],b.O=(a,d,t,r)=>{if(!d){var c=1/0;for(i=0;i=r)&&Object.keys(b.O).every(e=>b.O[e](d[o]))?d.splice(o--,1):(f=!1,r0&&e[i-1][2]>r;i--)e[i]=e[i-1];e[i]=[d,t,r]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var r=Object.create(null);b.r(r);var c={};a=a||[null,d({}),d([]),d(d)];for(var f=2&t&&e;("object"==typeof f||"function"==typeof f)&&!~a.indexOf(f);f=d(f))Object.getOwnPropertyNames(f).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,b.d(r,c),r},b.d=(e,a)=>{for(var d in a)b.o(a,d)&&!b.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce((a,d)=>(b.f[d](e,a),a),[])),b.u=e=>"assets/js/"+({20:"919abb94",203:"9985d6d5",787:"280f48ec",1361:"fbd7a87c",1567:"22dd74f7",1952:"2d1b556d",1977:"2df7fd65",2007:"c985d368",2278:"23374ca6",2431:"bccc5e9b",2618:"b27c7406",3197:"5d3a5990",3993:"d2e94323",4440:"5fd2dbdb",5011:"121e86a6",5219:"3d80a749",5563:"539fb2af",5742:"aba21aa0",5953:"920ba7ef",5986:"fac68122",6087:"a77ba7fa",6438:"bde15bec",6495:"6acefe75",6590:"43880f7a",6803:"33ec3d65",7098:"a7bd4aaa",7194:"a4086a70",7520:"89877b86",7715:"009f1e98",8401:"17896441",8779:"111eee19",8865:"774696b9",8897:"a51dfc20",9048:"a94703ab",9097:"e7f37855",9178:"e8644baa",9301:"d26b9010",9492:"846656e5",9647:"5e95c892",9659:"ec125a10",9957:"f142c65c"}[e]||e)+"."+{20:"3ec12698",165:"4c5708a1",203:"2071e97d",225:"04246537",291:"e48169fe",787:"8ce2f590",1203:"4c8aeaab",1361:"e3e74927",1567:"132c49f2",1741:"e6304f1e",1746:"afdbc2a0",1903:"c19e32df",1952:"316fda02",1977:"5f144859",2007:"9be5144d",2130:"6aca0963",2217:"7fbe9dae",2237:"02886161",2278:"a9405a6f",2279:"14e9bbca",2291:"742b3f1e",2334:"0d54c30f",2431:"c3f06d4f",2492:"04a5c13d",2618:"d8754146",2821:"25ddbeb7",3197:"a75f4a7b",3356:"916f8094",3624:"3861afa5",3815:"62684417",3993:"dec694d1",4312:"3fc60254",4440:"3f63380d",4616:"c38d0c4b",4732:"37c818cd",4802:"c2bb0f45",4981:"a26c6f29",5011:"4a23b8e6",5149:"dc032f86",5219:"4b7483e6",5480:"0ac51d82",5563:"ab94867b",5734:"a0ed7a40",5742:"dfe711f3",5953:"2e58966a",5955:"5524a460",5986:"66f4e9f8",5996:"973aad9b",6087:"be66bc37",6241:"ddb16fb6",6438:"3fe537d8",6495:"bf671ca4",6567:"ba0bae2c",6590:"a0c8f815",6803:"9c357e99",6992:"6dfc4d99",7098:"1619d051",7194:"58f7d6fe",7520:"b544ad88",7592:"a68b31ac",7715:"4381c598",7873:"c42f29b1",7928:"08dd813c",8142:"f23a31c7",8249:"c71477f6",8401:"0e3115cb",8731:"da0fb09f",8756:"2c2f045b",8779:"94292821",8795:"1c60dc80",8865:"aaf7ca2b",8897:"c793654e",9032:"6c8ca03c",9048:"df97c324",9097:"5017c79c",9178:"350e6ac9",9301:"6c09a47c",9412:"2ce5e84d",9492:"7a01fd59",9510:"2071eba3",9620:"117206fb",9647:"ac259cea",9659:"3fe16f05",9717:"bdeb521f",9957:"366ae717"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},r="happyview-docs:",b.l=(e,a,d,c)=>{if(t[e])t[e].push(a);else{var f,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var r=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),r&&r.forEach(e=>e(d)),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),o&&document.head.appendChild(f)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401","919abb94":"20","9985d6d5":"203","280f48ec":"787",fbd7a87c:"1361","22dd74f7":"1567","2d1b556d":"1952","2df7fd65":"1977",c985d368:"2007","23374ca6":"2278",bccc5e9b:"2431",b27c7406:"2618","5d3a5990":"3197",d2e94323:"3993","5fd2dbdb":"4440","121e86a6":"5011","3d80a749":"5219","539fb2af":"5563",aba21aa0:"5742","920ba7ef":"5953",fac68122:"5986",a77ba7fa:"6087",bde15bec:"6438","6acefe75":"6495","43880f7a":"6590","33ec3d65":"6803",a7bd4aaa:"7098",a4086a70:"7194","89877b86":"7520","009f1e98":"7715","111eee19":"8779","774696b9":"8865",a51dfc20:"8897",a94703ab:"9048",e7f37855:"9097",e8644baa:"9178",d26b9010:"9301","846656e5":"9492","5e95c892":"9647",ec125a10:"9659",f142c65c:"9957"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,d)=>{var t=b.o(e,a)?e[a]:void 0;if(0!==t)if(t)d.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var r=new Promise((d,r)=>t=e[a]=[d,r]);d.push(t[2]=r);var c=b.p+b.u(a),f=new Error;b.l(c,d=>{if(b.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var r=d&&("load"===d.type?"missing":d.type),c=d&&d.target&&d.target.src;f.message="Loading chunk "+a+" failed.\n("+r+": "+c+")",f.name="ChunkLoadError",f.type=r,f.request=c,t[1](f)}},"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,d)=>{var t,r,[c,f,o]=d,n=0;if(c.some(a=>0!==e[a])){for(t in f)b.o(f,t)&&(b.m[t]=f[t]);if(o)var i=o(b)}for(a&&a(d);n Authentication | HappyView - - + + diff --git a/getting-started/configuration/index.html b/getting-started/configuration/index.html index f96fab3..67814bf 100644 --- a/getting-started/configuration/index.html +++ b/getting-started/configuration/index.html @@ -4,8 +4,8 @@ Configuration | HappyView - - + + diff --git a/getting-started/dashboard/index.html b/getting-started/dashboard/index.html index 385568b..8d33e99 100644 --- a/getting-started/dashboard/index.html +++ b/getting-started/dashboard/index.html @@ -4,8 +4,8 @@ Dashboard | HappyView - - + + diff --git a/getting-started/deployment/docker/index.html b/getting-started/deployment/docker/index.html index 7ccbc9c..2c21bc4 100644 --- a/getting-started/deployment/docker/index.html +++ b/getting-started/deployment/docker/index.html @@ -4,8 +4,8 @@ Local Development with Docker | HappyView - - + + diff --git a/getting-started/deployment/other/index.html b/getting-started/deployment/other/index.html index 4d09f59..09699a9 100644 --- a/getting-started/deployment/other/index.html +++ b/getting-started/deployment/other/index.html @@ -4,8 +4,8 @@ Local Development from Source | HappyView - - + + diff --git a/getting-started/deployment/railway/index.html b/getting-started/deployment/railway/index.html index dd247b6..4bcbe5d 100644 --- a/getting-started/deployment/railway/index.html +++ b/getting-started/deployment/railway/index.html @@ -4,8 +4,8 @@ Deploy on Railway | HappyView - - + + diff --git a/getting-started/quickstart/index.html b/getting-started/quickstart/index.html index 577d1b8..8ae53ae 100644 --- a/getting-started/quickstart/index.html +++ b/getting-started/quickstart/index.html @@ -4,8 +4,8 @@ Quickstart | HappyView - - + + diff --git a/guides/api-keys/index.html b/guides/api-keys/index.html new file mode 100644 index 0000000..31d75c6 --- /dev/null +++ b/guides/api-keys/index.html @@ -0,0 +1,56 @@ + + + + + +API Keys | HappyView + + + + + + + +

API Keys

+

API keys let you authenticate with the admin API without going through the OAuth flow. They're useful for CI/CD pipelines, scripts, and any automation that needs to manage your HappyView instance programmatically.

+

How API keys work​

+

Each API key is a 35-character token with the format hv_ followed by 32 random hex characters:

+
hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
+

When you create a key, HappyView shows the full token once. After that, only the prefix (hv_a1b2c3d4) is stored for display — the key itself is SHA-256 hashed before being saved to the database. This means nobody (including you) can retrieve the full key after creation.

+

API keys inherit the permissions of the admin who created them. A revoked key immediately stops working.

+

Creating a key​

+
    +
  1. Go to Settings in the dashboard
  2. +
  3. Select the API Keys tab
  4. +
  5. Click Create API Key
  6. +
  7. Enter a descriptive name (e.g., "CI Deploy", "Monitoring Script")
  8. +
  9. Copy the full key from the confirmation dialog — you won't see it again
  10. +
+

Using a key​

+

Pass the key as a Bearer token in the Authorization header:

+
curl http://localhost:3000/admin/lexicons \
-H "Authorization: Bearer hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
+

This works for all admin API endpoints — anything you can do with an OAuth token, you can do with an API key.

+

Revoking a key​

+
    +
  1. Go to Settings > API Keys
  2. +
  3. Click Revoke next to the key
  4. +
  5. Confirm in the dialog
  6. +
+

Revoked keys are soft-deleted: they remain visible in the table (with a strikethrough) for audit purposes but can no longer authenticate. Any service using the key will immediately receive 401 Unauthorized responses.

+

Tracking usage​

+

The Last Used column in the API Keys table shows when each key was last used to authenticate a request. Keys that have never been used show "Never". This helps you identify unused keys that can be safely revoked.

+

Security considerations​

+
    +
  • Treat API keys like passwords. Anyone with the key has full admin access to your HappyView instance.
  • +
  • Use descriptive names so you can identify which service uses which key.
  • +
  • Revoke keys you no longer need. If a key is compromised, revoke it immediately.
  • +
  • Don't commit keys to version control. Use environment variables or secret managers instead.
  • +
+

Next steps​

+
+ + \ No newline at end of file diff --git a/guides/backfill/index.html b/guides/backfill/index.html index ee4804c..7e4b43b 100644 --- a/guides/backfill/index.html +++ b/guides/backfill/index.html @@ -4,8 +4,8 @@ Backfill | HappyView - - + + diff --git a/guides/event-logs/index.html b/guides/event-logs/index.html index f811786..d51125d 100644 --- a/guides/event-logs/index.html +++ b/guides/event-logs/index.html @@ -4,8 +4,8 @@ Event Logs | HappyView - - + + diff --git a/guides/index-hooks/index.html b/guides/index-hooks/index.html index 0daf665..0dea71f 100644 --- a/guides/index-hooks/index.html +++ b/guides/index-hooks/index.html @@ -4,8 +4,8 @@ Index Hooks | HappyView - - + + @@ -50,11 +50,15 @@

Push records to an Algolia search index on create/update, and remove them on delete:

function handle()
local headers = {
["X-Algolia-API-Key"] = "your-api-key",
["X-Algolia-Application-Id"] = "your-app-id",
["Content-Type"] = "application/json"
}

if action == "delete" then
http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {
headers = headers
})
else
http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {
headers = headers,
body = json.encode({
objectID = uri,
collection = collection,
did = did,
record = record
})
})
end
end

See the full Algolia sync reference for more detail.

+

Sync to Meilisearch​

+

Push records to a self-hosted Meilisearch index on create/update, and remove them on delete:

+
function handle()
local headers = {
["Authorization"] = "Bearer " .. env.MEILISEARCH_API_KEY,
["Content-Type"] = "application/json"
}

if action == "delete" then
http.delete(env.MEILISEARCH_URL .. "/indexes/records/documents/" .. uri, {
headers = headers
})
else
http.post(env.MEILISEARCH_URL .. "/indexes/records/documents", {
headers = headers,
body = json.encode(toarray({
{
id = uri,
collection = collection,
did = did,
record = record
}
}))
})
end
end
+

See the full Meilisearch sync reference for more detail.

Next steps​

  • Lua Scripting: Full reference for the sandbox, APIs, and debugging
  • Lexicons: Understand how record, query, and procedure lexicons work together
  • Admin API: Upload lexicons with index hooks via the API
  • -
+
\ No newline at end of file diff --git a/guides/lexicons/index.html b/guides/lexicons/index.html index 2eb5cc6..564511a 100644 --- a/guides/lexicons/index.html +++ b/guides/lexicons/index.html @@ -4,8 +4,8 @@ Lexicons | HappyView - - + + diff --git a/guides/scripting/index.html b/guides/scripting/index.html index 3498936..b12e790 100644 --- a/guides/scripting/index.html +++ b/guides/scripting/index.html @@ -4,8 +4,8 @@ Lua Scripting | HappyView - - + + diff --git a/index.html b/index.html index a8bfd1f..eafc64f 100644 --- a/index.html +++ b/index.html @@ -4,8 +4,8 @@ HappyView - - + + diff --git a/reference/admin-api/index.html b/reference/admin-api/index.html index d386eb4..f639c42 100644 --- a/reference/admin-api/index.html +++ b/reference/admin-api/index.html @@ -4,8 +4,8 @@ Admin API | HappyView - - + + @@ -14,13 +14,18 @@

Admin API

The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under /admin and require an AIP-issued Bearer token from a DID that exists in the admins table. You can also manage all of this through the web dashboard.

Auth​

-

Admin auth works the same as user auth: the Bearer token is validated against AIP's /oauth/userinfo endpoint to retrieve the caller's DID. That DID is then checked against the admins table.

+

The admin API supports two authentication methods:

+
    +
  1. OAuth (AIP) — the Bearer token is validated against AIP's /oauth/userinfo endpoint to retrieve the caller's DID.
  2. +
  3. API keys — read/write tokens starting with hv_. See the API Keys guide for details.
  4. +
+

In both cases the resolved DID is checked against the admins table.

Auto-bootstrap: If the admins table is empty, the first authenticated request automatically inserts the caller as the initial admin.

Non-admin DIDs receive a 403 Forbidden response.

All error responses return JSON with an error field:

{
"error": "description of what went wrong"
}
StatusMeaning
400 Bad RequestInvalid input (missing required fields, malformed lexicon JSON)
401 UnauthorizedMissing or invalid Bearer token. See AIP documentation for token issues
403 ForbiddenAuthenticated DID is not in the admins table
404 Not FoundLexicon, admin, or backfill job not found
-
# All examples assume $TOKEN is an AIP-issued access token for an admin DID
AUTH="Authorization: Bearer $TOKEN"
+
# All examples assume $TOKEN is an AIP-issued access token or API key
AUTH="Authorization: Bearer $TOKEN"

Lexicons​

Upload / upsert a lexicon​

POST /admin/lexicons
@@ -96,6 +101,26 @@

Response: 200 OK

{
"events": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event_type": "script.error",
"severity": "error",
"actor_did": "did:plc:abc123",
"subject": "com.example.feed.like",
"detail": {
"error": "attempt to index nil value",
"script_source": "function handle() ... end",
"input": { "status": "hello" },
"caller_did": "did:plc:abc123",
"method": "com.example.feed.like"
},
"created_at": "2026-03-01T12:00:00Z"
}
],
"cursor": "2026-03-01T11:59:00Z"
}

Events are returned in reverse chronological order (newest first). Pass the cursor value from the response to fetch the next page.

+

API Keys​

+

Manage API keys for programmatic access. See the API Keys guide for usage details.

+

Create an API key​

+
POST /admin/api-keys
+
curl -X POST http://localhost:3000/admin/api-keys \
-H "$AUTH" \
-H "Content-Type: application/json" \
-d '{ "name": "CI Deploy" }'
+
FieldTypeRequiredDescription
namestringyesA label to identify this key's usage
+

Response: 201 Created

+
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "CI Deploy",
"key": "hv_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"key_prefix": "hv_a1b2c3d4"
}
+

The key field contains the full API key. It is only returned in this response — store it securely.

+

List API keys​

+
GET /admin/api-keys
+
curl http://localhost:3000/admin/api-keys -H "$AUTH"
+

Response: 200 OK

+
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "CI Deploy",
"key_prefix": "hv_a1b2c3d4",
"created_at": "2026-03-01T00:00:00Z",
"last_used_at": "2026-03-06T12:00:00Z",
"revoked_at": null
}
]
+

Only returns keys belonging to the authenticated admin. The full key is never included — only the prefix.

+

Revoke an API key​

+
DELETE /admin/api-keys/{id}
+
curl -X DELETE http://localhost:3000/admin/api-keys/550e8400-e29b-41d4-a716-446655440000 \
-H "$AUTH"
+

Sets revoked_at on the key. The key remains in the database for audit purposes but can no longer authenticate.

+

Response: 204 No Content

Admin management​

Add an admin​

POST /admin/admins
@@ -110,6 +135,6 @@

Remove an admin​

DELETE /admin/admins/{id}
curl -X DELETE http://localhost:3000/admin/admins/550e8400-e29b-41d4-a716-446655440000 \
-H "$AUTH"
-

Response: 204 No Content

+

Response: 204 No Content

\ No newline at end of file diff --git a/reference/architecture/index.html b/reference/architecture/index.html index b3c25b9..76a328e 100644 --- a/reference/architecture/index.html +++ b/reference/architecture/index.html @@ -4,8 +4,8 @@ Architecture | HappyView - - + + diff --git a/reference/changelog/index.html b/reference/changelog/index.html index d445e2c..4579a9a 100644 --- a/reference/changelog/index.html +++ b/reference/changelog/index.html @@ -4,8 +4,8 @@ Changelog | HappyView - - + + diff --git a/reference/glossary/index.html b/reference/glossary/index.html index 77ff3de..9a90a2e 100644 --- a/reference/glossary/index.html +++ b/reference/glossary/index.html @@ -4,8 +4,8 @@ Glossary | HappyView - - + + @@ -32,6 +32,6 @@

Backfill — The process of bulk-indexing existing records from the network. HappyView discovers repos via the relay and delegates record fetching to Tap. Runs when a new record-type lexicon is uploaded or triggered manually. See Backfill.

Network lexicon — A lexicon fetched directly from the AT Protocol network via DNS authority resolution, rather than uploaded manually. See Lexicons - Network lexicons.

Tap — A firehose consumer and backfill worker that handles real-time record streaming, cryptographic verification, and historical record fetching. HappyView connects to Tap via WebSocket to receive record events, and delegates backfill work to Tap via its HTTP API.

-

Target collection — The record collection that a query or procedure lexicon operates on. Set via the target_collection field when uploading a lexicon.

+

Target collection — The record collection that a query or procedure lexicon operates on. Set via the target_collection field when uploading a lexicon.

\ No newline at end of file diff --git a/reference/production-deployment/index.html b/reference/production-deployment/index.html index 13d4b8d..bf9b859 100644 --- a/reference/production-deployment/index.html +++ b/reference/production-deployment/index.html @@ -4,8 +4,8 @@ Deployment | HappyView - - + + diff --git a/reference/scripts/algolia-sync/index.html b/reference/scripts/algolia-sync/index.html index 492e651..c75e388 100644 --- a/reference/scripts/algolia-sync/index.html +++ b/reference/scripts/algolia-sync/index.html @@ -4,14 +4,14 @@ Index Hook: Algolia Sync | HappyView - - + + -

Index Hook: Algolia Sync

+

Index Hook: Algolia Sync

Push records to an Algolia search index whenever they are created, updated, or deleted on the network.

Lexicon type: record (index hook)

function handle()
local headers = {
["X-Algolia-API-Key"] = "your-api-key",
["X-Algolia-Application-Id"] = "your-app-id",
["Content-Type"] = "application/json"
}

if action == "delete" then
http.delete("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {
headers = headers
})
else
http.put("https://YOUR-APP.algolia.net/1/indexes/records/" .. uri, {
headers = headers,
body = json.encode({
objectID = uri,
collection = collection,
did = did,
record = record
})
})
end
end
@@ -26,6 +26,6 @@
PlaceholderValue
your-api-keyYour Algolia Admin API key (with write permissions)
your-app-idYour Algolia Application ID
YOUR-APPYour Algolia application subdomain (same as the Application ID)
recordsThe Algolia index name (choose any name you like)

Use case​

This hook keeps an external search index in sync with your indexed records in real time. Users searching through Algolia get results that reflect the latest state of the network without polling or scheduled jobs.

-

Combine this with a query script that searches Algolia instead of the local database for a full-text search experience that goes beyond what db.search offers.

+

Combine this with a query script that searches Algolia instead of the local database for a full-text search experience that goes beyond what db.search offers.

\ No newline at end of file diff --git a/reference/scripts/batch-save/index.html b/reference/scripts/batch-save/index.html index 5821b12..fe9133b 100644 --- a/reference/scripts/batch-save/index.html +++ b/reference/scripts/batch-save/index.html @@ -4,14 +4,14 @@ Procedure: Batch Save | HappyView - - + + -

Procedure: Batch Save

+

Procedure: Batch Save

Use Record.save_all() to create multiple records in parallel.

Lexicon type: procedure

function handle()
local records = {}
for _, item in ipairs(input.items) do
local r = Record(collection, item)
records[#records + 1] = r
end
Record.save_all(records)

local uris = {}
for _, r in ipairs(records) do
uris[#uris + 1] = r._uri
end
return { uris = uris }
end
diff --git a/reference/scripts/cascading-delete/index.html b/reference/scripts/cascading-delete/index.html index 1ac8e23..9251829 100644 --- a/reference/scripts/cascading-delete/index.html +++ b/reference/scripts/cascading-delete/index.html @@ -4,14 +4,14 @@ Procedure: Cascading Delete | HappyView - - + + -

Procedure: Cascading Delete

+

Procedure: Cascading Delete

Delete a record and all related records across collections.

Lexicon type: procedure

function handle()
if not input.uri then
return { error = "uri is required" }
end

-- Load the primary record
local primary = Record.load(input.uri)
if not primary then
return { error = "not found" }
end

-- Find related records that reference this URI
local comments = db.query({
collection = "xyz.statusphere.comment",
did = caller_did,
limit = 100,
})

-- Collect records to delete
local to_delete = { primary }
for _, comment in ipairs(comments.records) do
if comment.postUri == input.uri then
local r = Record.load(comment.uri)
if r then
to_delete[#to_delete + 1] = r
end
end
end

-- Delete all matched records
for _, r in ipairs(to_delete) do
r:delete()
end

return {
deleted = #to_delete,
}
end
diff --git a/reference/scripts/complex-mutations/index.html b/reference/scripts/complex-mutations/index.html index e74d35e..dd6e0b7 100644 --- a/reference/scripts/complex-mutations/index.html +++ b/reference/scripts/complex-mutations/index.html @@ -4,14 +4,14 @@ Procedure: Complex Mutations | HappyView - - + + -

Procedure: Complex Mutations

+

Procedure: Complex Mutations

Load an existing record, apply multiple transformations, and save it back.

Lexicon type: procedure

function handle()
if not input.uri then
return { error = "uri is required" }
end

local r = Record.load(input.uri)
if not r then
return { error = "not found" }
end

-- Increment a counter
r.likeCount = (r.likeCount or 0) + 1

-- Merge tags, deduplicating and capping at 10
r.tags = r.tags or {}
if input.tags then
for _, tag in ipairs(input.tags) do
local found = false
for _, t in ipairs(r.tags) do
if t == tag then
found = true
break
end
end
if not found then
r.tags[#r.tags + 1] = tag
end
end
-- Keep only the last 10
while #r.tags > 10 do
table.remove(r.tags, 1)
end
end

-- Normalize a string field
if input.title then
r.title = string.gsub(input.title, "^%s+", "")
r.title = string.gsub(r.title, "%s+$", "")
end

-- Set a computed field
r.updatedAt = now()

r:save()

return { uri = r._uri, cid = r._cid }
end
diff --git a/reference/scripts/create-record/index.html b/reference/scripts/create-record/index.html index 43e1c3e..6995acd 100644 --- a/reference/scripts/create-record/index.html +++ b/reference/scripts/create-record/index.html @@ -4,14 +4,14 @@ Procedure: Create a Record | HappyView - - + + -

Procedure: Create a Record

+

Procedure: Create a Record

The simplest write: take the request body, save it as a record, and return the URI.

Lexicon type: procedure

function handle()
local r = Record(collection, input)
r:save()
return { uri = r._uri, cid = r._cid }
end
diff --git a/reference/scripts/expanded-query/index.html b/reference/scripts/expanded-query/index.html index 35a8284..853e512 100644 --- a/reference/scripts/expanded-query/index.html +++ b/reference/scripts/expanded-query/index.html @@ -4,14 +4,14 @@ Query: Expanded Query with Profiles | HappyView - - + + -

Query: Expanded Query with Profiles

+

Query: Expanded Query with Profiles

List statuses and include the profile of each user who created one.

Lexicon type: query

function handle()
local limit = tonumber(params.limit) or 20
if limit > 100 then limit = 100 end

local result = db.query({
collection = "xyz.statusphere.status",
did = params.did,
limit = limit,
offset = tonumber(params.cursor) or 0,
})

-- Collect unique DIDs from the statuses
local seen = {}
local profile_uris = {}
for _, status in ipairs(result.records) do
local did = string.match(status.uri, "at://([^/]+)/")
if did and not seen[did] then
seen[did] = true
profile_uris[#profile_uris + 1] = "at://" .. did .. "/app.bsky.actor.profile/self"
end
end

-- Load all profiles in parallel
local profiles = {}
if #profile_uris > 0 then
local loaded = Record.load_all(profile_uris)
for i, profile in ipairs(loaded) do
if profile then
profiles[#profiles + 1] = profile
end
end
end

return {
statuses = result.records,
profiles = profiles,
cursor = result.cursor,
}
end
diff --git a/reference/scripts/get-record/index.html b/reference/scripts/get-record/index.html index 3277302..a0f0334 100644 --- a/reference/scripts/get-record/index.html +++ b/reference/scripts/get-record/index.html @@ -4,14 +4,14 @@ Query: Get a Single Record | HappyView - - + + -

Query: Get a Single Record

+

Query: Get a Single Record

Fetch a single record by its AT URI.

Lexicon type: query

function handle()
if not params.uri then
return { error = "uri parameter is required" }
end

local record = db.get(params.uri)
if not record then
return { error = "not found" }
end

return { record = record }
end
diff --git a/reference/scripts/list-or-fetch/index.html b/reference/scripts/list-or-fetch/index.html index f212187..db42826 100644 --- a/reference/scripts/list-or-fetch/index.html +++ b/reference/scripts/list-or-fetch/index.html @@ -4,14 +4,14 @@ Query: List or Fetch Records | HappyView - - + + -

Query: List or Fetch Records

+

Query: List or Fetch Records

This query handles both single-record lookups (when a uri param is provided) and paginated listing.

Lexicon type: query

function handle()
if params.uri then
local record = db.get(params.uri)
if not record then
return { error = "record not found" }
end
return { record = record }
end

return db.query({
collection = collection,
did = params.did,
limit = tonumber(params.limit) or 20,
offset = tonumber(params.cursor) or 0,
})
end
diff --git a/reference/scripts/meilisearch-sync/index.html b/reference/scripts/meilisearch-sync/index.html new file mode 100644 index 0000000..0e1862b --- /dev/null +++ b/reference/scripts/meilisearch-sync/index.html @@ -0,0 +1,33 @@ + + + + + +Index Hook: Meilisearch Sync | HappyView + + + + + + + +

Index Hook: Meilisearch Sync

+

Push records to a Meilisearch search index whenever they are created, updated, or deleted on the network.

+

Lexicon type: record (index hook)

+
function handle()
local headers = {
["Authorization"] = "Bearer " .. env.MEILISEARCH_API_KEY,
["Content-Type"] = "application/json"
}

if action == "delete" then
http.delete(env.MEILISEARCH_URL .. "/indexes/records/documents/" .. uri, {
headers = headers
})
else
http.post(env.MEILISEARCH_URL .. "/indexes/records/documents", {
headers = headers,
body = json.encode(toarray({
{
id = uri,
collection = collection,
did = did,
record = record
}
}))
})
end
end
+

How it works​

+
    +
  1. On create or update: sends a POST request to Meilisearch's document API with the record data wrapped in an array. Meilisearch upserts by id — if a document with the same AT URI already exists, it's replaced.
  2. +
  3. On delete: sends a DELETE request to remove the document from the index by its AT URI.
  4. +
+

The toarray() function ensures the table is encoded as a JSON array (Meilisearch expects an array of documents). See JSON API.

+

Configuration​

+

This script uses script variables instead of hardcoded values. Set these via the admin API or dashboard:

+
VariableValue
MEILISEARCH_URLYour Meilisearch instance URL (e.g. http://meilisearch.railway.internal:7700)
MEILISEARCH_API_KEYA Meilisearch API key with write permissions
+

Script variables are stored in the script_variables table and accessible as env.* in Lua.

+

Use case​

+

This hook keeps an external search index in sync with your indexed records in real time. Users searching through Meilisearch get results that reflect the latest state of the network without polling or scheduled jobs.

+

Meilisearch is a good fit for self-hosted deployments — colocate it alongside HappyView (e.g. on the same Railway project) for sub-millisecond network latency.

+

Combine this with a query script that searches Meilisearch instead of the local database for a full-text search experience that goes beyond what db.search offers.

+ + \ No newline at end of file diff --git a/reference/scripts/paginated-list/index.html b/reference/scripts/paginated-list/index.html index 0712df4..1033fa4 100644 --- a/reference/scripts/paginated-list/index.html +++ b/reference/scripts/paginated-list/index.html @@ -4,14 +4,14 @@ Query: Paginated List | HappyView - - + + -

Query: Paginated List

+

Query: Paginated List

List records from a collection with cursor-based pagination and an optional DID filter.

Lexicon type: query

function handle()
local limit = tonumber(params.limit) or 20
if limit > 100 then limit = 100 end

local result = db.query({
collection = collection,
did = params.did,
limit = limit,
offset = tonumber(params.cursor) or 0,
})

return result
end
diff --git a/reference/scripts/sidecar-records/index.html b/reference/scripts/sidecar-records/index.html index 94be202..cfb3d93 100644 --- a/reference/scripts/sidecar-records/index.html +++ b/reference/scripts/sidecar-records/index.html @@ -4,14 +4,14 @@ Procedure: Create Sidecar Records | HappyView - - + + -

Procedure: Create Sidecar Records

+

Procedure: Create Sidecar Records

Create two records with different collection NSIDs but the same rkey, linking them together by key.

Lexicon type: procedure

function handle()
local rkey = TID()

local post = Record("xyz.statusphere.post", {
text = input.text,
createdAt = now(),
})
post:set_rkey(rkey)

local metadata = Record("xyz.statusphere.postMetadata", {
lang = input.lang or "en",
source = input.source or "web",
createdAt = now(),
})
metadata:set_rkey(rkey)

Record.save_all({ post, metadata })

return {
post = { uri = post._uri, cid = post._cid },
metadata = { uri = metadata._uri, cid = metadata._cid },
}
end
diff --git a/reference/scripts/update-or-delete/index.html b/reference/scripts/update-or-delete/index.html index 492c818..aadd984 100644 --- a/reference/scripts/update-or-delete/index.html +++ b/reference/scripts/update-or-delete/index.html @@ -4,14 +4,14 @@ Procedure: Update or Delete | HappyView - - + + -

Procedure: Update or Delete

+

Procedure: Update or Delete

A single endpoint that handles create, update, and delete based on the input fields.

Lexicon type: procedure

function handle()
if input.delete and input.uri then
local r = Record.load(input.uri)
if r then r:delete() end
return { success = true }
end

if input.uri then
-- Update existing
local r = Record.load(input.uri)
if not r then error("not found") end
r.status = input.status
r:save()
return { uri = r._uri, cid = r._cid }
end

-- Create new
local r = Record(collection, input)
r:save()
return { uri = r._uri, cid = r._cid }
end
diff --git a/reference/scripts/upsert-record/index.html b/reference/scripts/upsert-record/index.html index 1cd49ca..015b80a 100644 --- a/reference/scripts/upsert-record/index.html +++ b/reference/scripts/upsert-record/index.html @@ -4,14 +4,14 @@ Procedure: Upsert a Record | HappyView - - + + -

Procedure: Upsert a Record

+

Procedure: Upsert a Record

Create a new record, or update an existing one if the client provides its rkey.

Lexicon type: procedure

function handle()
local rkey = input.rkey or TID()
local uri = "at://" .. caller_did .. "/" .. collection .. "/" .. rkey

local r = Record.load(uri)
if r then
-- Update existing record
r.status = input.status
r.updatedAt = now()
r:save()
else
-- Create new record
r = Record(collection, {
status = input.status,
createdAt = now(),
updatedAt = now(),
})
r:set_rkey(rkey)
r:save()
end

return { uri = r._uri, cid = r._cid }
end
diff --git a/reference/troubleshooting/index.html b/reference/troubleshooting/index.html index fdb3c6f..c710b75 100644 --- a/reference/troubleshooting/index.html +++ b/reference/troubleshooting/index.html @@ -4,8 +4,8 @@ Troubleshooting | HappyView - - + + diff --git a/reference/xrpc-api/index.html b/reference/xrpc-api/index.html index e77d4cd..4f7529e 100644 --- a/reference/xrpc-api/index.html +++ b/reference/xrpc-api/index.html @@ -4,8 +4,8 @@ XRPC API | HappyView - - + + diff --git a/sitemap.xml b/sitemap.xml index 4a15a3f..743d9e7 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://happyview.dev/getting-started/authenticationweekly0.5https://happyview.dev/getting-started/configurationweekly0.5https://happyview.dev/getting-started/dashboardweekly0.5https://happyview.dev/getting-started/deployment/dockerweekly0.5https://happyview.dev/getting-started/deployment/otherweekly0.5https://happyview.dev/getting-started/deployment/railwayweekly0.5https://happyview.dev/getting-started/quickstartweekly0.5https://happyview.dev/guides/backfillweekly0.5https://happyview.dev/guides/event-logsweekly0.5https://happyview.dev/guides/index-hooksweekly0.5https://happyview.dev/guides/lexiconsweekly0.5https://happyview.dev/guides/scriptingweekly0.5https://happyview.dev/reference/admin-apiweekly0.5https://happyview.dev/reference/architectureweekly0.5https://happyview.dev/reference/changelogweekly0.5https://happyview.dev/reference/glossaryweekly0.5https://happyview.dev/reference/production-deploymentweekly0.5https://happyview.dev/reference/scripts/algolia-syncweekly0.5https://happyview.dev/reference/scripts/batch-saveweekly0.5https://happyview.dev/reference/scripts/cascading-deleteweekly0.5https://happyview.dev/reference/scripts/complex-mutationsweekly0.5https://happyview.dev/reference/scripts/create-recordweekly0.5https://happyview.dev/reference/scripts/expanded-queryweekly0.5https://happyview.dev/reference/scripts/get-recordweekly0.5https://happyview.dev/reference/scripts/list-or-fetchweekly0.5https://happyview.dev/reference/scripts/paginated-listweekly0.5https://happyview.dev/reference/scripts/sidecar-recordsweekly0.5https://happyview.dev/reference/scripts/update-or-deleteweekly0.5https://happyview.dev/reference/scripts/upsert-recordweekly0.5https://happyview.dev/reference/troubleshootingweekly0.5https://happyview.dev/reference/xrpc-apiweekly0.5https://happyview.dev/tutorials/statusphereweekly0.5https://happyview.dev/weekly0.5 \ No newline at end of file +https://happyview.dev/getting-started/authenticationweekly0.5https://happyview.dev/getting-started/configurationweekly0.5https://happyview.dev/getting-started/dashboardweekly0.5https://happyview.dev/getting-started/deployment/dockerweekly0.5https://happyview.dev/getting-started/deployment/otherweekly0.5https://happyview.dev/getting-started/deployment/railwayweekly0.5https://happyview.dev/getting-started/quickstartweekly0.5https://happyview.dev/guides/api-keysweekly0.5https://happyview.dev/guides/backfillweekly0.5https://happyview.dev/guides/event-logsweekly0.5https://happyview.dev/guides/index-hooksweekly0.5https://happyview.dev/guides/lexiconsweekly0.5https://happyview.dev/guides/scriptingweekly0.5https://happyview.dev/reference/admin-apiweekly0.5https://happyview.dev/reference/architectureweekly0.5https://happyview.dev/reference/changelogweekly0.5https://happyview.dev/reference/glossaryweekly0.5https://happyview.dev/reference/production-deploymentweekly0.5https://happyview.dev/reference/scripts/algolia-syncweekly0.5https://happyview.dev/reference/scripts/batch-saveweekly0.5https://happyview.dev/reference/scripts/cascading-deleteweekly0.5https://happyview.dev/reference/scripts/complex-mutationsweekly0.5https://happyview.dev/reference/scripts/create-recordweekly0.5https://happyview.dev/reference/scripts/expanded-queryweekly0.5https://happyview.dev/reference/scripts/get-recordweekly0.5https://happyview.dev/reference/scripts/list-or-fetchweekly0.5https://happyview.dev/reference/scripts/meilisearch-syncweekly0.5https://happyview.dev/reference/scripts/paginated-listweekly0.5https://happyview.dev/reference/scripts/sidecar-recordsweekly0.5https://happyview.dev/reference/scripts/update-or-deleteweekly0.5https://happyview.dev/reference/scripts/upsert-recordweekly0.5https://happyview.dev/reference/troubleshootingweekly0.5https://happyview.dev/reference/xrpc-apiweekly0.5https://happyview.dev/tutorials/statusphereweekly0.5https://happyview.dev/weekly0.5 \ No newline at end of file diff --git a/tutorials/statusphere/index.html b/tutorials/statusphere/index.html index 9f1fb3e..bc5b18a 100644 --- a/tutorials/statusphere/index.html +++ b/tutorials/statusphere/index.html @@ -4,8 +4,8 @@ Tutorial: Statusphere with HappyView | HappyView - - + +