From 10bfde7aa688208a24394799002f420dc178baa2 Mon Sep 17 00:00:00 2001 From: jpraynaud Date: Wed, 12 Jul 2023 14:46:58 +0000 Subject: [PATCH] deploy: 12e3af1ef4734b8232ac784294577c3796f9475d --- doc/404.html | 10 +++--- doc/adr/1/index.html | 10 +++--- doc/adr/2/index.html | 10 +++--- doc/adr/3/index.html | 10 +++--- doc/adr/4/index.html | 10 +++--- doc/adr/5/index.html | 10 +++--- doc/adr/archive/index.html | 10 +++--- doc/adr/index.html | 10 +++--- doc/adr/tags/accepted/index.html | 10 +++--- doc/adr/tags/draft/index.html | 10 +++--- doc/adr/tags/index.html | 10 +++--- doc/aggregator-api/index.html | 10 +++--- ...eline-c08a26df2c156d2b0ebe16e4a98f1a92.png | Bin 0 -> 97993 bytes doc/assets/js/146c26a3.0b64daba.js | 1 - doc/assets/js/146c26a3.72413291.js | 1 + doc/assets/js/183a8603.1d284b43.js | 1 + doc/assets/js/183a8603.6826b1f2.js | 1 - ...fbc77.17dd71c8.js => 1d3fbc77.b0ef7309.js} | 2 +- .../js/{5679.e4889765.js => 5679.3e1ca37c.js} | 4 +-- ...CENSE.txt => 5679.3e1ca37c.js.LICENSE.txt} | 2 +- doc/assets/js/5df169af.2c6ae1d8.js | 1 - doc/assets/js/5df169af.f5b5126d.js | 1 + doc/assets/js/5efc9d3d.18f576fa.js | 1 + doc/assets/js/5efc9d3d.b5133580.js | 1 - ...98297.c23b728a.js => 65298297.fd1aabc1.js} | 2 +- doc/assets/js/74e3af8e.013331ec.js | 1 - doc/assets/js/74e3af8e.63c8a237.js | 1 + doc/assets/js/935f2afb.1ddcf4a5.js | 1 + doc/assets/js/935f2afb.9b2ea369.js | 1 - doc/assets/js/96ff2227.192469da.js | 1 - doc/assets/js/96ff2227.531440d9.js | 1 + ...4d126.9bfaa316.js => c554d126.1c7dfe53.js} | 2 +- doc/assets/js/c88ce025.628a06d0.js | 1 - doc/assets/js/c88ce025.81f74ad6.js | 1 + doc/assets/js/cab446d6.2b783f67.js | 1 + doc/assets/js/d0bce024.0e176107.js | 1 + doc/assets/js/d0bce024.951b981c.js | 1 - ...087cc.576bd501.js => e7e087cc.7c3d62b1.js} | 2 +- doc/assets/js/f893c5dd.ac13b94b.js | 1 + doc/assets/js/f893c5dd.d54b363c.js | 1 - doc/assets/js/fd4f3ace.29862008.js | 1 + doc/assets/js/main.8bea37e0.js | 2 ++ ...CENSE.txt => main.8bea37e0.js.LICENSE.txt} | 0 doc/assets/js/main.f76ed306.js | 2 -- doc/assets/js/runtime~main.24230e5f.js | 1 - doc/assets/js/runtime~main.ac6f42cb.js | 1 + doc/category/developer-docs/index.html | 10 +++--- doc/category/getting-started/index.html | 10 +++--- doc/category/mithril-network-nodes/index.html | 10 +++--- doc/category/mithril-network/index.html | 10 +++--- doc/category/mithril-protocol/index.html | 10 +++--- doc/compiled-binaries/index.html | 15 +++++---- .../07/genesis-certificate-feature/index.html | 10 +++--- .../09/12/certificate-signers-list/index.html | 10 +++--- .../stake-distribution-retrieval/index.html | 10 +++--- .../2022/09/14/sqlite-stores/index.html | 10 +++--- .../10/11/keys-certification-badge/index.html | 10 +++--- .../10/28/updated-environments/index.html | 10 +++--- .../2022/12/05/release-process/index.html | 10 +++--- .../2023/03/02/era-switch-feature/index.html | 10 +++--- .../06/14/new-client-interface/index.html | 10 +++--- .../06/28/signer-deployment-models/index.html | 10 +++--- doc/dev-blog/archive/index.html | 10 +++--- doc/dev-blog/index.html | 10 +++--- doc/dev-blog/tags/breaking-change/index.html | 10 +++--- doc/dev-blog/tags/cardano/index.html | 10 +++--- doc/dev-blog/tags/certificate/index.html | 10 +++--- doc/dev-blog/tags/client/index.html | 10 +++--- doc/dev-blog/tags/deployment-model/index.html | 10 +++--- doc/dev-blog/tags/environments/index.html | 10 +++--- doc/dev-blog/tags/era-activation/index.html | 10 +++--- doc/dev-blog/tags/era-markers/index.html | 10 +++--- doc/dev-blog/tags/era-switch/index.html | 10 +++--- doc/dev-blog/tags/era/index.html | 10 +++--- doc/dev-blog/tags/genesis/index.html | 10 +++--- doc/dev-blog/tags/hard-fork/index.html | 10 +++--- doc/dev-blog/tags/hybrid-mode/index.html | 10 +++--- doc/dev-blog/tags/index.html | 10 +++--- doc/dev-blog/tags/kes-keys/index.html | 10 +++--- doc/dev-blog/tags/mithril-keys/index.html | 10 +++--- doc/dev-blog/tags/mithril-signer/index.html | 10 +++--- .../mithril-stake-distribution/index.html | 10 +++--- .../tags/operational-certificate/index.html | 10 +++--- doc/dev-blog/tags/pool-id/index.html | 10 +++--- doc/dev-blog/tags/preprod/index.html | 10 +++--- doc/dev-blog/tags/preview/index.html | 10 +++--- doc/dev-blog/tags/process/index.html | 10 +++--- doc/dev-blog/tags/production/index.html | 10 +++--- doc/dev-blog/tags/re-spin/index.html | 10 +++--- doc/dev-blog/tags/release-process/index.html | 10 +++--- doc/dev-blog/tags/spo/index.html | 10 +++--- doc/dev-blog/tags/sqlite/index.html | 10 +++--- .../tags/stake-distribution/index.html | 10 +++--- doc/dev-blog/tags/store/index.html | 10 +++--- doc/glossary/index.html | 10 +++--- doc/index.html | 10 +++--- .../nodes/mithril-aggregator/index.html | 15 +++++---- .../nodes/mithril-client/index.html | 13 +++++--- .../nodes/mithril-signer/index.html | 13 +++++--- .../developer-docs/references/index.html | 10 +++--- .../SPO-on-boarding-guide/index.html | 31 ++++++++++++++++++ .../bootstrap-cardano-node/index.html | 13 +++++--- .../run-mithril-devnet/index.html | 10 +++--- .../run-signer-node/index.html | 17 ++++++---- doc/manual/welcome/index.html | 10 +++--- doc/mithril/intro/index.html | 10 +++--- .../mithril-network/aggregator/index.html | 10 +++--- .../mithril-network/architecture/index.html | 10 +++--- doc/mithril/mithril-network/client/index.html | 10 +++--- doc/mithril/mithril-network/signer/index.html | 10 +++--- .../mithril-protocol/certificates/index.html | 10 +++--- .../mithril-protocol/protocol/index.html | 10 +++--- .../mithril-protocol/simulation/index.html | 10 +++--- doc/networks-matrix/index.html | 10 +++--- doc/next/category/developer-docs/index.html | 10 +++--- doc/next/category/getting-started/index.html | 10 +++--- .../category/mithril-network-nodes/index.html | 10 +++--- doc/next/category/mithril-network/index.html | 10 +++--- doc/next/category/mithril-protocol/index.html | 10 +++--- doc/next/compiled-binaries/index.html | 10 +++--- doc/next/glossary/index.html | 10 +++--- .../nodes/mithril-aggregator/index.html | 10 +++--- .../nodes/mithril-client/index.html | 10 +++--- .../nodes/mithril-signer/index.html | 10 +++--- .../developer-docs/references/index.html | 10 +++--- .../SPO-on-boarding-guide/index.html | 31 ++++++++++++++++++ .../bootstrap-cardano-node/index.html | 12 +++---- .../run-mithril-devnet/index.html | 10 +++--- .../run-signer-node/index.html | 10 +++--- doc/next/manual/welcome/index.html | 10 +++--- doc/next/mithril/intro/index.html | 10 +++--- .../mithril-network/aggregator/index.html | 10 +++--- .../mithril-network/architecture/index.html | 10 +++--- .../mithril/mithril-network/client/index.html | 10 +++--- .../mithril/mithril-network/signer/index.html | 10 +++--- .../mithril-protocol/certificates/index.html | 10 +++--- .../mithril-protocol/protocol/index.html | 10 +++--- .../mithril-protocol/simulation/index.html | 10 +++--- doc/next/networks-matrix/index.html | 10 +++--- doc/sitemap.xml | 2 +- explorer/404.html | 2 +- .../_buildManifest.js | 0 .../_ssgManifest.js | 0 explorer/index.html | 2 +- rust-doc/help.html | 2 +- rust-doc/settings.html | 2 +- 146 files changed, 627 insertions(+), 545 deletions(-) create mode 100644 doc/assets/images/spo-onboarding-timeline-c08a26df2c156d2b0ebe16e4a98f1a92.png delete mode 100644 doc/assets/js/146c26a3.0b64daba.js create mode 100644 doc/assets/js/146c26a3.72413291.js create mode 100644 doc/assets/js/183a8603.1d284b43.js delete mode 100644 doc/assets/js/183a8603.6826b1f2.js rename doc/assets/js/{1d3fbc77.17dd71c8.js => 1d3fbc77.b0ef7309.js} (99%) rename doc/assets/js/{5679.e4889765.js => 5679.3e1ca37c.js} (82%) rename doc/assets/js/{5679.e4889765.js.LICENSE.txt => 5679.3e1ca37c.js.LICENSE.txt} (94%) delete mode 100644 doc/assets/js/5df169af.2c6ae1d8.js create mode 100644 doc/assets/js/5df169af.f5b5126d.js create mode 100644 doc/assets/js/5efc9d3d.18f576fa.js delete mode 100644 doc/assets/js/5efc9d3d.b5133580.js rename doc/assets/js/{65298297.c23b728a.js => 65298297.fd1aabc1.js} (57%) delete mode 100644 doc/assets/js/74e3af8e.013331ec.js create mode 100644 doc/assets/js/74e3af8e.63c8a237.js create mode 100644 doc/assets/js/935f2afb.1ddcf4a5.js delete mode 100644 doc/assets/js/935f2afb.9b2ea369.js delete mode 100644 doc/assets/js/96ff2227.192469da.js create mode 100644 doc/assets/js/96ff2227.531440d9.js rename doc/assets/js/{c554d126.9bfaa316.js => c554d126.1c7dfe53.js} (59%) delete mode 100644 doc/assets/js/c88ce025.628a06d0.js create mode 100644 doc/assets/js/c88ce025.81f74ad6.js create mode 100644 doc/assets/js/cab446d6.2b783f67.js create mode 100644 doc/assets/js/d0bce024.0e176107.js delete mode 100644 doc/assets/js/d0bce024.951b981c.js rename doc/assets/js/{e7e087cc.576bd501.js => e7e087cc.7c3d62b1.js} (99%) create mode 100644 doc/assets/js/f893c5dd.ac13b94b.js delete mode 100644 doc/assets/js/f893c5dd.d54b363c.js create mode 100644 doc/assets/js/fd4f3ace.29862008.js create mode 100644 doc/assets/js/main.8bea37e0.js rename doc/assets/js/{main.f76ed306.js.LICENSE.txt => main.8bea37e0.js.LICENSE.txt} (100%) delete mode 100644 doc/assets/js/main.f76ed306.js delete mode 100644 doc/assets/js/runtime~main.24230e5f.js create mode 100644 doc/assets/js/runtime~main.ac6f42cb.js create mode 100644 doc/manual/getting-started/SPO-on-boarding-guide/index.html create mode 100644 doc/next/manual/getting-started/SPO-on-boarding-guide/index.html rename explorer/_next/static/{pN_gPoaX_6ETzWuFJS-Cu => 9BRUa-1jN8kMq9B1xGOSG}/_buildManifest.js (100%) rename explorer/_next/static/{pN_gPoaX_6ETzWuFJS-Cu => 9BRUa-1jN8kMq9B1xGOSG}/_ssgManifest.js (100%) diff --git a/doc/404.html b/doc/404.html index 9882be26e5b..ceeef1ac87d 100644 --- a/doc/404.html +++ b/doc/404.html @@ -18,13 +18,13 @@ - - + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

+ + \ No newline at end of file diff --git a/doc/adr/1/index.html b/doc/adr/1/index.html index ebea2c9dcf3..998618eb130 100644 --- a/doc/adr/1/index.html +++ b/doc/adr/1/index.html @@ -18,12 +18,12 @@ - - + +
-
Skip to main content
- - + + \ No newline at end of file diff --git a/doc/adr/2/index.html b/doc/adr/2/index.html index a75f02abf0d..40ae15786cc 100644 --- a/doc/adr/2/index.html +++ b/doc/adr/2/index.html @@ -18,12 +18,12 @@ - - + +
-
Skip to main content
- - + + \ No newline at end of file diff --git a/doc/adr/3/index.html b/doc/adr/3/index.html index f4d3db3d7f0..a29e52ecfb4 100644 --- a/doc/adr/3/index.html +++ b/doc/adr/3/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/4/index.html b/doc/adr/4/index.html index 7e19b07fd6a..dbe600f480b 100644 --- a/doc/adr/4/index.html +++ b/doc/adr/4/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/5/index.html b/doc/adr/5/index.html index 61636f56cbc..563b2b52414 100644 --- a/doc/adr/5/index.html +++ b/doc/adr/5/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/archive/index.html b/doc/adr/archive/index.html index e8f9b7b2244..b56c363f9eb 100644 --- a/doc/adr/archive/index.html +++ b/doc/adr/archive/index.html @@ -18,18 +18,18 @@ - - + +
-

Archive

Archive

- - + + \ No newline at end of file diff --git a/doc/adr/index.html b/doc/adr/index.html index 5dccd071d61..01d988d0e39 100644 --- a/doc/adr/index.html +++ b/doc/adr/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/tags/accepted/index.html b/doc/adr/tags/accepted/index.html index e8e1b0f9ffe..5ec5e0cfa11 100644 --- a/doc/adr/tags/accepted/index.html +++ b/doc/adr/tags/accepted/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/tags/draft/index.html b/doc/adr/tags/draft/index.html index aaa7d405344..9d9a616a350 100644 --- a/doc/adr/tags/draft/index.html +++ b/doc/adr/tags/draft/index.html @@ -18,12 +18,12 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/adr/tags/index.html b/doc/adr/tags/index.html index 942aa164864..b04e46f6eea 100644 --- a/doc/adr/tags/index.html +++ b/doc/adr/tags/index.html @@ -18,18 +18,18 @@ - - + +
-
- - + + \ No newline at end of file diff --git a/doc/aggregator-api/index.html b/doc/aggregator-api/index.html index 78475537a52..5c035f98ba4 100644 --- a/doc/aggregator-api/index.html +++ b/doc/aggregator-api/index.html @@ -24,12 +24,12 @@ - - + +
-
412

API version mismatch

Request samples

Content type
application/json
{
  • "entity_type": {
    },
  • "party_id": "1234567890",
  • "signature": "7b2c36322c3130352c3232322c31302c3131302c33312c37312c39372c22766b223a5b3136342c2c31393137352c313834",
  • "indexes": [
    ]
}

Response samples

Content type
application/json
{
  • "label": "Internal error",
  • "message": "An error occurred, the operation could not be completed"
}
- - + + \ No newline at end of file diff --git a/doc/assets/images/spo-onboarding-timeline-c08a26df2c156d2b0ebe16e4a98f1a92.png b/doc/assets/images/spo-onboarding-timeline-c08a26df2c156d2b0ebe16e4a98f1a92.png new file mode 100644 index 0000000000000000000000000000000000000000..d581e97aabcb3eab9546675222e191ba1902e148 GIT binary patch literal 97993 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 z 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

ZVkTXbS47~LUJyfqX@sw?y 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

Pq3{M^BfLdX=|Kjmt$bNh)W8B<%W(%vDzdWVsgH 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 literal 0 HcmV?d00001 diff --git a/doc/assets/js/146c26a3.0b64daba.js b/doc/assets/js/146c26a3.0b64daba.js deleted file mode 100644 index 432aee3d640..00000000000 --- a/doc/assets/js/146c26a3.0b64daba.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[2414],{3905:(e,a,t)=>{t.d(a,{Zo:()=>l,kt:()=>h});var n=t(67294);function o(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function d(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var a=1;a=0||(o[t]=e[t]);return o}(e,a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),c=function(e){var a=n.useContext(s),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},l=function(e){var a=c(e.components);return n.createElement(s.Provider,{value:a},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},b=n.forwardRef((function(e,a){var t=e.components,o=e.mdxType,d=e.originalType,s=e.parentName,l=r(e,["components","mdxType","originalType","parentName"]),f=c(t),b=o,h=f["".concat(s,".").concat(b)]||f[b]||p[b]||d;return t?n.createElement(h,i(i({ref:a},l),{},{components:t})):n.createElement(h,i({ref:a},l))}));function h(e,a){var t=arguments,o=a&&a.mdxType;if("string"==typeof e||o){var d=t.length,i=new Array(d);i[0]=b;var r={};for(var s in a)hasOwnProperty.call(a,s)&&(r[s]=a[s]);r.originalType=e,r[f]="string"==typeof e?e:o,i[1]=r;for(var c=2;c{t.r(a),t.d(a,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>c});var n=t(87462),o=(t(67294),t(3905));const d={sidebar_position:3},i="Run a Private Mithril network",r={unversionedId:"manual/getting-started/run-mithril-devnet",id:"version-maintained/manual/getting-started/run-mithril-devnet",title:"Run a Private Mithril network",description:"In this guide, you will learn how to run a demonstration of a Mithril Network working on top of a private devnet Cardano Network. This network is completely autonomous and setup to produce Mithril snapshots every 1 minute.",source:"@site/versioned_docs/version-maintained/manual/getting-started/run-mithril-devnet.md",sourceDirName:"manual/getting-started",slug:"/manual/getting-started/run-mithril-devnet",permalink:"/doc/manual/getting-started/run-mithril-devnet",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/getting-started/run-mithril-devnet.md",tags:[],version:"maintained",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docSideBar",previous:{title:"Run a Mithril Signer node (SPO)",permalink:"/doc/manual/getting-started/run-signer-node"},next:{title:"Developer Docs",permalink:"/doc/category/developer-docs"}},s={},c=[{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"Download source",id:"download-source",level:2},{value:"Change directory",id:"change-directory",level:2},{value:"Run a Private Mithril/Cardano network locally (devnet)",id:"run-a-private-mithrilcardano-network-locally-devnet",level:2},{value:"Step 1: Launch the devnet",id:"step-1-launch-the-devnet",level:3},{value:"Step 2: Query the devnet",id:"step-2-query-the-devnet",level:3},{value:"Step 3: Observe the devnet",id:"step-3-observe-the-devnet",level:3},{value:"Interact with the Mithril Aggregator by using the Mithril Client",id:"interact-with-the-mithril-aggregator-by-using-the-mithril-client",level:2},{value:"Step 1: Prepare some useful variables",id:"step-1-prepare-some-useful-variables",level:3},{value:"Step 2: Select A Snapshot",id:"step-2-select-a-snapshot",level:3},{value:"Step 3: Show Snapshot Details",id:"step-3-show-snapshot-details",level:3},{value:"Step 4: Download and verify selected Snapshot",id:"step-4-download-and-verify-selected-snapshot",level:3}],l={toc:c},f="wrapper";function p(e){let{components:a,...d}=e;return(0,o.kt)(f,(0,n.Z)({},l,d,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"run-a-private-mithril-network"},"Run a Private Mithril network"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"In this guide, you will learn how to run a demonstration of a ",(0,o.kt)("strong",{parentName:"p"},"Mithril Network")," working on top of a private ",(0,o.kt)("inlineCode",{parentName:"p"},"devnet")," ",(0,o.kt)("strong",{parentName:"p"},"Cardano Network"),". This network is completely autonomous and setup to produce Mithril snapshots every 1 minute.")),(0,o.kt)("p",null,"The network will be launched with the following topology:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2")," ",(0,o.kt)("strong",{parentName:"li"},"Cardano Nodes")," configured as ",(0,o.kt)("strong",{parentName:"li"},"Stake Pool Operators (SPO)")," with a ",(0,o.kt)("strong",{parentName:"li"},"Mithril Signer")," on top"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"1")," ",(0,o.kt)("strong",{parentName:"li"},"Cardano Node")," configured as ",(0,o.kt)("strong",{parentName:"li"},"BFT node")," with a ",(0,o.kt)("strong",{parentName:"li"},"Mithril Aggregator")," on top")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Devnet Topology",src:t(51517).Z,width:"1010",height:"749"})),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"This demonstration is working only on a Linux machine.")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"More information about this private Cardano/Mithril ",(0,o.kt)("inlineCode",{parentName:"p"},"devnet")," is available ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-devnet/README.md"},"here"),".")),(0,o.kt)("h1",{id:"video-demonstration"},"Video demonstration"),(0,o.kt)("iframe",{style:{width:"100%",height:"480px"},src:"https://www.youtube.com/embed/qu3GoO1UwYI",title:"Run a Private Mithril network",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"true"}),(0,o.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Install a ",(0,o.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version).")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,o.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Ensure SQLite3 library is installed on your system and its version is at least ",(0,o.kt)("inlineCode",{parentName:"p"},"3.40"),". Run ",(0,o.kt)("inlineCode",{parentName:"p"},"sqlite3 --version")," to check your version."))),(0,o.kt)("h2",{id:"download-source"},"Download source"),(0,o.kt)("p",null,"Download from GitHub (HTTPS)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,o.kt)("p",null,"Or (SSH)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,o.kt)("h2",{id:"change-directory"},"Change directory"),(0,o.kt)("p",null,"Go to the devnet folder"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril-test-lab/mithril-devnet\n")),(0,o.kt)("h2",{id:"run-a-private-mithrilcardano-network-locally-devnet"},"Run a Private Mithril/Cardano network locally (",(0,o.kt)("inlineCode",{parentName:"h2"},"devnet"),")"),(0,o.kt)("h3",{id:"step-1-launch-the-devnet"},"Step 1: Launch the devnet"),(0,o.kt)("p",null,"Open a first terminal window."),(0,o.kt)("p",null,"Run a devnet with 1 BTF and 2 SPO Cardano nodes."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Option 1"),": Remote Docker images"),(0,o.kt)("p",null,"The network will be ready faster with remote Docker images."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"MITHRIL_IMAGE_ID=latest NUM_BFT_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh\n")),(0,o.kt)("p",null,"Or"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Option 2"),": Local Docker images"),(0,o.kt)("p",null,"This takes more time to build local Docker images of the Mithril nodes"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NUM_BFT_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh\n")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"You will see that the devnet is launched with the following steps:"),(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Bootstraping the devnet"),": generates the artifacts of the devnet depending on the configuration parameters (cryptographic keys, network topology, transactions to setup pool nodes, ...)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start Cardano Network"),": run the nodes of the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network"),", waits for it to be ready and activate the pool nodes"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start Mithril Network"),": run the nodes of the ",(0,o.kt)("strong",{parentName:"li"},"Mithril Network")," that works on top of the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network")))),(0,o.kt)("p",null,"You should see the following information displayed"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Bootstrap Mithril/Cardano devnet\n=====================================================================\n\n>> Directory: artifacts\n>> Cardano BFT nodes: 1\n>> Cardano SPO nodes: 2\n>> Info: Mithril Aggregator will be attached to the first Cardano BFT node\n>> Info: Mithril Signers will be attached to each Cardano SPO node\n\n=====================================================================\n Start Cardano nodes\n=====================================================================\n\n>> Start Cardano network\ncardano-node: no process found\n>> Starting Cardano node \'node-bft1\'\n>> Starting Cardano node \'node-pool1\'\n>> Starting Cardano node \'node-pool2\'\n>> Wait for Cardano network to be ready\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Ready!\n>> Activate Cardano pools\nEstimated transaction fee: Lovelace 843\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 843\nTransaction successfully submitted.\n>> Wait for Cardano pools to be activated\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Activated!\n>>>> Found PoolId: pool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys\n>>>> Found PoolId: pool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav\n\n=====================================================================\n Start Mithril nodes\n=====================================================================\n\n>> Start Mithril network\n>> Build Mithril node Docker images\n>>>> Building Mithril Aggregator node Docker image\n>>>> Building Mithril Client node Docker image\n>>>> Building Mithril Signer node Docker image\nNo stopped containers\nCreating network "artifacts_cardano_network" with driver "bridge"\nCreating network "artifacts_mithril_network" with driver "bridge"\nCreating artifacts_mithril-aggregator_1 ... done\nCreating artifacts_mithril-signer-node-pool1_1 ... done\nCreating artifacts_mithril-signer-node-pool2_1 ... done\nCreating artifacts_mithril-aggregator-genesis_run ... done\n{"msg":"Started","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925641527Z","hostname":"e932dff845aa","pid":1,"config":"Configuration { cardano_cli_path: \\"/app/bin/cardano-cli\\", cardano_node_socket_path: \\"/data/ipc/node.sock\\", network_magic: Some(42), network: \\"devnet\\", protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, url_snapshot_manifest: \\"\\", snapshot_store_type: Local, snapshot_uploader_type: Local, server_url: \\"http://0.0.0.0:8080/\\", run_interval: 1000, db_directory: \\"/data/db\\", snapshot_directory: \\"/data/mithril/aggregator\\", data_stores_directory: \\"/data/mithril/aggregator/stores\\", genesis_verification_key: \\"5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d\\" }","run_mode":"dev"}\n{"msg":"New LocalSnapshotUploader created","v":0,"name":"slog-rs","level":20Genesis bootstrap for test only\n,"time":"2022-09-06T09:24:31.925683285Z","hostname":"e932dff845aa","pid":1,"snapshot_server_url":"http://0.0.0.0:8080/"}\n{"msg":"New MultiSignerImpl created","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925711468Z","hostname":"e932dff845aa","pid":1}\n{"msg":"New MithrilCertificateVerifier created","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925736796Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Update current_beacon to Beacon { network: \\"devnet\\", epoch: Epoch(10), immutable_file_number: 47 }","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938337155Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get next signers with stake","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938384324Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get next stake distribution","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938422585Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get stake distribution with epoch offset","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938459565Z","hostname":"e932dff845aa","pid":1,"epoch_offset":0}\n{"msg":"Get next protocol parameters","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938500461Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get protocol parameters with epoch offset","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938535367Z","hostname":"e932dff845aa","pid":1,"epoch_offset":0}\n{"msg":"Create clerk","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.93856896Z","hostname":"e932dff845aa","pid":1}\nVerify genesis certificate #86a4c56d957636740a75c250fdd9d3b9a9f1539dc93449b1f80fcab49e279d6d @ epoch #10\n\n=====================================================================\n Schedule Cardano Stake Delegation\n=====================================================================\n\n>> Begin scheduled delegation\n>> 11:24:32: Wait 180s until next delegation round...\n>> Run delegation round #1!\n>>>> Current Epoch: 12\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\n>> 11:27:32: Wait 180s until next delegation round...\n>> Run delegation round #2!\n>>>> Current Epoch: 14\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\n>> 11:30:32: Wait 180s until next delegation round...\n')),(0,o.kt)("h3",{id:"step-2-query-the-devnet"},"Step 2: Query the devnet"),(0,o.kt)("p",null,"Open a second terminal window."),(0,o.kt)("p",null,"Watch the state queried from the devnet"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"watch -n 1 ./devnet-query.sh\n")),(0,o.kt)("p",null,"The networks will be queried every ",(0,o.kt)("inlineCode",{parentName:"p"},"1s")," and will display:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Certificate production informations gathered from the ",(0,o.kt)("strong",{parentName:"li"},"Mithril Network")),(0,o.kt)("li",{parentName:"ul"},"Utxo, Stake Pools, Stake Distribution from the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Query Mithril/Cardano devnet\n=====================================================================\n\n=====================================================================\n=== Mithril Network\n=====================================================================\n\n>> Query pending certificate\n{\n "beacon": {\n "network": "devnet",\n "epoch": 2,\n "immutable_file_number": 6\n },\n "protocol": {\n "k": 5,\n "m": 100,\n "phi_f": 0.65\n },\n "signers": []\n}\n\n>> Query snapshots\n[\n {\n "digest": "224b77ad9cbe7fc81e6808940d391b299c27e77d9978641025f382e2e5ddd2ac",\n "certificate_hash": "5b29543c4af0f369d40e1da53451ebd8a39c4263df1585eb072f54511c1e3333",\n "size": 7986,\n "created_at": "2022-07-05T11:26:55.855498395Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/224b77ad9cbe7fc81e6808940d391b299c27e77d9978641025f382e2e5ddd2ac/download"\n ]\n },\n {\n "digest": "1a39f57c906133421ab7b5c782762b6abff4771b5e9158a977e58db1edc26bd0",\n "certificate_hash": "be758b84a4b495e82af48747356946efb509ccbc4b44a9c985e3cb3099e35c94",\n "size": 6743,\n "created_at": "2022-07-05T11:26:35.658661878Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/1a39f57c906133421ab7b5c782762b6abff4771b5e9158a977e58db1edc26bd0/download"\n ]\n },\n {\n "digest": "fd1a39d28998ba18c96547f62d308c57612ed348be058f615c14db5228a947c1",\n "certificate_hash": "4254a6176afbe17967ad1671e4619e9a3f3412115a63dd0eb0f5e8b64094128a",\n "size": 6199,\n "created_at": "2022-07-05T11:26:20.470029035Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/fd1a39d28998ba18c96547f62d308c57612ed348be058f615c14db5228a947c1/download"\n ]\n }\n]\n\n=====================================================================\n=== Cardano Network\n=====================================================================\n\n>> Query chain tip\n{\n "era": "Alonzo",\n "syncProgress": "100.00",\n "hash": "075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452",\n "epoch": 2,\n "slot": 219,\n "block": 9\n}\n\n>> Query whole utxo\n TxHash TxIx Amount\n--------------------------------------------------------------------------------------\n4980fb7c90bc003f6af65778008732cd1b1a8c0873b7d622bfb7442f1312c9b5 0 447999157 lovelace + TxOutDatumNone\n4980fb7c90bc003f6af65778008732cd1b1a8c0873b7d622bfb7442f1312c9b5 1 2000000 lovelace + TxOutDatumNone\nc31e535531c9eb32bdd8f05e25204186333262674d24c6a770b6b120f020d9a9 0 448999157 lovelace + TxOutDatumNone\nc31e535531c9eb32bdd8f05e25204186333262674d24c6a770b6b120f020d9a9 1 1000000 lovelace + TxOutDatumNone\ned265b672873192ea1e9c19092e8f41947c28977438bcff580312de37cfbd46c 0 1002000000 lovelace + TxOutDatumNone\n\n>> Query stake pools\npool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys\npool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav\n\n>> Query stake distribution\n PoolId Stake frac\n------------------------------------------------------------------------------\npool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys 1.052e-3\npool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav 5.258e-4\n')),(0,o.kt)("h3",{id:"step-3-observe-the-devnet"},"Step 3: Observe the devnet"),(0,o.kt)("p",null,"Open a third terminal window."),(0,o.kt)("p",null,"Watch the logs of each node of the devnet"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"watch -n 1 LINES=5 ./devnet-log.sh\n")),(0,o.kt)("p",null,"The nodes will be queried every ",(0,o.kt)("inlineCode",{parentName:"p"},"1s")," and will display as below"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Logs Mithril/Cardano devnet\n=====================================================================\n\n=====================================================================\n-- docker compose logs --tail=5\n=====================================================================\nAttaching to artifacts_mithril-signer-node-pool1_1, artifacts_mithril-signer-node-pool2_1, artifacts_mithril-aggregator_1\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.726760492Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Get signer pool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav","v":0,"name":"slog-rs","level":20,"time":"2022-07-05T11:29:32.72678048Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.72679661Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Get signer pool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys","v":0,"name":"slog-rs","level":20,"time":"2022-07-05T11:29:32.734529107Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.734553714Z","hostname":"ba17593540ac","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Signing digest","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744124074Z","hostname":"4fc53f5ce413","pid":1,"digester_result":"DigesterResult {\\n digest: \\"e5ac1579a3fff12bf19ef88b0d9ec9d8a1c53e4d74c38c023b2e33638f454d67\\",\\n last_immutable_file_number: 17,\\n}"}\nmithril-signer-node-pool1_1 | {"msg":"Register signatures","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744140625Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.744155293Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"SingleSignaturesComputeFailed(UnregisteredVerificationKey)","v":0,"name":"slog-rs","level":50,"time":"2022-07-05T11:29:32.744336041Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Sleeping for 1000","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744352051Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Signing digest","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.73359119Z","hostname":"1c671096ee3f","pid":1,"digester_result":"DigesterResult {\\n digest: \\"e5ac1579a3fff12bf19ef88b0d9ec9d8a1c53e4d74c38c023b2e33638f454d67\\",\\n last_immutable_file_number: 17,\\n}"}\nmithril-signer-node-pool2_1 | {"msg":"Register signatures","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.733607821Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.733623511Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"SingleSignaturesComputeFailed(UnregisteredVerificationKey)","v":0,"name":"slog-rs","level":50,"time":"2022-07-05T11:29:32.733786246Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Sleeping for 1000","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.733802416Z","hostname":"1c671096ee3f","pid":1}\n\n=====================================================================\n=====================================================================\ntail -n 22 ./node-bft1/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.76 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.75 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.76 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.26 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.26 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.75 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.50 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n=====================================================================\ntail -n 22 ./node-pool1/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.76 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.76 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.75 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.26 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.26 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.76 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.51 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n=====================================================================\ntail -n 22 ./node-pool2/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.75 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.76 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.75 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.25 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.25 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.76 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.50 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n')),(0,o.kt)("h2",{id:"interact-with-the-mithril-aggregator-by-using-the-mithril-client"},"Interact with the Mithril Aggregator by using the Mithril Client"),(0,o.kt)("h3",{id:"step-1-prepare-some-useful-variables"},"Step 1: Prepare some useful variables"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# Cardano network\nNETWORK=devnet\n\n# Aggregator API endpoint URL\nAGGREGATOR_ENDPOINT=http://localhost:8080/aggregator\n\n# Digest of the latest produced snapshot for convenience of the demo\n# You can also modify this variable and set it to the value of the digest of a snapshot that you can retrieve at step 2\nSNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,o.kt)("p",null,"You can pick an online test aggregator directly from the ",(0,o.kt)("a",{parentName:"p",href:"https://mithril.network/explorer"},"Mithril explorer"),"."),(0,o.kt)("h3",{id:"step-2-select-a-snapshot"},"Step 2: Select A Snapshot"),(0,o.kt)("p",null,"List the available snapshots with which you can bootstrap a Cardano node"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot list\n")),(0,o.kt)("p",null,"You will see a list of snapshots"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| Epoch | Immutable | Network | Digest | Size | Locations | Created |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4387 | preview | 83579cd3bd89438f86e626b102bab6132eef95d01b736ffa19e96d055ba6a596 | 2086080281 | 1 | 2023-06-01T12:43:23.782943645Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4383 | preview | 7068029bee4996edf15b8f1e7120c3320ca50491ccbdc5841ac072e84bfe4c4d | 2084049995 | 1 | 2023-06-01T07:47:44.359699075Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4382 | preview | da32d417c7fc6bbdbd780191c81f0264cea0af9dbb1bbd0fc7fdcf6e0976cb75 | 2084517087 | 1 | 2023-06-01T06:31:17.609437466Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4381 | preview | a045b7b552c8412dbd0cfe4d418b7ac3a0cf39bfb5ad4d1a39a164217a394e40 | 2084235879 | 1 | 2023-06-01T05:10:52.039770378Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4380 | preview | 9a88639bd59492c3cb67d9d1ac005998292e41faa7e116ff05c5de2d08a8374e | 2083904532 | 1 | 2023-06-01T03:56:43.834905913Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n\n")),(0,o.kt)("h3",{id:"step-3-show-snapshot-details"},"Step 3: Show Snapshot Details"),(0,o.kt)("p",null,"Get some more details from a specific snapshot (Optional)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot show $SNAPSHOT_DIGEST\n")),(0,o.kt)("p",null,"You will see more information about a snapshot"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"+-----------------------+-----------------------------------------------------------------------------------------+\n| Info | Value |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Epoch | 218 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Immutable File Number | 4367 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Network | preview |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Digest | 5f6e925144d9f6f425b79a0b2db92040738505a0b645ab5f3277f45f8879d2ac |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Size | 2080819008 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Location 1 | https://storage.googleapis.com/mithril-pre-release-preview-cs/preview-e2\u2026879d2ac.tar.gz |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Created | 2023-05-31T12:50:45.978711344Z |\n+-----------------------+-----------------------------------------------------------------------------------------+\n\n")),(0,o.kt)("h3",{id:"step-4-download-and-verify-selected-snapshot"},"Step 4: Download and verify selected Snapshot"),(0,o.kt)("p",null,"Download the selected snapshot from the remote location to your remote location"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot download $SNAPSHOT_DIGEST\n")),(0,o.kt)("p",null,"You will see that the certificate chain is validated to ensure the issued certificate is genuine and then the selected snapshot archive is downloaded, unpacked and verified against the corresponding certificate."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'Download success 85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917 #1\nfrom http://0.0.0.0:8080/aggregator/snapshot/85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/download\nto /home/mithril/data/devnet /85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/snapshot.archive.tar.gz\nUnpacking snapshot...\nUnpack success 85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917\nto /home/mithril/data/devnet /85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/db\n\nRestore a Cardano Node with:\n\ndocker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data \\\n --mount type=bind,source="./data/devnet/85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/db",target=/data/db/ \\\n -e NETWORK=devnet \\\n inputoutput/cardano-node\n')))}p.isMDXComponent=!0},51517:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/devnet-topology-ca1bd25169f32020115ed1c52a4d1d59.png"}}]); \ No newline at end of file diff --git a/doc/assets/js/146c26a3.72413291.js b/doc/assets/js/146c26a3.72413291.js new file mode 100644 index 00000000000..153db4b70ba --- /dev/null +++ b/doc/assets/js/146c26a3.72413291.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[2414],{3905:(e,a,t)=>{t.d(a,{Zo:()=>l,kt:()=>h});var n=t(67294);function o(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function d(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var a=1;a=0||(o[t]=e[t]);return o}(e,a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=n.createContext({}),c=function(e){var a=n.useContext(s),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},l=function(e){var a=c(e.components);return n.createElement(s.Provider,{value:a},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},b=n.forwardRef((function(e,a){var t=e.components,o=e.mdxType,d=e.originalType,s=e.parentName,l=r(e,["components","mdxType","originalType","parentName"]),f=c(t),b=o,h=f["".concat(s,".").concat(b)]||f[b]||p[b]||d;return t?n.createElement(h,i(i({ref:a},l),{},{components:t})):n.createElement(h,i({ref:a},l))}));function h(e,a){var t=arguments,o=a&&a.mdxType;if("string"==typeof e||o){var d=t.length,i=new Array(d);i[0]=b;var r={};for(var s in a)hasOwnProperty.call(a,s)&&(r[s]=a[s]);r.originalType=e,r[f]="string"==typeof e?e:o,i[1]=r;for(var c=2;c{t.r(a),t.d(a,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>c});var n=t(87462),o=(t(67294),t(3905));const d={sidebar_position:4},i="Run a Private Mithril network",r={unversionedId:"manual/getting-started/run-mithril-devnet",id:"version-maintained/manual/getting-started/run-mithril-devnet",title:"Run a Private Mithril network",description:"In this guide, you will learn how to run a demonstration of a Mithril Network working on top of a private devnet Cardano Network. This network is completely autonomous and setup to produce Mithril snapshots every 1 minute.",source:"@site/versioned_docs/version-maintained/manual/getting-started/run-mithril-devnet.md",sourceDirName:"manual/getting-started",slug:"/manual/getting-started/run-mithril-devnet",permalink:"/doc/manual/getting-started/run-mithril-devnet",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/getting-started/run-mithril-devnet.md",tags:[],version:"maintained",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"docSideBar",previous:{title:"Run a Mithril Signer node (SPO)",permalink:"/doc/manual/getting-started/run-signer-node"},next:{title:"Developer Docs",permalink:"/doc/category/developer-docs"}},s={},c=[{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"Download source",id:"download-source",level:2},{value:"Change directory",id:"change-directory",level:2},{value:"Run a Private Mithril/Cardano network locally (devnet)",id:"run-a-private-mithrilcardano-network-locally-devnet",level:2},{value:"Step 1: Launch the devnet",id:"step-1-launch-the-devnet",level:3},{value:"Step 2: Query the devnet",id:"step-2-query-the-devnet",level:3},{value:"Step 3: Observe the devnet",id:"step-3-observe-the-devnet",level:3},{value:"Interact with the Mithril Aggregator by using the Mithril Client",id:"interact-with-the-mithril-aggregator-by-using-the-mithril-client",level:2},{value:"Step 1: Prepare some useful variables",id:"step-1-prepare-some-useful-variables",level:3},{value:"Step 2: Select A Snapshot",id:"step-2-select-a-snapshot",level:3},{value:"Step 3: Show Snapshot Details",id:"step-3-show-snapshot-details",level:3},{value:"Step 4: Download and verify selected Snapshot",id:"step-4-download-and-verify-selected-snapshot",level:3}],l={toc:c},f="wrapper";function p(e){let{components:a,...d}=e;return(0,o.kt)(f,(0,n.Z)({},l,d,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"run-a-private-mithril-network"},"Run a Private Mithril network"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"In this guide, you will learn how to run a demonstration of a ",(0,o.kt)("strong",{parentName:"p"},"Mithril Network")," working on top of a private ",(0,o.kt)("inlineCode",{parentName:"p"},"devnet")," ",(0,o.kt)("strong",{parentName:"p"},"Cardano Network"),". This network is completely autonomous and setup to produce Mithril snapshots every 1 minute.")),(0,o.kt)("p",null,"The network will be launched with the following topology:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"2")," ",(0,o.kt)("strong",{parentName:"li"},"Cardano Nodes")," configured as ",(0,o.kt)("strong",{parentName:"li"},"Stake Pool Operators (SPO)")," with a ",(0,o.kt)("strong",{parentName:"li"},"Mithril Signer")," on top"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"1")," ",(0,o.kt)("strong",{parentName:"li"},"Cardano Node")," configured as ",(0,o.kt)("strong",{parentName:"li"},"BFT node")," with a ",(0,o.kt)("strong",{parentName:"li"},"Mithril Aggregator")," on top")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Devnet Topology",src:t(51517).Z,width:"1010",height:"749"})),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"This demonstration is working only on a Linux machine.")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"More information about this private Cardano/Mithril ",(0,o.kt)("inlineCode",{parentName:"p"},"devnet")," is available ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/blob/main/mithril-test-lab/mithril-devnet/README.md"},"here"),".")),(0,o.kt)("h1",{id:"video-demonstration"},"Video demonstration"),(0,o.kt)("iframe",{style:{width:"100%",height:"480px"},src:"https://www.youtube.com/embed/qu3GoO1UwYI",title:"Run a Private Mithril network",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:"true"}),(0,o.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Install a ",(0,o.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version).")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,o.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev")))),(0,o.kt)("h2",{id:"download-source"},"Download source"),(0,o.kt)("p",null,"Download from GitHub (HTTPS)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,o.kt)("p",null,"Or (SSH)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,o.kt)("h2",{id:"change-directory"},"Change directory"),(0,o.kt)("p",null,"Go to the devnet folder"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril-test-lab/mithril-devnet\n")),(0,o.kt)("h2",{id:"run-a-private-mithrilcardano-network-locally-devnet"},"Run a Private Mithril/Cardano network locally (",(0,o.kt)("inlineCode",{parentName:"h2"},"devnet"),")"),(0,o.kt)("h3",{id:"step-1-launch-the-devnet"},"Step 1: Launch the devnet"),(0,o.kt)("p",null,"Open a first terminal window."),(0,o.kt)("p",null,"Run a devnet with 1 BTF and 2 SPO Cardano nodes."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Option 1"),": Remote Docker images"),(0,o.kt)("p",null,"The network will be ready faster with remote Docker images."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"MITHRIL_IMAGE_ID=latest NUM_BFT_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh\n")),(0,o.kt)("p",null,"Or"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Option 2"),": Local Docker images"),(0,o.kt)("p",null,"This takes more time to build local Docker images of the Mithril nodes"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NUM_BFT_NODES=1 NUM_POOL_NODES=2 ./devnet-run.sh\n")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"You will see that the devnet is launched with the following steps:"),(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Bootstraping the devnet"),": generates the artifacts of the devnet depending on the configuration parameters (cryptographic keys, network topology, transactions to setup pool nodes, ...)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start Cardano Network"),": run the nodes of the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network"),", waits for it to be ready and activate the pool nodes"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Start Mithril Network"),": run the nodes of the ",(0,o.kt)("strong",{parentName:"li"},"Mithril Network")," that works on top of the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network")))),(0,o.kt)("p",null,"You should see the following information displayed"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Bootstrap Mithril/Cardano devnet\n=====================================================================\n\n>> Directory: artifacts\n>> Cardano BFT nodes: 1\n>> Cardano SPO nodes: 2\n>> Info: Mithril Aggregator will be attached to the first Cardano BFT node\n>> Info: Mithril Signers will be attached to each Cardano SPO node\n\n=====================================================================\n Start Cardano nodes\n=====================================================================\n\n>> Start Cardano network\ncardano-node: no process found\n>> Starting Cardano node \'node-bft1\'\n>> Starting Cardano node \'node-pool1\'\n>> Starting Cardano node \'node-pool2\'\n>> Wait for Cardano network to be ready\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Not ready yet\n>>>> Ready!\n>> Activate Cardano pools\nEstimated transaction fee: Lovelace 843\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 843\nTransaction successfully submitted.\n>> Wait for Cardano pools to be activated\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Not activated yet\n>>>> Activated!\n>>>> Found PoolId: pool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys\n>>>> Found PoolId: pool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav\n\n=====================================================================\n Start Mithril nodes\n=====================================================================\n\n>> Start Mithril network\n>> Build Mithril node Docker images\n>>>> Building Mithril Aggregator node Docker image\n>>>> Building Mithril Client node Docker image\n>>>> Building Mithril Signer node Docker image\nNo stopped containers\nCreating network "artifacts_cardano_network" with driver "bridge"\nCreating network "artifacts_mithril_network" with driver "bridge"\nCreating artifacts_mithril-aggregator_1 ... done\nCreating artifacts_mithril-signer-node-pool1_1 ... done\nCreating artifacts_mithril-signer-node-pool2_1 ... done\nCreating artifacts_mithril-aggregator-genesis_run ... done\n{"msg":"Started","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925641527Z","hostname":"e932dff845aa","pid":1,"config":"Configuration { cardano_cli_path: \\"/app/bin/cardano-cli\\", cardano_node_socket_path: \\"/data/ipc/node.sock\\", network_magic: Some(42), network: \\"devnet\\", protocol_parameters: ProtocolParameters { k: 5, m: 100, phi_f: 0.65 }, url_snapshot_manifest: \\"\\", snapshot_store_type: Local, snapshot_uploader_type: Local, server_url: \\"http://0.0.0.0:8080/\\", run_interval: 1000, db_directory: \\"/data/db\\", snapshot_directory: \\"/data/mithril/aggregator\\", data_stores_directory: \\"/data/mithril/aggregator/stores\\", genesis_verification_key: \\"5b33322c3235332c3138362c3230312c3137372c31312c3131372c3133352c3138372c3136372c3138312c3138382c32322c35392c3230362c3130352c3233312c3135302c3231352c33302c37382c3231322c37362c31362c3235322c3138302c37322c3133342c3133372c3234372c3136312c36385d\\" }","run_mode":"dev"}\n{"msg":"New LocalSnapshotUploader created","v":0,"name":"slog-rs","level":20Genesis bootstrap for test only\n,"time":"2022-09-06T09:24:31.925683285Z","hostname":"e932dff845aa","pid":1,"snapshot_server_url":"http://0.0.0.0:8080/"}\n{"msg":"New MultiSignerImpl created","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925711468Z","hostname":"e932dff845aa","pid":1}\n{"msg":"New MithrilCertificateVerifier created","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.925736796Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Update current_beacon to Beacon { network: \\"devnet\\", epoch: Epoch(10), immutable_file_number: 47 }","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938337155Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get next signers with stake","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938384324Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get next stake distribution","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938422585Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get stake distribution with epoch offset","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938459565Z","hostname":"e932dff845aa","pid":1,"epoch_offset":0}\n{"msg":"Get next protocol parameters","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938500461Z","hostname":"e932dff845aa","pid":1}\n{"msg":"Get protocol parameters with epoch offset","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.938535367Z","hostname":"e932dff845aa","pid":1,"epoch_offset":0}\n{"msg":"Create clerk","v":0,"name":"slog-rs","level":20,"time":"2022-09-06T09:24:31.93856896Z","hostname":"e932dff845aa","pid":1}\nVerify genesis certificate #86a4c56d957636740a75c250fdd9d3b9a9f1539dc93449b1f80fcab49e279d6d @ epoch #10\n\n=====================================================================\n Schedule Cardano Stake Delegation\n=====================================================================\n\n>> Begin scheduled delegation\n>> 11:24:32: Wait 180s until next delegation round...\n>> Run delegation round #1!\n>>>> Current Epoch: 12\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\n>> 11:27:32: Wait 180s until next delegation round...\n>> Run delegation round #2!\n>>>> Current Epoch: 14\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\nEstimated transaction fee: Lovelace 436\nTransaction successfully submitted.\n>> 11:30:32: Wait 180s until next delegation round...\n')),(0,o.kt)("h3",{id:"step-2-query-the-devnet"},"Step 2: Query the devnet"),(0,o.kt)("p",null,"Open a second terminal window."),(0,o.kt)("p",null,"Watch the state queried from the devnet"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"watch -n 1 ./devnet-query.sh\n")),(0,o.kt)("p",null,"The networks will be queried every ",(0,o.kt)("inlineCode",{parentName:"p"},"1s")," and will display:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Certificate production informations gathered from the ",(0,o.kt)("strong",{parentName:"li"},"Mithril Network")),(0,o.kt)("li",{parentName:"ul"},"Utxo, Stake Pools, Stake Distribution from the ",(0,o.kt)("strong",{parentName:"li"},"Cardano Network"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Query Mithril/Cardano devnet\n=====================================================================\n\n=====================================================================\n=== Mithril Network\n=====================================================================\n\n>> Query pending certificate\n{\n "beacon": {\n "network": "devnet",\n "epoch": 2,\n "immutable_file_number": 6\n },\n "protocol": {\n "k": 5,\n "m": 100,\n "phi_f": 0.65\n },\n "signers": []\n}\n\n>> Query snapshots\n[\n {\n "digest": "224b77ad9cbe7fc81e6808940d391b299c27e77d9978641025f382e2e5ddd2ac",\n "certificate_hash": "5b29543c4af0f369d40e1da53451ebd8a39c4263df1585eb072f54511c1e3333",\n "size": 7986,\n "created_at": "2022-07-05T11:26:55.855498395Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/224b77ad9cbe7fc81e6808940d391b299c27e77d9978641025f382e2e5ddd2ac/download"\n ]\n },\n {\n "digest": "1a39f57c906133421ab7b5c782762b6abff4771b5e9158a977e58db1edc26bd0",\n "certificate_hash": "be758b84a4b495e82af48747356946efb509ccbc4b44a9c985e3cb3099e35c94",\n "size": 6743,\n "created_at": "2022-07-05T11:26:35.658661878Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/1a39f57c906133421ab7b5c782762b6abff4771b5e9158a977e58db1edc26bd0/download"\n ]\n },\n {\n "digest": "fd1a39d28998ba18c96547f62d308c57612ed348be058f615c14db5228a947c1",\n "certificate_hash": "4254a6176afbe17967ad1671e4619e9a3f3412115a63dd0eb0f5e8b64094128a",\n "size": 6199,\n "created_at": "2022-07-05T11:26:20.470029035Z",\n "locations": [\n "http://0.0.0.0:8080/aggregator/snapshot/fd1a39d28998ba18c96547f62d308c57612ed348be058f615c14db5228a947c1/download"\n ]\n }\n]\n\n=====================================================================\n=== Cardano Network\n=====================================================================\n\n>> Query chain tip\n{\n "era": "Alonzo",\n "syncProgress": "100.00",\n "hash": "075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452",\n "epoch": 2,\n "slot": 219,\n "block": 9\n}\n\n>> Query whole utxo\n TxHash TxIx Amount\n--------------------------------------------------------------------------------------\n4980fb7c90bc003f6af65778008732cd1b1a8c0873b7d622bfb7442f1312c9b5 0 447999157 lovelace + TxOutDatumNone\n4980fb7c90bc003f6af65778008732cd1b1a8c0873b7d622bfb7442f1312c9b5 1 2000000 lovelace + TxOutDatumNone\nc31e535531c9eb32bdd8f05e25204186333262674d24c6a770b6b120f020d9a9 0 448999157 lovelace + TxOutDatumNone\nc31e535531c9eb32bdd8f05e25204186333262674d24c6a770b6b120f020d9a9 1 1000000 lovelace + TxOutDatumNone\ned265b672873192ea1e9c19092e8f41947c28977438bcff580312de37cfbd46c 0 1002000000 lovelace + TxOutDatumNone\n\n>> Query stake pools\npool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys\npool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav\n\n>> Query stake distribution\n PoolId Stake frac\n------------------------------------------------------------------------------\npool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys 1.052e-3\npool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav 5.258e-4\n')),(0,o.kt)("h3",{id:"step-3-observe-the-devnet"},"Step 3: Observe the devnet"),(0,o.kt)("p",null,"Open a third terminal window."),(0,o.kt)("p",null,"Watch the logs of each node of the devnet"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"watch -n 1 LINES=5 ./devnet-log.sh\n")),(0,o.kt)("p",null,"The nodes will be queried every ",(0,o.kt)("inlineCode",{parentName:"p"},"1s")," and will display as below"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'=====================================================================\n Logs Mithril/Cardano devnet\n=====================================================================\n\n=====================================================================\n-- docker compose logs --tail=5\n=====================================================================\nAttaching to artifacts_mithril-signer-node-pool1_1, artifacts_mithril-signer-node-pool2_1, artifacts_mithril-aggregator_1\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.726760492Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Get signer pool1c56jqj5qsala8c24829sxqp0fcrtrrtcmezgrs6w60hl2nwsvav","v":0,"name":"slog-rs","level":20,"time":"2022-07-05T11:29:32.72678048Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.72679661Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Get signer pool1v55rfy864kslz86u45w4juahtuqr7cy282rffdnpc9exjlguvys","v":0,"name":"slog-rs","level":20,"time":"2022-07-05T11:29:32.734529107Z","hostname":"ba17593540ac","pid":1}\nmithril-aggregator_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.734553714Z","hostname":"ba17593540ac","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Signing digest","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744124074Z","hostname":"4fc53f5ce413","pid":1,"digester_result":"DigesterResult {\\n digest: \\"e5ac1579a3fff12bf19ef88b0d9ec9d8a1c53e4d74c38c023b2e33638f454d67\\",\\n last_immutable_file_number: 17,\\n}"}\nmithril-signer-node-pool1_1 | {"msg":"Register signatures","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744140625Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.744155293Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"SingleSignaturesComputeFailed(UnregisteredVerificationKey)","v":0,"name":"slog-rs","level":50,"time":"2022-07-05T11:29:32.744336041Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool1_1 | {"msg":"Sleeping for 1000","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.744352051Z","hostname":"4fc53f5ce413","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Signing digest","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.73359119Z","hostname":"1c671096ee3f","pid":1,"digester_result":"DigesterResult {\\n digest: \\"e5ac1579a3fff12bf19ef88b0d9ec9d8a1c53e4d74c38c023b2e33638f454d67\\",\\n last_immutable_file_number: 17,\\n}"}\nmithril-signer-node-pool2_1 | {"msg":"Register signatures","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.733607821Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Epoch computation is not final and needs to be fixed: 4","v":0,"name":"slog-rs","level":40,"time":"2022-07-05T11:29:32.733623511Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"SingleSignaturesComputeFailed(UnregisteredVerificationKey)","v":0,"name":"slog-rs","level":50,"time":"2022-07-05T11:29:32.733786246Z","hostname":"1c671096ee3f","pid":1}\nmithril-signer-node-pool2_1 | {"msg":"Sleeping for 1000","v":0,"name":"slog-rs","level":30,"time":"2022-07-05T11:29:32.733802416Z","hostname":"1c671096ee3f","pid":1}\n\n=====================================================================\n=====================================================================\ntail -n 22 ./node-bft1/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.76 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.75 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.76 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.26 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.26 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.75 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.50 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n=====================================================================\ntail -n 22 ./node-pool1/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.76 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.76 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.75 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.26 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.26 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.76 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.51 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n=====================================================================\ntail -n 22 ./node-pool2/node.log\n=====================================================================\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:28.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 219, dsSuffix = Nothing} at 075fc8366d353b45debedfc6faa92148c8fad584d81dbb4ea7b8b4d121489452 at slot 219\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:40.75 UTC] Chain extended, new tip: af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:40.75 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 228, dsSuffix = Nothing} at 720c625a259a23f21926fe7a30dad9b7a4b50958a508c8cfdc96a94625fbf00d at slot 228\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:43.76 UTC] Chain extended, new tip: 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:27:52.75 UTC] Chain extended, new tip: bfc0b2c1c4d06699efcdf6ad7b33c48cea722fb4bb5c5d6761a3768609cf77a4 at slot 269\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:27:52.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 253, dsSuffix = Nothing} at af93c6964de49d0696bf194c222f6e5a40e5123ef688a20613a33a705b6b736a at slot 253\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:03.25 UTC] Chain extended, new tip: c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:03.25 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 257, dsSuffix = Nothing} at 9f141fe78c0baa433c2554d3a09a9b43c47faa7b740be254893000310e5bad3b at slot 257\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:04.75 UTC] Chain extended, new tip: ac332aea5f043b3fd5ac68a04225932a21935ad7e5c5cfbb7e5b0b00df713bff at slot 285\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:16.00 UTC] Chain extended, new tip: e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:16.01 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 283, dsSuffix = Nothing} at c6238e98f186278eeef86d13f3482ebfb9b1d01d2a28da78282bfd241524eccd at slot 283\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:18.25 UTC] Chain extended, new tip: bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:37.00 UTC] Chain extended, new tip: 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:37.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 300, dsSuffix = Nothing} at e68d08e0c127a5346a74dd06713d8de0b4e37e338a0e03987da356bb70892b99 at slot 300\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:28:58.76 UTC] Chain extended, new tip: 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:28:58.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 303, dsSuffix = Nothing} at bc07b985d7f76bacc0a726b2dc5aa76a7254f1e4548a633cdfd62c31e022b3a5 at slot 303\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:05.50 UTC] Chain extended, new tip: 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:05.50 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 328, dsSuffix = Nothing} at 7d53c5eba9679c96ba32d79a02cfd953280b3477f1dd8eeb18447638c8a30e20 at slot 328\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:19.75 UTC] Chain extended, new tip: 5733ec701db5c9dc253dd4b611421de0c2d223e6ee99c8d61010a9fea42d504b at slot 385\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:19.76 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 357, dsSuffix = Nothing} at 3e9734018c585eea160a33accf82f758713f0e7aae1fab4dc40bccd859b8066f at slot 357\n[jp:cardano.node.ChainDB:Notice:21] [2022-07-05 11:29:31.00 UTC] Chain extended, new tip: 331c824ebee92dee7717f7bcc1457ac89b0de33d76073e6edd97a28770fa364b at slot 400\n[jp:cardano.node.ChainDB:Info:25] [2022-07-05 11:29:31.00 UTC] Took ledger snapshot DiskSnapshot {dsNumber = 366, dsSuffix = Nothing} at 8876850840ae52ca240d517def4b9c8a5db98e2e7db17f8abf87e4f12db13d15 at slot 366\n=====================================================================\n\n')),(0,o.kt)("h2",{id:"interact-with-the-mithril-aggregator-by-using-the-mithril-client"},"Interact with the Mithril Aggregator by using the Mithril Client"),(0,o.kt)("h3",{id:"step-1-prepare-some-useful-variables"},"Step 1: Prepare some useful variables"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# Cardano network\nNETWORK=devnet\n\n# Aggregator API endpoint URL\nAGGREGATOR_ENDPOINT=http://localhost:8080/aggregator\n\n# Digest of the latest produced snapshot for convenience of the demo\n# You can also modify this variable and set it to the value of the digest of a snapshot that you can retrieve at step 2\nSNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,o.kt)("p",null,"You can pick an online test aggregator directly from the ",(0,o.kt)("a",{parentName:"p",href:"https://mithril.network/explorer"},"Mithril explorer"),"."),(0,o.kt)("h3",{id:"step-2-select-a-snapshot"},"Step 2: Select A Snapshot"),(0,o.kt)("p",null,"List the available snapshots with which you can bootstrap a Cardano node"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot list\n")),(0,o.kt)("p",null,"You will see a list of snapshots"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| Epoch | Immutable | Network | Digest | Size | Locations | Created |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4387 | preview | 83579cd3bd89438f86e626b102bab6132eef95d01b736ffa19e96d055ba6a596 | 2086080281 | 1 | 2023-06-01T12:43:23.782943645Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4383 | preview | 7068029bee4996edf15b8f1e7120c3320ca50491ccbdc5841ac072e84bfe4c4d | 2084049995 | 1 | 2023-06-01T07:47:44.359699075Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4382 | preview | da32d417c7fc6bbdbd780191c81f0264cea0af9dbb1bbd0fc7fdcf6e0976cb75 | 2084517087 | 1 | 2023-06-01T06:31:17.609437466Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4381 | preview | a045b7b552c8412dbd0cfe4d418b7ac3a0cf39bfb5ad4d1a39a164217a394e40 | 2084235879 | 1 | 2023-06-01T05:10:52.039770378Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n| 219 | 4380 | preview | 9a88639bd59492c3cb67d9d1ac005998292e41faa7e116ff05c5de2d08a8374e | 2083904532 | 1 | 2023-06-01T03:56:43.834905913Z |\n+-------+-----------+---------+------------------------------------------------------------------+------------+-----------+--------------------------------+\n\n")),(0,o.kt)("h3",{id:"step-3-show-snapshot-details"},"Step 3: Show Snapshot Details"),(0,o.kt)("p",null,"Get some more details from a specific snapshot (Optional)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot show $SNAPSHOT_DIGEST\n")),(0,o.kt)("p",null,"You will see more information about a snapshot"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"+-----------------------+-----------------------------------------------------------------------------------------+\n| Info | Value |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Epoch | 218 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Immutable File Number | 4367 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Network | preview |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Digest | 5f6e925144d9f6f425b79a0b2db92040738505a0b645ab5f3277f45f8879d2ac |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Size | 2080819008 |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Location 1 | https://storage.googleapis.com/mithril-pre-release-preview-cs/preview-e2\u2026879d2ac.tar.gz |\n+-----------------------+-----------------------------------------------------------------------------------------+\n| Created | 2023-05-31T12:50:45.978711344Z |\n+-----------------------+-----------------------------------------------------------------------------------------+\n\n")),(0,o.kt)("h3",{id:"step-4-download-and-verify-selected-snapshot"},"Step 4: Download and verify selected Snapshot"),(0,o.kt)("p",null,"Download the selected snapshot from the remote location to your remote location"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"NETWORK=$NETWORK AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT ./mithril-client snapshot download $SNAPSHOT_DIGEST\n")),(0,o.kt)("p",null,"You will see that the certificate chain is validated to ensure the issued certificate is genuine and then the selected snapshot archive is downloaded, unpacked and verified against the corresponding certificate."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'Download success 85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917 #1\nfrom http://0.0.0.0:8080/aggregator/snapshot/85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/download\nto /home/mithril/data/devnet /85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/snapshot.archive.tar.gz\nUnpacking snapshot...\nUnpack success 85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917\nto /home/mithril/data/devnet /85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/db\n\nRestore a Cardano Node with:\n\ndocker run -v cardano-node-ipc:/ipc -v cardano-node-data:/data \\\n --mount type=bind,source="./data/devnet/85f09b39b0b5a13cec9d8fe7ffb82b5e5f236f02ae896f4e47b77e5cd1f2a917/db",target=/data/db/ \\\n -e NETWORK=devnet \\\n inputoutput/cardano-node\n')))}p.isMDXComponent=!0},51517:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/devnet-topology-ca1bd25169f32020115ed1c52a4d1d59.png"}}]); \ No newline at end of file diff --git a/doc/assets/js/183a8603.1d284b43.js b/doc/assets/js/183a8603.1d284b43.js new file mode 100644 index 00000000000..fa4a1ac6f9f --- /dev/null +++ b/doc/assets/js/183a8603.1d284b43.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[9937,5569,5458],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>N});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),d=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},m=function(t){var e=d(t.components);return n.createElement(p.Provider,{value:e},t.children)},u="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),u=d(a),k=r,N=u["".concat(p,".").concat(k)]||u[k]||s[k]||i;return a?n.createElement(N,l(l({ref:e},m),{},{components:a})):n.createElement(N,l({ref:e},m))}));function N(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=k;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[u]="string"==typeof t?t:r,l[1]=o;for(var d=2;d{a.d(e,{Z:()=>l});var n=a(67294),r=a(86010);const i={tabItem:"tabItem_Ymn6"};function l(t){let{children:e,hidden:a,className:l}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,l),hidden:a},e)}},74866:(t,e,a)=>{a.d(e,{Z:()=>y});var n=a(87462),r=a(67294),i=a(86010),l=a(12466),o=a(16550),p=a(91980),d=a(67392),m=a(50012);function u(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function s(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??u(a);return function(t){const e=(0,d.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[e,a])}function k(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function N(t){let{queryString:e=!1,groupId:a}=t;const n=(0,o.k6)(),i=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(i),(0,r.useCallback)((t=>{if(!i)return;const e=new URLSearchParams(n.location.search);e.set(i,t),n.replace({...n.location,search:e.toString()})}),[i,n])]}function g(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,i=s(t),[l,o]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!k({value:e,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:i}))),[p,d]=N({queryString:a,groupId:n}),[u,g]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,i]=(0,m.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&i.set(t)}),[a,i])]}({groupId:n}),h=(()=>{const t=p??u;return k({value:t,tabValues:i})?t:null})();(0,r.useLayoutEffect)((()=>{h&&o(h)}),[h]);return{selectedValue:l,selectValue:(0,r.useCallback)((t=>{if(!k({value:t,tabValues:i}))throw new Error(`Can't select invalid tab value=${t}`);o(t),d(t),g(t)}),[d,g,i]),tabValues:i}}var h=a(72389);const c={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(t){let{className:e,block:a,selectedValue:o,selectValue:p,tabValues:d}=t;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),s=t=>{const e=t.currentTarget,a=m.indexOf(e),n=d[a].value;n!==o&&(u(e),p(n))},k=t=>{let e=null;switch(t.key){case"Enter":s(t);break;case"ArrowRight":{const a=m.indexOf(t.currentTarget)+1;e=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(t.currentTarget)-1;e=m[a]??m[m.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":a},e)},d.map((t=>{let{value:e,label:a,attributes:l}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,key:e,ref:t=>m.push(t),onKeyDown:k,onClick:s},l,{className:(0,i.Z)("tabs__item",c.tabItem,l?.className,{"tabs__item--active":o===e})}),a??e)})))}function f(t){let{lazy:e,children:a,selectedValue:n}=t;const i=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=i.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function v(t){const e=g(t);return r.createElement("div",{className:(0,i.Z)("tabs-container",c.tabList)},r.createElement(b,(0,n.Z)({},t,e)),r.createElement(f,(0,n.Z)({},t,e)))}function y(t){const e=(0,h.Z)();return r.createElement(v,(0,n.Z)({key:String(e)},t))}},57977:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const i={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},l=void 0,o={unversionedId:"compiled-binaries",id:"version-maintained/compiled-binaries",title:"compiled-binaries",description:"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package",source:"@site/versioned_docs/version-maintained/compiled-binaries.md",sourceDirName:".",slug:"/compiled-binaries",permalink:"/doc/compiled-binaries",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/compiled-binaries.md",tags:[],version:"maintained",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},p={},d=[],m={toc:d},u="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(u,(0,n.Z)({},m,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package\nfor linux\xb9."),(0,r.kt)("p",null,"You can download them from the Release / Pre-Release distribution page that depends on the Mithril Network you\nare targeting."),(0,r.kt)("p",null,"These links are available in the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table."),(0,r.kt)("p",null,"\xb9 The Linux binaries target ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc"),", and have a minimum requirement of ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc 2.35")," (compatible with ",(0,r.kt)("inlineCode",{parentName:"p"},"Ubuntu 22.04"),"\nor ",(0,r.kt)("inlineCode",{parentName:"p"},"Debian Bookworm"),")."))}s.isMDXComponent=!0},42408:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>p,default:()=>N,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=a(87462),r=(a(67294),a(3905)),i=a(5892),l=a(57977);const o={sidebar_position:3},p="Mithril Client Node",d={unversionedId:"manual/developer-docs/nodes/mithril-client",id:"version-maintained/manual/developer-docs/nodes/mithril-client",title:"Mithril Client Node",description:"This is the node of the Mithril Network responsible for restoring the Cardano blockchain on an empty node from a certified snapshot.",source:"@site/versioned_docs/version-maintained/manual/developer-docs/nodes/mithril-client.md",sourceDirName:"manual/developer-docs/nodes",slug:"/manual/developer-docs/nodes/mithril-client",permalink:"/doc/manual/developer-docs/nodes/mithril-client",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/developer-docs/nodes/mithril-client.md",tags:[],version:"maintained",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docSideBar",previous:{title:"Mithril Signer Node",permalink:"/doc/manual/developer-docs/nodes/mithril-signer"},next:{title:"API Reference",permalink:"/doc/manual/developer-docs/references"}},m={},u=[{value:"Resources",id:"resources",level:2},{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"Download source",id:"download-source",level:2},{value:"Development test and build",id:"development-test-and-build",level:2},{value:"Release build and run binary",id:"release-build-and-run-binary",level:2},{value:"Download pre-built binary",id:"download-pre-built-binary",level:2},{value:"Run Docker container",id:"run-docker-container",level:2},{value:"Registry Image",id:"registry-image",level:3},{value:"Local Image",id:"local-image",level:3},{value:"Subcommands",id:"subcommands",level:2},{value:"Snapshot",id:"snapshot",level:3},{value:"Mithril Stake Distribution",id:"mithril-stake-distribution",level:3},{value:"Configuration parameters",id:"configuration-parameters",level:2}],s={toc:u},k="wrapper";function N(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"mithril-client-node"},"Mithril Client Node"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This is the node of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Network")," responsible for restoring the ",(0,r.kt)("strong",{parentName:"p"},"Cardano")," blockchain on an empty node from a certified snapshot.")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Network"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/mithril/mithril-network/architecture"},"Architecture")," page.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Client"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/mithril/mithril-network/client"},"Client Node")," page.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Checkout the ",(0,r.kt)("a",{parentName:"p",href:"/doc/manual/getting-started/bootstrap-cardano-node"},(0,r.kt)("inlineCode",{parentName:"a"},"Bootstrap a Cardano Node"))," guide.")))),(0,r.kt)("admonition",{title:"Mithril Networks",type:"note"},(0,r.kt)(i.default,{mdxType:"NetworksMatrix"})),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Node"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Source Repository"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Rust Documentation"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Docker Packages"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("strong",{parentName:"td"},"Mithril Client")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main/mithril-client"},"\u2197\ufe0f")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/mithril-client/doc/mithril_client/index.html"},"\u2197\ufe0f")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/pkgs/container/mithril-client"},"\u2197\ufe0f"))))),(0,r.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a ",(0,r.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev")))),(0,r.kt)("h2",{id:"download-source"},"Download source"),(0,r.kt)("p",null,"Download from GitHub (HTTPS)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Or (SSH)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Switch to build branch / tag"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# **YOUR_BUILD_BRANCH_OR_TAG** depends on the Mithril network you target, \n# please refer to the **Build From** column of the above **Mithril Networks** table\ngit switch **YOUR_BUILD_BRANCH_OR_TAG**\n")),(0,r.kt)("p",null,"Change directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril/mithril-client\n")),(0,r.kt)("h2",{id:"development-test-and-build"},"Development test and build"),(0,r.kt)("p",null,"Run tests"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make test\n")),(0,r.kt)("p",null,"Create the help menu"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make help\n")),(0,r.kt)("p",null,"Generate the Rust documentation"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make doc\n")),(0,r.kt)("p",null,"Run in debug mode with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make debug\n")),(0,r.kt)("h2",{id:"release-build-and-run-binary"},"Release build and run binary"),(0,r.kt)("p",null,"Build and run in release with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make run\n")),(0,r.kt)("p",null,"Or, build only in release"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make build\n")),(0,r.kt)("p",null,"Display the help menu"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client --help\n")),(0,r.kt)("p",null,"You should see"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"This program shows, downloads and verifies certified blockchain artifacts.\n\nUsage: mithril-client [OPTIONS] \n\nCommands:\n snapshot Snapshot commands\n mithril-stake-distribution Mithril Stake Distribution management (alias: msd)\n help Print this message or the help of the given subcommand(s)\n\nOptions:\n --run-mode \n Run Mode [env: RUN_MODE=] [default: dev]\n -v, --verbose...\n Verbosity level (-v=warning, -vv=info, -vvv=debug)\n --config-directory \n Directory where configuration file is located [default: ./config]\n --aggregator-endpoint \n Override configuration Aggregator endpoint URL\n -h, --help\n Print help\n -V, --version\n Print version\n\n\n")),(0,r.kt)("p",null,"Run in release with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client\n")),(0,r.kt)("p",null,"Run in release with a specific mode"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client --run-mode preview\n")),(0,r.kt)("p",null,"Run in release with a custom configuration via env vars"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"GENESIS_VERIFICATION_KEY=$(wget -q -O - **YOUR_GENESIS_VERIFICATION_KEY**) NETWORK=**YOUR_CARDANO_NETWORK** AGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT** ./mithril-client\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can use the ",(0,r.kt)("inlineCode",{parentName:"p"},"--json")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"-j"),") option in order to display results in ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," format for the ",(0,r.kt)("inlineCode",{parentName:"p"},"list")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"show")," commands:"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client snapshot list --json\n"))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you want to dig deeper, you can get access to several level of logs from the Mithril Client:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," for some logs (WARN)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vv")," for more logs (INFO)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvv")," for even more logs (DEBUG)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvvv")," for all logs (TRACE)"))),(0,r.kt)("h2",{id:"download-pre-built-binary"},"Download pre-built binary"),(0,r.kt)(l.default,{mdxType:"CompiledBinaries"}),(0,r.kt)("h2",{id:"run-docker-container"},"Run Docker container"),(0,r.kt)("h3",{id:"registry-image"},"Registry Image"),(0,r.kt)("p",null,"The list of available images on the registry is listed ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/pkgs/container/mithril-client"},"here")),(0,r.kt)("p",null,"Prepare environment variables (values can be retrieved on the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export MITHRIL_IMAGE_ID=**YOUR_MITHRIL_IMAGE_ID**\nexport NETWORK=**YOUR_CARDANO_NETWORK**\nexport AGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nexport GENESIS_VERIFICATION_KEY=$(wget -q -O - **YOUR_GENESIS_VERIFICATION_KEY**)\nexport SNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,r.kt)("p",null,"Here is an example configuration for the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-preprod")," network and the ",(0,r.kt)("inlineCode",{parentName:"p"},"latest")," stable Docker image"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export MITHRIL_IMAGE_ID=latest\nexport NETWORK=preprod\nexport AGGREGATOR_ENDPOINT=https://aggregator.release-preprod.api.mithril.network/aggregator\nexport GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey)\nexport SNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,r.kt)("p",null,"Then create a shell function for the Mithril Client"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"mithril_client () {\n docker run --rm -e NETWORK=$NETWORK -e GENESIS_VERIFICATION_KEY=$GENESIS_VERIFICATION_KEY -e AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT --name='mithril-client' -v $(pwd):/app/data -u $(id -u) ghcr.io/input-output-hk/mithril-client:$MITHRIL_IMAGE_ID $@\n}\n")),(0,r.kt)("p",null,"Now you can use the ",(0,r.kt)("inlineCode",{parentName:"p"},"mithril_client")," functions:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# 1- Help\nmithril_client help\n\n# 2- List snapshots\nmithril_client snapshot list\n\n# 3- Show detailed informations about a snapshot\nmithril_client snapshot show $SNAPSHOT_DIGEST\n\n# 4- Download the given snapshot and verify the certificate\nmithril_client snapshot download $SNAPSHOT_DIGEST\n\n# 5- List Mithril Stake Distributions\nmithril_client mithril-stake-distribution list\n\n# 6- Download and verify the given Mithril Stake Distribution\nmithril_client mithril-stake-distribution download $MITHRIL_STAKE_DISTRIBUTION_ARTIFACT_HASH\n")),(0,r.kt)("h3",{id:"local-image"},"Local Image"),(0,r.kt)("p",null,"Build a local Docker image"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make docker-build\n")),(0,r.kt)("p",null,"Run a local Docker container"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make docker-run\n")),(0,r.kt)("h2",{id:"subcommands"},"Subcommands"),(0,r.kt)("p",null,"Here are the subcommands available:"),(0,r.kt)("h3",{id:"snapshot"},"Snapshot"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Subcommand"),(0,r.kt)("th",{parentName:"tr",align:null},"Performed action"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"download")),(0,r.kt)("td",{parentName:"tr",align:null},"Download and restore a snapshot")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"help")),(0,r.kt)("td",{parentName:"tr",align:null},"Print this message or the help of the given subcommand(s)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"list")),(0,r.kt)("td",{parentName:"tr",align:null},"List available snapshots")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"show")),(0,r.kt)("td",{parentName:"tr",align:null},"Informations about a snapshot")))),(0,r.kt)("h3",{id:"mithril-stake-distribution"},"Mithril Stake Distribution"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Subcommand"),(0,r.kt)("th",{parentName:"tr",align:null},"Performed action"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"download")),(0,r.kt)("td",{parentName:"tr",align:null},"Download and verify a Mithril Stake Distribution")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"help")),(0,r.kt)("td",{parentName:"tr",align:null},"Print this message or the help of the given subcommand(s)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"list")),(0,r.kt)("td",{parentName:"tr",align:null},"List available Mithril Stake Distributions")))),(0,r.kt)("h2",{id:"configuration-parameters"},"Configuration parameters"),(0,r.kt)("p",null,"The configuration parameters are set either:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"In a configuration file (depending on the ",(0,r.kt)("inlineCode",{parentName:"li"},"--run-mode")," parameter). If runtime mode is ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet")," the file is located in ",(0,r.kt)("inlineCode",{parentName:"li"},"./conf/testnet.json"),"."),(0,r.kt)("li",{parentName:"ul"},"The value can be overridden by an environment variable whose name is the parameter name uppercased.")),(0,r.kt)("p",null,"Here is a list of the available parameters:"),(0,r.kt)("p",null,"General parameters:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"verbose")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--verbose")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("inlineCode",{parentName:"td"},"-v")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"VERBOSE")),(0,r.kt)("td",{parentName:"tr",align:null},"Verbosity level"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Parsed from number of occurrences: ",(0,r.kt)("inlineCode",{parentName:"td"},"-v")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Warning"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"-vv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Info"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"-vvv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Debug")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"-vvvv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Trace")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"run_mode")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--run-mode")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"RUN_MODE")),(0,r.kt)("td",{parentName:"tr",align:null},"Runtime mode"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dev")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"network")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NETWORK")),(0,r.kt)("td",{parentName:"tr",align:null},"Cardano network"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testnet")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"mainnet")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"devnet")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"aggregator_endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--aggregator-endpoint")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AGGREGATOR_ENDPOINT")),(0,r.kt)("td",{parentName:"tr",align:null},"Aggregator node endpoint"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"genesis_verification_key")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"GENESIS_VERIFICATION_KEY")),(0,r.kt)("td",{parentName:"tr",align:null},"Genesis verification key"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"json_output")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--json")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("inlineCode",{parentName:"td"},"-j")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable JSON output"),(0,r.kt)("td",{parentName:"tr",align:null},"no"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"snapshot show")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"digest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--digest")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DIGEST")),(0,r.kt)("td",{parentName:"tr",align:null},"Snapshot digest"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"snapshot download")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"digest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--digest")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DIGEST")),(0,r.kt)("td",{parentName:"tr",align:null},"Snapshot digest"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"download_dir")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--download-dir")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Directory where the snapshot will be downloaded"),(0,r.kt)("td",{parentName:"tr",align:null},"."),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"mithril-stake-distribution download")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"artifact_hash")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--artifact-hash")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Hash of the Mithril Stake Distribution artifact"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"download_dir")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--download-dir")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Directory where the Mithril Stake Distribution will be downloaded"),(0,r.kt)("td",{parentName:"tr",align:null},"."),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))))}N.isMDXComponent=!0},5892:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>p,default:()=>N,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=a(87462),r=(a(67294),a(3905)),i=a(74866),l=a(85162);const o={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},p=void 0,d={unversionedId:"networks-matrix",id:"version-maintained/networks-matrix",title:"networks-matrix",description:"Here is an up to date list of all the Mithril Networks, their configurations and their status:",source:"@site/versioned_docs/version-maintained/networks-matrix.md",sourceDirName:".",slug:"/networks-matrix",permalink:"/doc/networks-matrix",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/networks-matrix.md",tags:[],version:"maintained",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},m={},u=[{value:"pre-release-preview",id:"pre-release-preview",level:2},{value:"testing-preview",id:"testing-preview",level:2},{value:"release-preprod",id:"release-preprod",level:2},{value:"release-mainnet",id:"release-mainnet",level:2}],s={toc:u},k="wrapper";function N(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here is an up to date list of all the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks"),", their configurations and their status:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Last update: 07/05/2023")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"preview",label:"Preview",default:!0,mdxType:"TabItem"},(0,r.kt)("h2",{id:"pre-release-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"pre-release-preview")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pre-release-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.pre-release-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Pre-Release \ud83d\udfe0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.pre-release-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Pre-Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases?q=pre"},"\u2197\ufe0f"))))),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"testing-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"testing-preview")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u26a0\ufe0f For devs only")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testing-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.testing-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Unstable \ud83d\udd34")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.testing-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.testing-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Main Branch")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"preprod",label:"Preprod",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-preprod"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-preprod")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-preprod")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.release-preprod.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preprod"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Release \ud83d\udfe2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.release-preprod.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.release-preprod.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases/latest"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-mainnet"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-mainnet")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"-"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"No \u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},"-")))))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"In this documentation, we use the generic:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_CARDANO_NETWORK**")," identifier, but you need to replace it with the name of the network that runs on your Cardano node (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"preprod"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_AGGREGATOR_ENDPOINT**")," identifier, but you need to replace it with the endpoint of an aggregator that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://aggregator.release-preprod.api.mithril.network/aggregator"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_GENESIS_VERIFICATION_KEY**")," identifier, but you need to replace it with the genesis verification key url that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADAPTER_TYPE**")," identifier, but you need to replace it with the era reader adapter type used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADDRESS**")," identifier, but you need to replace it with the era reader address url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/address.addr"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_VERIFICATION_KEY**")," identifier, but you need to replace it with the era reader verification key url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/TEST_ONLY_era.vkey"),")"))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/doc/assets/js/183a8603.6826b1f2.js b/doc/assets/js/183a8603.6826b1f2.js deleted file mode 100644 index 8fb97a55083..00000000000 --- a/doc/assets/js/183a8603.6826b1f2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[9937,5569,5458],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>N});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),d=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},m=function(t){var e=d(t.components);return n.createElement(p.Provider,{value:e},t.children)},u="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,p=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),u=d(a),k=r,N=u["".concat(p,".").concat(k)]||u[k]||s[k]||i;return a?n.createElement(N,l(l({ref:e},m),{},{components:a})):n.createElement(N,l({ref:e},m))}));function N(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=k;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o[u]="string"==typeof t?t:r,l[1]=o;for(var d=2;d{a.d(e,{Z:()=>l});var n=a(67294),r=a(86010);const i={tabItem:"tabItem_Ymn6"};function l(t){let{children:e,hidden:a,className:l}=t;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,l),hidden:a},e)}},74866:(t,e,a)=>{a.d(e,{Z:()=>y});var n=a(87462),r=a(67294),i=a(86010),l=a(12466),o=a(16550),p=a(91980),d=a(67392),m=a(50012);function u(t){return function(t){return r.Children.map(t,(t=>{if(!t||(0,r.isValidElement)(t)&&function(t){const{props:e}=t;return!!e&&"object"==typeof e&&"value"in e}(t))return t;throw new Error(`Docusaurus error: Bad child <${"string"==typeof t.type?t.type:t.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(t).map((t=>{let{props:{value:e,label:a,attributes:n,default:r}}=t;return{value:e,label:a,attributes:n,default:r}}))}function s(t){const{values:e,children:a}=t;return(0,r.useMemo)((()=>{const t=e??u(a);return function(t){const e=(0,d.l)(t,((t,e)=>t.value===e.value));if(e.length>0)throw new Error(`Docusaurus error: Duplicate values "${e.map((t=>t.value)).join(", ")}" found in . Every value needs to be unique.`)}(t),t}),[e,a])}function k(t){let{value:e,tabValues:a}=t;return a.some((t=>t.value===e))}function N(t){let{queryString:e=!1,groupId:a}=t;const n=(0,o.k6)(),i=function(t){let{queryString:e=!1,groupId:a}=t;if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:e,groupId:a});return[(0,p._X)(i),(0,r.useCallback)((t=>{if(!i)return;const e=new URLSearchParams(n.location.search);e.set(i,t),n.replace({...n.location,search:e.toString()})}),[i,n])]}function g(t){const{defaultValue:e,queryString:a=!1,groupId:n}=t,i=s(t),[l,o]=(0,r.useState)((()=>function(t){let{defaultValue:e,tabValues:a}=t;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!k({value:e,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${a.map((t=>t.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const n=a.find((t=>t.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:e,tabValues:i}))),[p,d]=N({queryString:a,groupId:n}),[u,g]=function(t){let{groupId:e}=t;const a=function(t){return t?`docusaurus.tab.${t}`:null}(e),[n,i]=(0,m.Nk)(a);return[n,(0,r.useCallback)((t=>{a&&i.set(t)}),[a,i])]}({groupId:n}),h=(()=>{const t=p??u;return k({value:t,tabValues:i})?t:null})();(0,r.useLayoutEffect)((()=>{h&&o(h)}),[h]);return{selectedValue:l,selectValue:(0,r.useCallback)((t=>{if(!k({value:t,tabValues:i}))throw new Error(`Can't select invalid tab value=${t}`);o(t),d(t),g(t)}),[d,g,i]),tabValues:i}}var h=a(72389);const c={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(t){let{className:e,block:a,selectedValue:o,selectValue:p,tabValues:d}=t;const m=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),s=t=>{const e=t.currentTarget,a=m.indexOf(e),n=d[a].value;n!==o&&(u(e),p(n))},k=t=>{let e=null;switch(t.key){case"Enter":s(t);break;case"ArrowRight":{const a=m.indexOf(t.currentTarget)+1;e=m[a]??m[0];break}case"ArrowLeft":{const a=m.indexOf(t.currentTarget)-1;e=m[a]??m[m.length-1];break}}e?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":a},e)},d.map((t=>{let{value:e,label:a,attributes:l}=t;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===e?0:-1,"aria-selected":o===e,key:e,ref:t=>m.push(t),onKeyDown:k,onClick:s},l,{className:(0,i.Z)("tabs__item",c.tabItem,l?.className,{"tabs__item--active":o===e})}),a??e)})))}function f(t){let{lazy:e,children:a,selectedValue:n}=t;const i=(Array.isArray(a)?a:[a]).filter(Boolean);if(e){const t=i.find((t=>t.props.value===n));return t?(0,r.cloneElement)(t,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((t,e)=>(0,r.cloneElement)(t,{key:e,hidden:t.props.value!==n}))))}function v(t){const e=g(t);return r.createElement("div",{className:(0,i.Z)("tabs-container",c.tabList)},r.createElement(b,(0,n.Z)({},t,e)),r.createElement(f,(0,n.Z)({},t,e)))}function y(t){const e=(0,h.Z)();return r.createElement(v,(0,n.Z)({key:String(e)},t))}},57977:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const i={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},l=void 0,o={unversionedId:"compiled-binaries",id:"version-maintained/compiled-binaries",title:"compiled-binaries",description:"Download compiled binary",source:"@site/versioned_docs/version-maintained/compiled-binaries.md",sourceDirName:".",slug:"/compiled-binaries",permalink:"/doc/compiled-binaries",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/compiled-binaries.md",tags:[],version:"maintained",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},p={},d=[{value:"Download compiled binary",id:"download-compiled-binary",level:2}],m={toc:d},u="wrapper";function s(t){let{components:e,...a}=t;return(0,r.kt)(u,(0,n.Z)({},m,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"download-compiled-binary"},"Download compiled binary"),(0,r.kt)("p",null,"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package."),(0,r.kt)("p",null,"You can download them from the Release / Pre-Release distribution page that depends on the Mithril Network you are targeting."),(0,r.kt)("p",null,"These links are available in the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table."))}s.isMDXComponent=!0},42408:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>p,default:()=>N,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=a(87462),r=(a(67294),a(3905)),i=a(5892),l=a(57977);const o={sidebar_position:3},p="Mithril Client Node",d={unversionedId:"manual/developer-docs/nodes/mithril-client",id:"version-maintained/manual/developer-docs/nodes/mithril-client",title:"Mithril Client Node",description:"This is the node of the Mithril Network responsible for restoring the Cardano blockchain on an empty node from a certified snapshot.",source:"@site/versioned_docs/version-maintained/manual/developer-docs/nodes/mithril-client.md",sourceDirName:"manual/developer-docs/nodes",slug:"/manual/developer-docs/nodes/mithril-client",permalink:"/doc/manual/developer-docs/nodes/mithril-client",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/developer-docs/nodes/mithril-client.md",tags:[],version:"maintained",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docSideBar",previous:{title:"Mithril Signer Node",permalink:"/doc/manual/developer-docs/nodes/mithril-signer"},next:{title:"API Reference",permalink:"/doc/manual/developer-docs/references"}},m={},u=[{value:"Resources",id:"resources",level:2},{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"Download source",id:"download-source",level:2},{value:"Development test and build",id:"development-test-and-build",level:2},{value:"Release build and run binary",id:"release-build-and-run-binary",level:2},{value:"Download pre-built binary",id:"download-pre-built-binary",level:2},{value:"Run Docker container",id:"run-docker-container",level:2},{value:"Registry Image",id:"registry-image",level:3},{value:"Local Image",id:"local-image",level:3},{value:"Subcommands",id:"subcommands",level:2},{value:"Snapshot",id:"snapshot",level:3},{value:"Mithril Stake Distribution",id:"mithril-stake-distribution",level:3},{value:"Configuration parameters",id:"configuration-parameters",level:2}],s={toc:u},k="wrapper";function N(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"mithril-client-node"},"Mithril Client Node"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This is the node of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Network")," responsible for restoring the ",(0,r.kt)("strong",{parentName:"p"},"Cardano")," blockchain on an empty node from a certified snapshot.")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Network"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/mithril/mithril-network/architecture"},"Architecture")," page.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Client"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/mithril/mithril-network/client"},"Client Node")," page.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Checkout the ",(0,r.kt)("a",{parentName:"p",href:"/doc/manual/getting-started/bootstrap-cardano-node"},(0,r.kt)("inlineCode",{parentName:"a"},"Bootstrap a Cardano Node"))," guide.")))),(0,r.kt)("admonition",{title:"Mithril Networks",type:"note"},(0,r.kt)(i.default,{mdxType:"NetworksMatrix"})),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Node"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Source Repository"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Rust Documentation"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Docker Packages"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("strong",{parentName:"td"},"Mithril Client")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main/mithril-client"},"\u2197\ufe0f")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/mithril-client/doc/mithril_client/index.html"},"\u2197\ufe0f")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/pkgs/container/mithril-client"},"\u2197\ufe0f"))))),(0,r.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a ",(0,r.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev")))),(0,r.kt)("h2",{id:"download-source"},"Download source"),(0,r.kt)("p",null,"Download from GitHub (HTTPS)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Or (SSH)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Switch to build branch / tag"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# **YOUR_BUILD_BRANCH_OR_TAG** depends on the Mithril network you target, \n# please refer to the **Build From** column of the above **Mithril Networks** table\ngit switch **YOUR_BUILD_BRANCH_OR_TAG**\n")),(0,r.kt)("p",null,"Change directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril/mithril-client\n")),(0,r.kt)("h2",{id:"development-test-and-build"},"Development test and build"),(0,r.kt)("p",null,"Run tests"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make test\n")),(0,r.kt)("p",null,"Create the help menu"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make help\n")),(0,r.kt)("p",null,"Generate the Rust documentation"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make doc\n")),(0,r.kt)("p",null,"Run in debug mode with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make debug\n")),(0,r.kt)("h2",{id:"release-build-and-run-binary"},"Release build and run binary"),(0,r.kt)("p",null,"Build and run in release with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make run\n")),(0,r.kt)("p",null,"Or, build only in release"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make build\n")),(0,r.kt)("p",null,"Display the help menu"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client --help\n")),(0,r.kt)("p",null,"You should see"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"This program shows, downloads and verifies certified blockchain artifacts.\n\nUsage: mithril-client [OPTIONS] \n\nCommands:\n snapshot Snapshot commands\n mithril-stake-distribution Mithril Stake Distribution management (alias: msd)\n help Print this message or the help of the given subcommand(s)\n\nOptions:\n --run-mode \n Run Mode [env: RUN_MODE=] [default: dev]\n -v, --verbose...\n Verbosity level (-v=warning, -vv=info, -vvv=debug)\n --config-directory \n Directory where configuration file is located [default: ./config]\n --aggregator-endpoint \n Override configuration Aggregator endpoint URL\n -h, --help\n Print help\n -V, --version\n Print version\n\n\n")),(0,r.kt)("p",null,"Run in release with default configuration"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client\n")),(0,r.kt)("p",null,"Run in release with a specific mode"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client --run-mode preview\n")),(0,r.kt)("p",null,"Run in release with a custom configuration via env vars"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"GENESIS_VERIFICATION_KEY=$(wget -q -O - **YOUR_GENESIS_VERIFICATION_KEY**) NETWORK=**YOUR_CARDANO_NETWORK** AGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT** ./mithril-client\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can use the ",(0,r.kt)("inlineCode",{parentName:"p"},"--json")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"-j"),") option in order to display results in ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," format for the ",(0,r.kt)("inlineCode",{parentName:"p"},"list")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"show")," commands:"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-client snapshot list --json\n"))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you want to dig deeper, you can get access to several level of logs from the Mithril Client:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," for some logs (WARN)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vv")," for more logs (INFO)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvv")," for even more logs (DEBUG)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvvv")," for all logs (TRACE)"))),(0,r.kt)("h2",{id:"download-pre-built-binary"},"Download pre-built binary"),(0,r.kt)(l.default,{mdxType:"CompiledBinaries"}),(0,r.kt)("h2",{id:"run-docker-container"},"Run Docker container"),(0,r.kt)("h3",{id:"registry-image"},"Registry Image"),(0,r.kt)("p",null,"The list of available images on the registry is listed ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/mithril/pkgs/container/mithril-client"},"here")),(0,r.kt)("p",null,"Prepare environment variables (values can be retrieved on the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export MITHRIL_IMAGE_ID=**YOUR_MITHRIL_IMAGE_ID**\nexport NETWORK=**YOUR_CARDANO_NETWORK**\nexport AGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nexport GENESIS_VERIFICATION_KEY=$(wget -q -O - **YOUR_GENESIS_VERIFICATION_KEY**)\nexport SNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,r.kt)("p",null,"Here is an example configuration for the ",(0,r.kt)("inlineCode",{parentName:"p"},"release-preprod")," network and the ",(0,r.kt)("inlineCode",{parentName:"p"},"latest")," stable Docker image"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export MITHRIL_IMAGE_ID=latest\nexport NETWORK=preprod\nexport AGGREGATOR_ENDPOINT=https://aggregator.release-preprod.api.mithril.network/aggregator\nexport GENESIS_VERIFICATION_KEY=$(wget -q -O - https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey)\nexport SNAPSHOT_DIGEST=$(curl -sL $AGGREGATOR_ENDPOINT/artifact/snapshots | jq -r '.[0].digest')\n")),(0,r.kt)("p",null,"Then create a shell function for the Mithril Client"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"mithril_client () {\n docker run --rm -e NETWORK=$NETWORK -e GENESIS_VERIFICATION_KEY=$GENESIS_VERIFICATION_KEY -e AGGREGATOR_ENDPOINT=$AGGREGATOR_ENDPOINT --name='mithril-client' -v $(pwd):/app/data -u $(id -u) ghcr.io/input-output-hk/mithril-client:$MITHRIL_IMAGE_ID $@\n}\n")),(0,r.kt)("p",null,"Now you can use the ",(0,r.kt)("inlineCode",{parentName:"p"},"mithril_client")," functions:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# 1- Help\nmithril_client help\n\n# 2- List snapshots\nmithril_client snapshot list\n\n# 3- Show detailed informations about a snapshot\nmithril_client snapshot show $SNAPSHOT_DIGEST\n\n# 4- Download the given snapshot and verify the certificate\nmithril_client snapshot download $SNAPSHOT_DIGEST\n\n# 5- List Mithril Stake Distributions\nmithril_client mithril-stake-distribution list\n\n# 6- Download and verify the given Mithril Stake Distribution\nmithril_client mithril-stake-distribution download $MITHRIL_STAKE_DISTRIBUTION_ARTIFACT_HASH\n")),(0,r.kt)("h3",{id:"local-image"},"Local Image"),(0,r.kt)("p",null,"Build a local Docker image"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make docker-build\n")),(0,r.kt)("p",null,"Run a local Docker container"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make docker-run\n")),(0,r.kt)("h2",{id:"subcommands"},"Subcommands"),(0,r.kt)("p",null,"Here are the subcommands available:"),(0,r.kt)("h3",{id:"snapshot"},"Snapshot"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Subcommand"),(0,r.kt)("th",{parentName:"tr",align:null},"Performed action"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"download")),(0,r.kt)("td",{parentName:"tr",align:null},"Download and restore a snapshot")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"help")),(0,r.kt)("td",{parentName:"tr",align:null},"Print this message or the help of the given subcommand(s)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"list")),(0,r.kt)("td",{parentName:"tr",align:null},"List available snapshots")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"show")),(0,r.kt)("td",{parentName:"tr",align:null},"Informations about a snapshot")))),(0,r.kt)("h3",{id:"mithril-stake-distribution"},"Mithril Stake Distribution"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Subcommand"),(0,r.kt)("th",{parentName:"tr",align:null},"Performed action"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"download")),(0,r.kt)("td",{parentName:"tr",align:null},"Download and verify a Mithril Stake Distribution")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"help")),(0,r.kt)("td",{parentName:"tr",align:null},"Print this message or the help of the given subcommand(s)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"list")),(0,r.kt)("td",{parentName:"tr",align:null},"List available Mithril Stake Distributions")))),(0,r.kt)("h2",{id:"configuration-parameters"},"Configuration parameters"),(0,r.kt)("p",null,"The configuration parameters are set either:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"In a configuration file (depending on the ",(0,r.kt)("inlineCode",{parentName:"li"},"--run-mode")," parameter). If runtime mode is ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet")," the file is located in ",(0,r.kt)("inlineCode",{parentName:"li"},"./conf/testnet.json"),"."),(0,r.kt)("li",{parentName:"ul"},"The value can be overridden by an environment variable whose name is the parameter name uppercased.")),(0,r.kt)("p",null,"Here is a list of the available parameters:"),(0,r.kt)("p",null,"General parameters:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"verbose")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--verbose")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("inlineCode",{parentName:"td"},"-v")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"VERBOSE")),(0,r.kt)("td",{parentName:"tr",align:null},"Verbosity level"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Parsed from number of occurrences: ",(0,r.kt)("inlineCode",{parentName:"td"},"-v")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Warning"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"-vv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Info"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"-vvv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Debug")," and ",(0,r.kt)("inlineCode",{parentName:"td"},"-vvvv")," for ",(0,r.kt)("inlineCode",{parentName:"td"},"Trace")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"run_mode")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--run-mode")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"RUN_MODE")),(0,r.kt)("td",{parentName:"tr",align:null},"Runtime mode"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"dev")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"network")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NETWORK")),(0,r.kt)("td",{parentName:"tr",align:null},"Cardano network"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testnet")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"mainnet")," or ",(0,r.kt)("inlineCode",{parentName:"td"},"devnet")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"aggregator_endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--aggregator-endpoint")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AGGREGATOR_ENDPOINT")),(0,r.kt)("td",{parentName:"tr",align:null},"Aggregator node endpoint"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"genesis_verification_key")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"GENESIS_VERIFICATION_KEY")),(0,r.kt)("td",{parentName:"tr",align:null},"Genesis verification key"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"json_output")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--json")),(0,r.kt)("td",{parentName:"tr",align:"center"},(0,r.kt)("inlineCode",{parentName:"td"},"-j")),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Enable JSON output"),(0,r.kt)("td",{parentName:"tr",align:null},"no"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"snapshot show")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"digest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--digest")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DIGEST")),(0,r.kt)("td",{parentName:"tr",align:null},"Snapshot digest"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"snapshot download")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"digest")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--digest")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DIGEST")),(0,r.kt)("td",{parentName:"tr",align:null},"Snapshot digest"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"download_dir")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--download-dir")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Directory where the snapshot will be downloaded"),(0,r.kt)("td",{parentName:"tr",align:null},"."),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"mithril-stake-distribution download")," command:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Parameter"),(0,r.kt)("th",{parentName:"tr",align:null},"Command Line (long)"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Command Line (short)"),(0,r.kt)("th",{parentName:"tr",align:null},"Environment Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"),(0,r.kt)("th",{parentName:"tr",align:null},"Default Value"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Mandatory"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"artifact_hash")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--artifact-hash")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Hash of the Mithril Stake Distribution artifact"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"download_dir")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"--download-dir")),(0,r.kt)("td",{parentName:"tr",align:"center"},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:null},"Directory where the Mithril Stake Distribution will be downloaded"),(0,r.kt)("td",{parentName:"tr",align:null},"."),(0,r.kt)("td",{parentName:"tr",align:null},"-"),(0,r.kt)("td",{parentName:"tr",align:"center"},"-")))))}N.isMDXComponent=!0},5892:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>m,contentTitle:()=>p,default:()=>N,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=a(87462),r=(a(67294),a(3905)),i=a(74866),l=a(85162);const o={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},p=void 0,d={unversionedId:"networks-matrix",id:"version-maintained/networks-matrix",title:"networks-matrix",description:"Here is an up to date list of all the Mithril Networks, their configurations and their status:",source:"@site/versioned_docs/version-maintained/networks-matrix.md",sourceDirName:".",slug:"/networks-matrix",permalink:"/doc/networks-matrix",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/networks-matrix.md",tags:[],version:"maintained",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},m={},u=[{value:"pre-release-preview",id:"pre-release-preview",level:2},{value:"testing-preview",id:"testing-preview",level:2},{value:"release-preprod",id:"release-preprod",level:2},{value:"release-mainnet",id:"release-mainnet",level:2}],s={toc:u},k="wrapper";function N(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},s,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here is an up to date list of all the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks"),", their configurations and their status:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Last update: 07/05/2023")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"preview",label:"Preview",default:!0,mdxType:"TabItem"},(0,r.kt)("h2",{id:"pre-release-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"pre-release-preview")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pre-release-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.pre-release-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Pre-Release \ud83d\udfe0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.pre-release-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Pre-Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases?q=pre"},"\u2197\ufe0f"))))),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"testing-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"testing-preview")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u26a0\ufe0f For devs only")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testing-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.testing-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Unstable \ud83d\udd34")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.testing-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.testing-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Main Branch")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"preprod",label:"Preprod",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-preprod"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-preprod")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-preprod")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.release-preprod.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preprod"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Release \ud83d\udfe2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.release-preprod.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.release-preprod.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases/latest"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-mainnet"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-mainnet")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"-"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"No \u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},"-")))))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"In this documentation, we use the generic:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_CARDANO_NETWORK**")," identifier, but you need to replace it with the name of the network that runs on your Cardano node (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"preprod"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_AGGREGATOR_ENDPOINT**")," identifier, but you need to replace it with the endpoint of an aggregator that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://aggregator.release-preprod.api.mithril.network/aggregator"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_GENESIS_VERIFICATION_KEY**")," identifier, but you need to replace it with the genesis verification key url that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADAPTER_TYPE**")," identifier, but you need to replace it with the era reader adapter type used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADDRESS**")," identifier, but you need to replace it with the era reader address url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/address.addr"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_VERIFICATION_KEY**")," identifier, but you need to replace it with the era reader verification key url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/TEST_ONLY_era.vkey"),")"))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/doc/assets/js/1d3fbc77.17dd71c8.js b/doc/assets/js/1d3fbc77.b0ef7309.js similarity index 99% rename from doc/assets/js/1d3fbc77.17dd71c8.js rename to doc/assets/js/1d3fbc77.b0ef7309.js index f0f385e0035..b91a5e3061e 100644 --- a/doc/assets/js/1d3fbc77.17dd71c8.js +++ b/doc/assets/js/1d3fbc77.b0ef7309.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[4163,9531,2379],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),d=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=d(a),k=r,h=m["".concat(p,".").concat(k)]||m[k]||u[k]||i;return a?n.createElement(h,l(l({ref:t},s),{},{components:a})):n.createElement(h,l({ref:t},s))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=k;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:r,l[1]=o;for(var d=2;d{a.d(t,{Z:()=>l});var n=a(67294),r=a(86010);const i={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:a,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,l),hidden:a},t)}},74866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(87462),r=a(67294),i=a(86010),l=a(12466),o=a(16550),p=a(91980),d=a(67392),s=a(50012);function m(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function u(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??m(a);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function k(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:a}=e;const n=(0,o.k6)(),i=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,p._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(n.location.search);t.set(i,e),n.replace({...n.location,search:t.toString()})}),[i,n])]}function c(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,i=u(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!k({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:i}))),[p,d]=h({queryString:a,groupId:n}),[m,c]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,i]=(0,s.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&i.set(e)}),[a,i])]}({groupId:n}),g=(()=>{const e=p??m;return k({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!k({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),c(e)}),[d,c,i]),tabValues:i}}var g=a(72389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:a,selectedValue:o,selectValue:p,tabValues:d}=e;const s=[],{blockElementScrollPositionUntilNextRender:m}=(0,l.o5)(),u=e=>{const t=e.currentTarget,a=s.indexOf(t),n=d[a].value;n!==o&&(m(t),p(n))},k=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=s.indexOf(e.currentTarget)+1;t=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(e.currentTarget)-1;t=s[a]??s[s.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":a},t)},d.map((e=>{let{value:t,label:a,attributes:l}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>s.push(e),onKeyDown:k,onClick:u},l,{className:(0,i.Z)("tabs__item",N.tabItem,l?.className,{"tabs__item--active":o===t})}),a??t)})))}function b(e){let{lazy:t,children:a,selectedValue:n}=e;const i=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=c(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",N.tabList)},r.createElement(f,(0,n.Z)({},e,t)),r.createElement(b,(0,n.Z)({},e,t)))}function v(e){const t=(0,g.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},61494:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const i={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},l=void 0,o={unversionedId:"compiled-binaries",id:"compiled-binaries",title:"compiled-binaries",description:"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package",source:"@site/root/compiled-binaries.md",sourceDirName:".",slug:"/compiled-binaries",permalink:"/doc/next/compiled-binaries",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/compiled-binaries.md",tags:[],version:"current",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},p={},d=[],s={toc:d},m="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package\nfor linux\xb9."),(0,r.kt)("p",null,"You can download them from the Release / Pre-Release distribution page that depends on the Mithril Network you\nare targeting."),(0,r.kt)("p",null,"These links are available in the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table."),(0,r.kt)("p",null,"\xb9 The Linux binaries target ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc"),", and have a minimum requirement of ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc 2.31")," (compatible with ",(0,r.kt)("inlineCode",{parentName:"p"},"Ubuntu 20.04"),"\nor ",(0,r.kt)("inlineCode",{parentName:"p"},"Debian Bullseye"),")."))}u.isMDXComponent=!0},99544:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>p,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>m});var n=a(87462),r=(a(67294),a(3905)),i=a(81900),l=a(61494);const o={sidebar_position:2},p="Run a Mithril Signer node (SPO)",d={unversionedId:"manual/getting-started/run-signer-node",id:"manual/getting-started/run-signer-node",title:"Run a Mithril Signer node (SPO)",description:"For more information about the Mithril Protocol, please refer to the About Mithril section.",source:"@site/root/manual/getting-started/run-signer-node.md",sourceDirName:"manual/getting-started",slug:"/manual/getting-started/run-signer-node",permalink:"/doc/next/manual/getting-started/run-signer-node",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/getting-started/run-signer-node.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"docSideBar",previous:{title:"Bootstrap a Cardano Node",permalink:"/doc/next/manual/getting-started/bootstrap-cardano-node"},next:{title:"Run a Private Mithril network",permalink:"/doc/next/manual/getting-started/run-mithril-devnet"}},s={},m=[{value:"Mithril Signer Deployment model",id:"mithril-signer-deployment-model",level:2},{value:"Mithril Keys Certification",id:"mithril-keys-certification",level:2},{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Setup the Mithril Signer node",id:"setup-the-mithril-signer-node",level:2},{value:"Building your own executable",id:"building-your-own-executable",level:3},{value:"Download source",id:"download-source",level:4},{value:"Build Mithril Signer binary",id:"build-mithril-signer-binary",level:4},{value:"Download pre-built binary",id:"download-pre-built-binary",level:3},{value:"Verify binary",id:"verify-binary",level:3},{value:"Verify version",id:"verify-version",level:4},{value:"Verify build",id:"verify-build",level:4},{value:"Install the service",id:"install-the-service",level:3},{value:"Move executable",id:"move-executable",level:4},{value:"Setup the service",id:"setup-the-service",level:4},{value:"Setup the Mithril Relay node",id:"setup-the-mithril-relay-node",level:2},{value:"Configure Squid service",id:"configure-squid-service",level:3},{value:"Firewall configuration",id:"firewall-configuration",level:3},{value:"On the Cardano Relay machine",id:"on-the-cardano-relay-machine",level:4},{value:"Verify the Mithril Signer Deployment",id:"verify-the-mithril-signer-deployment",level:2}],u={toc:m},k="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(k,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"run-a-mithril-signer-node-spo"},"Run a Mithril Signer node (SPO)"),(0,r.kt)("admonition",{title:"Mithril Networks",type:"note"},(0,r.kt)(i.default,{mdxType:"NetworksMatrix"})),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Protocol"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/next/mithril/intro"},"About Mithril")," section.")),(0,r.kt)("h2",{id:"mithril-signer-deployment-model"},"Mithril Signer Deployment model"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In this guide, you will learn how to setup a ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," on a ",(0,r.kt)("strong",{parentName:"p"},"Cardano SPO Infrastructure")," for the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," and the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),":"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"On the ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet"),", you ",(0,r.kt)("strong",{parentName:"li"},"must")," run the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," runs one the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Block Producer")," machine and the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay")," runs on the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Relay")," machine. You can also run the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment on the ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet"),"."),(0,r.kt)("li",{parentName:"ul"},"On the ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet")," ",(0,r.kt)("strong",{parentName:"li"},"only"),", it is also acceptable (and easier) to run the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," runs on the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Relay")," machine (in that case you don't need to setup a ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay"),")."))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment model is still in beta version.")),(0,r.kt)("p",null,"Here is the schema of the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment for the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),":\n",(0,r.kt)("a",{target:"_blank",href:a(34310).Z},(0,r.kt)("img",{alt:"Production Mithril Signer Deployment Model",src:a(39009).Z,width:"2179",height:"458"}))),(0,r.kt)("p",null,"and the schema of the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment only for the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),":\n",(0,r.kt)("a",{target:"_blank",href:a(66182).Z},(0,r.kt)("img",{alt:"Naive Mithril Signer Deployment Model",src:a(15588).Z,width:"2219",height:"450"}))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note"),": You can also deploy the production deployment model on the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),"."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"On the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),", you must ",(0,r.kt)("strong",{parentName:"p"},"never")," copy the ",(0,r.kt)("inlineCode",{parentName:"p"},"KES Secret Key")," out of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine!")),(0,r.kt)("h2",{id:"mithril-keys-certification"},"Mithril Keys Certification"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is using your Cardano ",(0,r.kt)("inlineCode",{parentName:"p"},"Operational Certificate")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"KES Secret Key")," files which allow to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Compute automatically the ",(0,r.kt)("inlineCode",{parentName:"li"},"PoolId")),(0,r.kt)("li",{parentName:"ul"},"Verify that you are the owner of the ",(0,r.kt)("inlineCode",{parentName:"li"},"PoolId"),", and thus of the associated stakes used by Mithril protocol"),(0,r.kt)("li",{parentName:"ul"},"Verify that you are the owner of the Mithril ",(0,r.kt)("inlineCode",{parentName:"li"},"Signer Secret Key"),", and thus allowed to contribute to the multi-signatures and certificate production of the Mithril network")),(0,r.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,r.kt)("h3",{id:"what-youll-need"},"What you'll need"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This guide is working only on a Linux machine.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Operating a ",(0,r.kt)("strong",{parentName:"p"},"Cardano Node")," as a ",(0,r.kt)("strong",{parentName:"p"},"Stake Pool"),":"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"Operational Certificate")," file of the pool"),(0,r.kt)("li",{parentName:"ul"},"The Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"KES Secret Key")," file of the pool"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Access to the file system of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," node for the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment (or of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," node for the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment):"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Read rights on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Database")," folder (",(0,r.kt)("inlineCode",{parentName:"li"},"--database-path")," setting of the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node"),")"),(0,r.kt)("li",{parentName:"ul"},"Read/Write rights on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Inter Process Communication")," file (usually ",(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH")," env var used to launch the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node"),")"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a recent version of the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.1.1"},(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli"))," (version 8.1.1+)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a ",(0,r.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a recent version of ",(0,r.kt)("inlineCode",{parentName:"p"},"jq")," (version ",(0,r.kt)("inlineCode",{parentName:"p"},"1.6+"),") ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install jq"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Only for the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment, install a recent version of ",(0,r.kt)("a",{parentName:"p",href:"http://www.squid-cache.org/"},(0,r.kt)("inlineCode",{parentName:"a"},"squid-cache"))," (version ",(0,r.kt)("inlineCode",{parentName:"p"},"5.2+"),") ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install squid")))),(0,r.kt)("h2",{id:"setup-the-mithril-signer-node"},"Setup the Mithril Signer node"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine.")))),(0,r.kt)("h3",{id:"building-your-own-executable"},"Building your own executable"),(0,r.kt)("h4",{id:"download-source"},"Download source"),(0,r.kt)("p",null,"Download from GitHub (HTTPS)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Or (SSH)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,r.kt)("h4",{id:"build-mithril-signer-binary"},"Build Mithril Signer binary"),(0,r.kt)("p",null,"Switch to build branch / tag"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# **YOUR_BUILD_BRANCH_OR_TAG** depends on the Mithril network you target, \n# please refer to the **Build From** column of the above **Mithril Networks** table\ngit switch **YOUR_BUILD_BRANCH_OR_TAG**\n")),(0,r.kt)("p",null,"Change directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril/mithril-signer\n")),(0,r.kt)("p",null,"Run tests (Optional)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make test\n")),(0,r.kt)("p",null,"Build executable"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make build\n")),(0,r.kt)("h3",{id:"download-pre-built-binary"},"Download pre-built binary"),(0,r.kt)(l.default,{mdxType:"CompiledBinaries"}),(0,r.kt)("h3",{id:"verify-binary"},"Verify binary"),(0,r.kt)("h4",{id:"verify-version"},"Verify version"),(0,r.kt)("p",null,"Check that the Mithril Signer binary is running the correct version by running"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-signer -V\n")),(0,r.kt)("p",null,"You should see something like"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"mithril-signer 0.2.0\n")),(0,r.kt)("p",null,"\u26a0\ufe0f Verify that the version displayed is the version described in the content of the Release / Pre-Release note (see the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table)"),(0,r.kt)("h4",{id:"verify-build"},"Verify build"),(0,r.kt)("p",null,"Check that the Mithril Signer binary is working fine by running its help"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-signer -h\n")),(0,r.kt)("p",null,"You should see"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"An implementation of a Mithril Signer\n\nUsage: mithril-signer [OPTIONS]\n\nOptions:\n -r, --run-mode \n Run Mode [env: RUN_MODE=] [default: dev]\n -v, --verbose...\n Verbosity level, add more v to increase\n -c, --configuration-dir \n Directory where the configuration file is located [default: ./config]\n --disable-digests-cache\n Disable immutables digests cache\n --reset-digests-cache\n If set the existing immutables digests cache will be reset\n -h, --help\n Print help information (use `--help` for more detail)\n -V, --version\n Print version information\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you want to dig deeper, you can get access to several level of logs from the Mithril Signer:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," for some logs (WARN)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vv")," for more logs (INFO)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvv")," for even more logs (DEBUG)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvvv")," for all logs (TRACE)"))),(0,r.kt)("h3",{id:"install-the-service"},"Install the service"),(0,r.kt)("h4",{id:"move-executable"},"Move executable"),(0,r.kt)("p",null,"Move executable to /opt/mithril"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo mkdir -p /opt/mithril\nsudo mv mithril-signer /opt/mithril\n")),(0,r.kt)("h4",{id:"setup-the-service"},"Setup the service"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"User=cardano"),":\nReplace this value with the correct user. We assume that the user used to run the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Node")," is ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano"),". The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," must imperatively run with the same user.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"In the ",(0,r.kt)("inlineCode",{parentName:"p"},"/opt/mithril/mithril-signer/service.env")," env file:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KES_SECRET_KEY_PATH=/cardano/keys/kes.skey"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/keys/kes.skey")," with the path to your Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"KES Secret Key")," file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"OPERATIONAL_CERTIFICATE_PATH=/cardano/cert/opcert.cert"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/cert/opcert.cert")," with the path to your Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"Operational Certificate")," file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DB_DIRECTORY=/cardano/db"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/db")," with the path to the database folder of the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node")," (the one in ",(0,r.kt)("inlineCode",{parentName:"li"},"--database-path"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket"),": replace with the path to the IPC file (",(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH")," env var)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_CLI_PATH=/app/bin/cardano-cli"),": replace with the path to the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli")," executable"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DATA_STORES_DIRECTORY=/opt/mithril/stores"),": replace with the path to a folder where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," will store its data (",(0,r.kt)("inlineCode",{parentName:"li"},"/opt/mithril/stores")," e.g.)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"STORE_RETENTION_LIMIT"),": if set, this will limit the number of records in some internal stores (5 is a good fit)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ERA_READER_ADAPTER_TYPE=cardano-chain"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain")," with the era reader adapter type used in your Mithril network"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'ERA_READER_ADAPTER_PARAMS={"address": "...", "verification_key": "..."}'),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},'{"address": "...", "verification_key": "..."}')," with the era reader params that you need to compute by running the command ",(0,r.kt)("inlineCode",{parentName:"li"},'jq -nc --arg address $(wget -q -O - **YOUR_ERA_READER_ADDRESS**) --arg verification_key $(wget -q -O - **YOUR_ERA_READER_VERIFICATION_KEY**) \'{"address": $address, "verification_key": $verification_key}\'')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RELAY_ENDPOINT=http://192.168.1.50:3128")," ",(0,r.kt)("strong",{parentName:"li"},"(optional)"),": this is the endpoint of the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay"),", which is required for the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment only. For the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment, do not set this variable in your env file."))))),(0,r.kt)("p",null,"First create an env file that will be used by the service:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"for the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /opt/mithril/mithril-signer.env << EOF\nKES_SECRET_KEY_PATH=**YOUR_KES_SECRET_KEY_PATH**\nOPERATIONAL_CERTIFICATE_PATH=**YOUR_OPERATIONAL_CERTIFICATE_PATH**\nNETWORK=**YOUR_CARDANO_NETWORK**\nAGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nRUN_INTERVAL=60000\nDB_DIRECTORY=/cardano/db\nCARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket\nCARDANO_CLI_PATH=/app/bin/cardano-cli\nDATA_STORES_DIRECTORY=/opt/mithril/stores\nSTORE_RETENTION_LIMIT=5\nERA_READER_ADAPTER_TYPE=**YOUR_ERA_READER_ADAPTER_TYPE**\nERA_READER_ADAPTER_PARAMS=**YOUR_ERA_READER_ADAPTER_PARAMS**\nRELAY_ENDPOINT=**YOUR_RELAY_ENDPOINT**\nEOF'\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"for the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /opt/mithril/mithril-signer.env << EOF\nKES_SECRET_KEY_PATH=**YOUR_KES_SECRET_KEY_PATH**\nOPERATIONAL_CERTIFICATE_PATH=**YOUR_OPERATIONAL_CERTIFICATE_PATH**\nNETWORK=**YOUR_CARDANO_NETWORK**\nAGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nRUN_INTERVAL=60000\nDB_DIRECTORY=/cardano/db\nCARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket\nCARDANO_CLI_PATH=/app/bin/cardano-cli\nDATA_STORES_DIRECTORY=/opt/mithril/stores\nSTORE_RETENTION_LIMIT=5\nERA_READER_ADAPTER_TYPE=**YOUR_ERA_READER_ADAPTER_TYPE**\nERA_READER_ADAPTER_PARAMS=**YOUR_ERA_READER_ADAPTER_PARAMS**\nEOF'\n")),(0,r.kt)("p",null,"Then we will create a ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/systemd/system/mithril-signer.service")," description file for our service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /etc/systemd/system/mithril-signer.service << EOF\n[Unit]\nDescription=Mithril Signer service\nStartLimitIntervalSec=0\n\n[Service]\nType=simple\nRestart=always\nRestartSec=1\nUser=cardano\nEnvironmentFile=/opt/mithril/mithril-signer.env\nExecStart=/opt/mithril/mithril-signer -vvv\n\n[Install]\nWantedBy=multi-user.target\nEOF'\n")),(0,r.kt)("p",null,"Reload the service configuration (Optional)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\n")),(0,r.kt)("p",null,"Then start the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl start mithril-signer\n")),(0,r.kt)("p",null,"Then register the service to start on boot"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable mithril-signer\n")),(0,r.kt)("p",null,"Then monitor status of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"systemctl status mithril-signer.service\n")),(0,r.kt)("p",null,"And monitor the logs of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"tail /var/log/syslog\n")),(0,r.kt)("h2",{id:"setup-the-mithril-relay-node"},"Setup the Mithril Relay node"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment: this step is not necessary.")))),(0,r.kt)("h3",{id:"configure-squid-service"},"Configure Squid service"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," node is a forward proxy that relays the traffic between the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," and the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Aggregator"),". When properly configured, it guarantees the security of the ",(0,r.kt)("strong",{parentName:"p"},"Block Producing")," node. We use ",(0,r.kt)("inlineCode",{parentName:"p"},"squid")," to operate this forward proxy, and this section provides a recommended configuration.")),(0,r.kt)("p",null,"Verify that the service was correctly configured at install:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl status squid\n")),(0,r.kt)("p",null,"Make a copy of the original configuration:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak\n")),(0,r.kt)("p",null,"Prepare the forward proxy configuration file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /etc/squid/squid.conf << EOF\n# Listening port (port 3128 is recommended)\nhttp_port **YOUR_RELAY_LISTENING_PORT**\n\n# ACL for internal IP of your block producer node\nacl relay_internal_ip src **YOUR_BLOCK_PRODUCER_INTERNAL_IP**\n\n# ACL for aggregator endpoint\nacl aggregator_domain dstdomain .mithril.network\n\n# ACL for SSL port only\nacl SSL_port port 443\n\n# Allowed traffic\nhttp_access allow relay_internal_ip aggregator_domain SSL_port\n\n# Deny everything else\nhttp_access deny all\nEOF'\n")),(0,r.kt)("p",null,"With this configuration, the proxy will:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"accept incoming traffic made from the internal IP of the block producing machine"),(0,r.kt)("li",{parentName:"ul"},"accept incoming traffic made to the listening port of the proxy"),(0,r.kt)("li",{parentName:"ul"},"accept incoming HTTPS traffic proxied to ",(0,r.kt)("inlineCode",{parentName:"li"},"mithril.network")," domain hosts"),(0,r.kt)("li",{parentName:"ul"},"deny all other traffic")),(0,r.kt)("p",null,"Restart the service:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl restart squid\n")),(0,r.kt)("p",null,"And make sure that it is running properly:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl status squid\n")),(0,r.kt)("p",null,"And monitor the logs of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"tail /var/log/syslog\n")),(0,r.kt)("h3",{id:"firewall-configuration"},"Firewall configuration"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"We assume that the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine is protected by a firewall, and that the proxied traffic originating from the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," must be allowed on this firewall.")),(0,r.kt)("h4",{id:"on-the-cardano-relay-machine"},"On the Cardano Relay machine"),(0,r.kt)("p",null,"We need to allow the incoming traffic on the listening port of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," on ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine that is originating from the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine."),(0,r.kt)("p",null,"Assuming you are using ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Uncomplicated_Firewall"},(0,r.kt)("inlineCode",{parentName:"a"},"Uncomplicated Firewall"))," (",(0,r.kt)("inlineCode",{parentName:"p"},"0.36+"),"), the command to run in order to open that traffic is:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo ufw allow from **YOUR_BLOCK_PRODUCER_INTERNAL_IP** to any port **YOUR_RELAY_LISTENING_PORT** proto tcp\n")),(0,r.kt)("p",null,"Assuming you are using ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Iptables"},(0,r.kt)("inlineCode",{parentName:"a"},"Iptables"))," (",(0,r.kt)("inlineCode",{parentName:"p"},"1.8.7+"),"), the commands to run in order to open that traffic is:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo iptables -A INPUT -s **YOUR_BLOCK_PRODUCER_INTERNAL_IP** -p tcp --dport **YOUR_RELAY_LISTENING_PORT** -j ACCEPT\nsudo iptables -L -v\nsudo service netfilter-persistent save\n")),(0,r.kt)("h2",{id:"verify-the-mithril-signer-deployment"},"Verify the Mithril Signer Deployment"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"There is a ",(0,r.kt)("inlineCode",{parentName:"p"},"2")," epochs delay between the signer node registration and its ability to create individual signatures, as explained in the ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/mithril/mithril-protocol/certificates"},"Mithril Certificate Chain in depth"),".\nAfter this delay, you should be able to see your ",(0,r.kt)("inlineCode",{parentName:"p"},"PoolId")," listed in some of the certificates available on the ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/explorer"},(0,r.kt)("inlineCode",{parentName:"a"},"Mithril Explorer")))))}h.isMDXComponent=!0},81900:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>p,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>m});var n=a(87462),r=(a(67294),a(3905)),i=a(74866),l=a(85162);const o={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},p=void 0,d={unversionedId:"networks-matrix",id:"networks-matrix",title:"networks-matrix",description:"Here is an up to date list of all the Mithril Networks, their configurations and their status:",source:"@site/root/networks-matrix.md",sourceDirName:".",slug:"/networks-matrix",permalink:"/doc/next/networks-matrix",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/networks-matrix.md",tags:[],version:"current",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},s={},m=[{value:"pre-release-preview",id:"pre-release-preview",level:2},{value:"testing-preview",id:"testing-preview",level:2},{value:"release-preprod",id:"release-preprod",level:2},{value:"release-mainnet",id:"release-mainnet",level:2}],u={toc:m},k="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(k,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here is an up to date list of all the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks"),", their configurations and their status:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Last update: 07/05/2023")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"preview",label:"Preview",default:!0,mdxType:"TabItem"},(0,r.kt)("h2",{id:"pre-release-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"pre-release-preview")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pre-release-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.pre-release-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Pre-Release \ud83d\udfe0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.pre-release-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Pre-Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases?q=pre"},"\u2197\ufe0f"))))),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"testing-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"testing-preview")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u26a0\ufe0f For devs only")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testing-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.testing-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Unstable \ud83d\udd34")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.testing-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.testing-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Main Branch")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"preprod",label:"Preprod",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-preprod"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-preprod")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-preprod")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.release-preprod.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preprod"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Release \ud83d\udfe2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.release-preprod.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.release-preprod.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases/latest"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-mainnet"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-mainnet")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"-"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"No \u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},"-")))))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"In this documentation, we use the generic:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_CARDANO_NETWORK**")," identifier, but you need to replace it with the name of the network that runs on your Cardano node (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"preprod"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_AGGREGATOR_ENDPOINT**")," identifier, but you need to replace it with the endpoint of an aggregator that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://aggregator.release-preprod.api.mithril.network/aggregator"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_GENESIS_VERIFICATION_KEY**")," identifier, but you need to replace it with the genesis verification key url that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADAPTER_TYPE**")," identifier, but you need to replace it with the era reader adapter type used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADDRESS**")," identifier, but you need to replace it with the era reader address url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/address.addr"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_VERIFICATION_KEY**")," identifier, but you need to replace it with the era reader verification key url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/TEST_ONLY_era.vkey"),")"))))}h.isMDXComponent=!0},66182:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/files/signer-deployment-naive-b2092b7ecc1a39c7344fa0cb809c250c.jpg"},34310:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/files/signer-deployment-production-d33184629147bf7b0c79bb731673cd6c.jpg"},15588:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/signer-deployment-naive-b2092b7ecc1a39c7344fa0cb809c250c.jpg"},39009:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/signer-deployment-production-d33184629147bf7b0c79bb731673cd6c.jpg"}}]); \ No newline at end of file +"use strict";(self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[4163,9531,2379],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var p=n.createContext({}),d=function(e){var t=n.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=d(e.components);return n.createElement(p.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=d(a),k=r,h=m["".concat(p,".").concat(k)]||m[k]||u[k]||i;return a?n.createElement(h,l(l({ref:t},s),{},{components:a})):n.createElement(h,l({ref:t},s))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,l=new Array(i);l[0]=k;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[m]="string"==typeof e?e:r,l[1]=o;for(var d=2;d{a.d(t,{Z:()=>l});var n=a(67294),r=a(86010);const i={tabItem:"tabItem_Ymn6"};function l(e){let{children:t,hidden:a,className:l}=e;return n.createElement("div",{role:"tabpanel",className:(0,r.Z)(i.tabItem,l),hidden:a},t)}},74866:(e,t,a)=>{a.d(t,{Z:()=>v});var n=a(87462),r=a(67294),i=a(86010),l=a(12466),o=a(16550),p=a(91980),d=a(67392),s=a(50012);function m(e){return function(e){return r.Children.map(e,(e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:n,default:r}}=e;return{value:t,label:a,attributes:n,default:r}}))}function u(e){const{values:t,children:a}=e;return(0,r.useMemo)((()=>{const e=t??m(a);return function(e){const t=(0,d.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function k(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:a}=e;const n=(0,o.k6)(),i=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,p._X)(i),(0,r.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(n.location.search);t.set(i,e),n.replace({...n.location,search:t.toString()})}),[i,n])]}function c(e){const{defaultValue:t,queryString:a=!1,groupId:n}=e,i=u(e),[l,o]=(0,r.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!k({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=a.find((e=>e.default))??a[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:i}))),[p,d]=h({queryString:a,groupId:n}),[m,c]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[n,i]=(0,s.Nk)(a);return[n,(0,r.useCallback)((e=>{a&&i.set(e)}),[a,i])]}({groupId:n}),g=(()=>{const e=p??m;return k({value:e,tabValues:i})?e:null})();(0,r.useLayoutEffect)((()=>{g&&o(g)}),[g]);return{selectedValue:l,selectValue:(0,r.useCallback)((e=>{if(!k({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);o(e),d(e),c(e)}),[d,c,i]),tabValues:i}}var g=a(72389);const N={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function f(e){let{className:t,block:a,selectedValue:o,selectValue:p,tabValues:d}=e;const s=[],{blockElementScrollPositionUntilNextRender:m}=(0,l.o5)(),u=e=>{const t=e.currentTarget,a=s.indexOf(t),n=d[a].value;n!==o&&(m(t),p(n))},k=e=>{let t=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=s.indexOf(e.currentTarget)+1;t=s[a]??s[0];break}case"ArrowLeft":{const a=s.indexOf(e.currentTarget)-1;t=s[a]??s[s.length-1];break}}t?.focus()};return r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":a},t)},d.map((e=>{let{value:t,label:a,attributes:l}=e;return r.createElement("li",(0,n.Z)({role:"tab",tabIndex:o===t?0:-1,"aria-selected":o===t,key:t,ref:e=>s.push(e),onKeyDown:k,onClick:u},l,{className:(0,i.Z)("tabs__item",N.tabItem,l?.className,{"tabs__item--active":o===t})}),a??t)})))}function b(e){let{lazy:t,children:a,selectedValue:n}=e;const i=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=i.find((e=>e.props.value===n));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return r.createElement("div",{className:"margin-top--md"},i.map(((e,t)=>(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==n}))))}function y(e){const t=c(e);return r.createElement("div",{className:(0,i.Z)("tabs-container",N.tabList)},r.createElement(f,(0,n.Z)({},e,t)),r.createElement(b,(0,n.Z)({},e,t)))}function v(e){const t=(0,g.Z)();return r.createElement(y,(0,n.Z)({key:String(t)},e))}},61494:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const i={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},l=void 0,o={unversionedId:"compiled-binaries",id:"compiled-binaries",title:"compiled-binaries",description:"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package",source:"@site/root/compiled-binaries.md",sourceDirName:".",slug:"/compiled-binaries",permalink:"/doc/next/compiled-binaries",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/compiled-binaries.md",tags:[],version:"current",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},p={},d=[],s={toc:d},m="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Each Release / Pre-Release distribution comes with pre compiled binaries ready to use or wrapped in a debian package\nfor linux\xb9."),(0,r.kt)("p",null,"You can download them from the Release / Pre-Release distribution page that depends on the Mithril Network you\nare targeting."),(0,r.kt)("p",null,"These links are available in the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table."),(0,r.kt)("p",null,"\xb9 The Linux binaries target ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc"),", and have a minimum requirement of ",(0,r.kt)("inlineCode",{parentName:"p"},"glibc 2.31")," (compatible with ",(0,r.kt)("inlineCode",{parentName:"p"},"Ubuntu 20.04"),"\nor ",(0,r.kt)("inlineCode",{parentName:"p"},"Debian Bullseye"),")."))}u.isMDXComponent=!0},99544:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>p,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>m});var n=a(87462),r=(a(67294),a(3905)),i=a(81900),l=a(61494);const o={sidebar_position:3},p="Run a Mithril Signer node (SPO)",d={unversionedId:"manual/getting-started/run-signer-node",id:"manual/getting-started/run-signer-node",title:"Run a Mithril Signer node (SPO)",description:"For more information about the Mithril Protocol, please refer to the About Mithril section.",source:"@site/root/manual/getting-started/run-signer-node.md",sourceDirName:"manual/getting-started",slug:"/manual/getting-started/run-signer-node",permalink:"/doc/next/manual/getting-started/run-signer-node",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/manual/getting-started/run-signer-node.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"docSideBar",previous:{title:"Bootstrap a Cardano Node",permalink:"/doc/next/manual/getting-started/bootstrap-cardano-node"},next:{title:"Run a Private Mithril network",permalink:"/doc/next/manual/getting-started/run-mithril-devnet"}},s={},m=[{value:"Mithril Signer Deployment model",id:"mithril-signer-deployment-model",level:2},{value:"Mithril Keys Certification",id:"mithril-keys-certification",level:2},{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Setup the Mithril Signer node",id:"setup-the-mithril-signer-node",level:2},{value:"Building your own executable",id:"building-your-own-executable",level:3},{value:"Download source",id:"download-source",level:4},{value:"Build Mithril Signer binary",id:"build-mithril-signer-binary",level:4},{value:"Download pre-built binary",id:"download-pre-built-binary",level:3},{value:"Verify binary",id:"verify-binary",level:3},{value:"Verify version",id:"verify-version",level:4},{value:"Verify build",id:"verify-build",level:4},{value:"Install the service",id:"install-the-service",level:3},{value:"Move executable",id:"move-executable",level:4},{value:"Setup the service",id:"setup-the-service",level:4},{value:"Setup the Mithril Relay node",id:"setup-the-mithril-relay-node",level:2},{value:"Configure Squid service",id:"configure-squid-service",level:3},{value:"Firewall configuration",id:"firewall-configuration",level:3},{value:"On the Cardano Relay machine",id:"on-the-cardano-relay-machine",level:4},{value:"Verify the Mithril Signer Deployment",id:"verify-the-mithril-signer-deployment",level:2}],u={toc:m},k="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(k,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"run-a-mithril-signer-node-spo"},"Run a Mithril Signer node (SPO)"),(0,r.kt)("admonition",{title:"Mithril Networks",type:"note"},(0,r.kt)(i.default,{mdxType:"NetworksMatrix"})),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For more information about the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Protocol"),", please refer to the ",(0,r.kt)("a",{parentName:"p",href:"/doc/next/mithril/intro"},"About Mithril")," section.")),(0,r.kt)("h2",{id:"mithril-signer-deployment-model"},"Mithril Signer Deployment model"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In this guide, you will learn how to setup a ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," on a ",(0,r.kt)("strong",{parentName:"p"},"Cardano SPO Infrastructure")," for the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet")," and the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),":"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"On the ",(0,r.kt)("inlineCode",{parentName:"li"},"mainnet"),", you ",(0,r.kt)("strong",{parentName:"li"},"must")," run the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," runs one the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Block Producer")," machine and the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay")," runs on the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Relay")," machine. You can also run the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment on the ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet"),"."),(0,r.kt)("li",{parentName:"ul"},"On the ",(0,r.kt)("inlineCode",{parentName:"li"},"testnet")," ",(0,r.kt)("strong",{parentName:"li"},"only"),", it is also acceptable (and easier) to run the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," runs on the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Relay")," machine (in that case you don't need to setup a ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay"),")."))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment model is still in beta version.")),(0,r.kt)("p",null,"Here is the schema of the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment for the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),":\n",(0,r.kt)("a",{target:"_blank",href:a(34310).Z},(0,r.kt)("img",{alt:"Production Mithril Signer Deployment Model",src:a(39009).Z,width:"2179",height:"458"}))),(0,r.kt)("p",null,"and the schema of the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment only for the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),":\n",(0,r.kt)("a",{target:"_blank",href:a(66182).Z},(0,r.kt)("img",{alt:"Naive Mithril Signer Deployment Model",src:a(15588).Z,width:"2219",height:"450"}))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note"),": You can also deploy the production deployment model on the ",(0,r.kt)("inlineCode",{parentName:"p"},"testnet"),"."),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"On the ",(0,r.kt)("inlineCode",{parentName:"p"},"mainnet"),", you must ",(0,r.kt)("strong",{parentName:"p"},"never")," copy the ",(0,r.kt)("inlineCode",{parentName:"p"},"KES Secret Key")," out of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine!")),(0,r.kt)("h2",{id:"mithril-keys-certification"},"Mithril Keys Certification"),(0,r.kt)("p",null,"The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is using your Cardano ",(0,r.kt)("inlineCode",{parentName:"p"},"Operational Certificate")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"KES Secret Key")," files which allow to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Compute automatically the ",(0,r.kt)("inlineCode",{parentName:"li"},"PoolId")),(0,r.kt)("li",{parentName:"ul"},"Verify that you are the owner of the ",(0,r.kt)("inlineCode",{parentName:"li"},"PoolId"),", and thus of the associated stakes used by Mithril protocol"),(0,r.kt)("li",{parentName:"ul"},"Verify that you are the owner of the Mithril ",(0,r.kt)("inlineCode",{parentName:"li"},"Signer Secret Key"),", and thus allowed to contribute to the multi-signatures and certificate production of the Mithril network")),(0,r.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,r.kt)("h3",{id:"what-youll-need"},"What you'll need"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This guide is working only on a Linux machine.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Operating a ",(0,r.kt)("strong",{parentName:"p"},"Cardano Node")," as a ",(0,r.kt)("strong",{parentName:"p"},"Stake Pool"),":"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"Operational Certificate")," file of the pool"),(0,r.kt)("li",{parentName:"ul"},"The Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"KES Secret Key")," file of the pool"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Access to the file system of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," node for the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment (or of the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," node for the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment):"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Read rights on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Database")," folder (",(0,r.kt)("inlineCode",{parentName:"li"},"--database-path")," setting of the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node"),")"),(0,r.kt)("li",{parentName:"ul"},"Read/Write rights on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Inter Process Communication")," file (usually ",(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH")," env var used to launch the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node"),")"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a recent version of the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/input-output-hk/cardano-node/releases/tag/8.1.1"},(0,r.kt)("inlineCode",{parentName:"a"},"cardano-cli"))," (version 8.1.1+)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a ",(0,r.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/learn/get-started"},"correctly configured")," Rust toolchain (latest stable version)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install OpenSSL development libraries, for example on Ubuntu/Debian/Mint run ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install libssl-dev"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Install a recent version of ",(0,r.kt)("inlineCode",{parentName:"p"},"jq")," (version ",(0,r.kt)("inlineCode",{parentName:"p"},"1.6+"),") ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install jq"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Only for the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment, install a recent version of ",(0,r.kt)("a",{parentName:"p",href:"http://www.squid-cache.org/"},(0,r.kt)("inlineCode",{parentName:"a"},"squid-cache"))," (version ",(0,r.kt)("inlineCode",{parentName:"p"},"5.2+"),") ",(0,r.kt)("inlineCode",{parentName:"p"},"apt install squid")))),(0,r.kt)("h2",{id:"setup-the-mithril-signer-node"},"Setup the Mithril Signer node"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine.")))),(0,r.kt)("h3",{id:"building-your-own-executable"},"Building your own executable"),(0,r.kt)("h4",{id:"download-source"},"Download source"),(0,r.kt)("p",null,"Download from GitHub (HTTPS)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/input-output-hk/mithril.git\n")),(0,r.kt)("p",null,"Or (SSH)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:input-output-hk/mithril.git\n")),(0,r.kt)("h4",{id:"build-mithril-signer-binary"},"Build Mithril Signer binary"),(0,r.kt)("p",null,"Switch to build branch / tag"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"# **YOUR_BUILD_BRANCH_OR_TAG** depends on the Mithril network you target, \n# please refer to the **Build From** column of the above **Mithril Networks** table\ngit switch **YOUR_BUILD_BRANCH_OR_TAG**\n")),(0,r.kt)("p",null,"Change directory"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"cd mithril/mithril-signer\n")),(0,r.kt)("p",null,"Run tests (Optional)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make test\n")),(0,r.kt)("p",null,"Build executable"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"make build\n")),(0,r.kt)("h3",{id:"download-pre-built-binary"},"Download pre-built binary"),(0,r.kt)(l.default,{mdxType:"CompiledBinaries"}),(0,r.kt)("h3",{id:"verify-binary"},"Verify binary"),(0,r.kt)("h4",{id:"verify-version"},"Verify version"),(0,r.kt)("p",null,"Check that the Mithril Signer binary is running the correct version by running"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-signer -V\n")),(0,r.kt)("p",null,"You should see something like"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"mithril-signer 0.2.0\n")),(0,r.kt)("p",null,"\u26a0\ufe0f Verify that the version displayed is the version described in the content of the Release / Pre-Release note (see the ",(0,r.kt)("strong",{parentName:"p"},"Build From")," column of the above ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks")," table)"),(0,r.kt)("h4",{id:"verify-build"},"Verify build"),(0,r.kt)("p",null,"Check that the Mithril Signer binary is working fine by running its help"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"./mithril-signer -h\n")),(0,r.kt)("p",null,"You should see"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"An implementation of a Mithril Signer\n\nUsage: mithril-signer [OPTIONS]\n\nOptions:\n -r, --run-mode \n Run Mode [env: RUN_MODE=] [default: dev]\n -v, --verbose...\n Verbosity level, add more v to increase\n -c, --configuration-dir \n Directory where the configuration file is located [default: ./config]\n --disable-digests-cache\n Disable immutables digests cache\n --reset-digests-cache\n If set the existing immutables digests cache will be reset\n -h, --help\n Print help information (use `--help` for more detail)\n -V, --version\n Print version information\n")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you want to dig deeper, you can get access to several level of logs from the Mithril Signer:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," for some logs (WARN)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vv")," for more logs (INFO)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvv")," for even more logs (DEBUG)"),(0,r.kt)("li",{parentName:"ul"},"Add ",(0,r.kt)("inlineCode",{parentName:"li"},"-vvvv")," for all logs (TRACE)"))),(0,r.kt)("h3",{id:"install-the-service"},"Install the service"),(0,r.kt)("h4",{id:"move-executable"},"Move executable"),(0,r.kt)("p",null,"Move executable to /opt/mithril"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo mkdir -p /opt/mithril\nsudo mv mithril-signer /opt/mithril\n")),(0,r.kt)("h4",{id:"setup-the-service"},"Setup the service"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"p"},"User=cardano"),":\nReplace this value with the correct user. We assume that the user used to run the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Node")," is ",(0,r.kt)("inlineCode",{parentName:"p"},"cardano"),". The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," must imperatively run with the same user.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"In the ",(0,r.kt)("inlineCode",{parentName:"p"},"/opt/mithril/mithril-signer/service.env")," env file:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KES_SECRET_KEY_PATH=/cardano/keys/kes.skey"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/keys/kes.skey")," with the path to your Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"KES Secret Key")," file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"OPERATIONAL_CERTIFICATE_PATH=/cardano/cert/opcert.cert"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/cert/opcert.cert")," with the path to your Cardano ",(0,r.kt)("inlineCode",{parentName:"li"},"Operational Certificate")," file"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DB_DIRECTORY=/cardano/db"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"/cardano/db")," with the path to the database folder of the ",(0,r.kt)("strong",{parentName:"li"},"Cardano Node")," (the one in ",(0,r.kt)("inlineCode",{parentName:"li"},"--database-path"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket"),": replace with the path to the IPC file (",(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_NODE_SOCKET_PATH")," env var)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CARDANO_CLI_PATH=/app/bin/cardano-cli"),": replace with the path to the ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-cli")," executable"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DATA_STORES_DIRECTORY=/opt/mithril/stores"),": replace with the path to a folder where the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Signer")," will store its data (",(0,r.kt)("inlineCode",{parentName:"li"},"/opt/mithril/stores")," e.g.)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"STORE_RETENTION_LIMIT"),": if set, this will limit the number of records in some internal stores (5 is a good fit)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ERA_READER_ADAPTER_TYPE=cardano-chain"),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain")," with the era reader adapter type used in your Mithril network"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'ERA_READER_ADAPTER_PARAMS={"address": "...", "verification_key": "..."}'),": replace ",(0,r.kt)("inlineCode",{parentName:"li"},'{"address": "...", "verification_key": "..."}')," with the era reader params that you need to compute by running the command ",(0,r.kt)("inlineCode",{parentName:"li"},'jq -nc --arg address $(wget -q -O - **YOUR_ERA_READER_ADDRESS**) --arg verification_key $(wget -q -O - **YOUR_ERA_READER_VERIFICATION_KEY**) \'{"address": $address, "verification_key": $verification_key}\'')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RELAY_ENDPOINT=http://192.168.1.50:3128")," ",(0,r.kt)("strong",{parentName:"li"},"(optional)"),": this is the endpoint of the ",(0,r.kt)("strong",{parentName:"li"},"Mithril Relay"),", which is required for the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment only. For the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment, do not set this variable in your env file."))))),(0,r.kt)("p",null,"First create an env file that will be used by the service:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"for the ",(0,r.kt)("strong",{parentName:"li"},"production")," deployment:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /opt/mithril/mithril-signer.env << EOF\nKES_SECRET_KEY_PATH=**YOUR_KES_SECRET_KEY_PATH**\nOPERATIONAL_CERTIFICATE_PATH=**YOUR_OPERATIONAL_CERTIFICATE_PATH**\nNETWORK=**YOUR_CARDANO_NETWORK**\nAGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nRUN_INTERVAL=60000\nDB_DIRECTORY=/cardano/db\nCARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket\nCARDANO_CLI_PATH=/app/bin/cardano-cli\nDATA_STORES_DIRECTORY=/opt/mithril/stores\nSTORE_RETENTION_LIMIT=5\nERA_READER_ADAPTER_TYPE=**YOUR_ERA_READER_ADAPTER_TYPE**\nERA_READER_ADAPTER_PARAMS=**YOUR_ERA_READER_ADAPTER_PARAMS**\nRELAY_ENDPOINT=**YOUR_RELAY_ENDPOINT**\nEOF'\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"for the ",(0,r.kt)("strong",{parentName:"li"},"naive")," deployment:")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /opt/mithril/mithril-signer.env << EOF\nKES_SECRET_KEY_PATH=**YOUR_KES_SECRET_KEY_PATH**\nOPERATIONAL_CERTIFICATE_PATH=**YOUR_OPERATIONAL_CERTIFICATE_PATH**\nNETWORK=**YOUR_CARDANO_NETWORK**\nAGGREGATOR_ENDPOINT=**YOUR_AGGREGATOR_ENDPOINT**\nRUN_INTERVAL=60000\nDB_DIRECTORY=/cardano/db\nCARDANO_NODE_SOCKET_PATH=/cardano/ipc/node.socket\nCARDANO_CLI_PATH=/app/bin/cardano-cli\nDATA_STORES_DIRECTORY=/opt/mithril/stores\nSTORE_RETENTION_LIMIT=5\nERA_READER_ADAPTER_TYPE=**YOUR_ERA_READER_ADAPTER_TYPE**\nERA_READER_ADAPTER_PARAMS=**YOUR_ERA_READER_ADAPTER_PARAMS**\nEOF'\n")),(0,r.kt)("p",null,"Then we will create a ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/systemd/system/mithril-signer.service")," description file for our service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /etc/systemd/system/mithril-signer.service << EOF\n[Unit]\nDescription=Mithril Signer service\nStartLimitIntervalSec=0\n\n[Service]\nType=simple\nRestart=always\nRestartSec=1\nUser=cardano\nEnvironmentFile=/opt/mithril/mithril-signer.env\nExecStart=/opt/mithril/mithril-signer -vvv\n\n[Install]\nWantedBy=multi-user.target\nEOF'\n")),(0,r.kt)("p",null,"Reload the service configuration (Optional)"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl daemon-reload\n")),(0,r.kt)("p",null,"Then start the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl start mithril-signer\n")),(0,r.kt)("p",null,"Then register the service to start on boot"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl enable mithril-signer\n")),(0,r.kt)("p",null,"Then monitor status of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"systemctl status mithril-signer.service\n")),(0,r.kt)("p",null,"And monitor the logs of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"tail /var/log/syslog\n")),(0,r.kt)("h2",{id:"setup-the-mithril-relay-node"},"Setup the Mithril Relay node"),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"production")," deployment: the setup of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," is done on the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"For the ",(0,r.kt)("strong",{parentName:"p"},"naive")," deployment: this step is not necessary.")))),(0,r.kt)("h3",{id:"configure-squid-service"},"Configure Squid service"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," node is a forward proxy that relays the traffic between the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Signer")," and the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Aggregator"),". When properly configured, it guarantees the security of the ",(0,r.kt)("strong",{parentName:"p"},"Block Producing")," node. We use ",(0,r.kt)("inlineCode",{parentName:"p"},"squid")," to operate this forward proxy, and this section provides a recommended configuration.")),(0,r.kt)("p",null,"Verify that the service was correctly configured at install:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl status squid\n")),(0,r.kt)("p",null,"Make a copy of the original configuration:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak\n")),(0,r.kt)("p",null,"Prepare the forward proxy configuration file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo bash -c 'cat > /etc/squid/squid.conf << EOF\n# Listening port (port 3128 is recommended)\nhttp_port **YOUR_RELAY_LISTENING_PORT**\n\n# ACL for internal IP of your block producer node\nacl relay_internal_ip src **YOUR_BLOCK_PRODUCER_INTERNAL_IP**\n\n# ACL for aggregator endpoint\nacl aggregator_domain dstdomain .mithril.network\n\n# ACL for SSL port only\nacl SSL_port port 443\n\n# Allowed traffic\nhttp_access allow relay_internal_ip aggregator_domain SSL_port\n\n# Deny everything else\nhttp_access deny all\nEOF'\n")),(0,r.kt)("p",null,"With this configuration, the proxy will:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"accept incoming traffic made from the internal IP of the block producing machine"),(0,r.kt)("li",{parentName:"ul"},"accept incoming traffic made to the listening port of the proxy"),(0,r.kt)("li",{parentName:"ul"},"accept incoming HTTPS traffic proxied to ",(0,r.kt)("inlineCode",{parentName:"li"},"mithril.network")," domain hosts"),(0,r.kt)("li",{parentName:"ul"},"deny all other traffic")),(0,r.kt)("p",null,"Restart the service:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl restart squid\n")),(0,r.kt)("p",null,"And make sure that it is running properly:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo systemctl status squid\n")),(0,r.kt)("p",null,"And monitor the logs of the service"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"tail /var/log/syslog\n")),(0,r.kt)("h3",{id:"firewall-configuration"},"Firewall configuration"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"We assume that the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine is protected by a firewall, and that the proxied traffic originating from the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," must be allowed on this firewall.")),(0,r.kt)("h4",{id:"on-the-cardano-relay-machine"},"On the Cardano Relay machine"),(0,r.kt)("p",null,"We need to allow the incoming traffic on the listening port of the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Relay")," on ",(0,r.kt)("strong",{parentName:"p"},"Cardano Relay")," machine that is originating from the ",(0,r.kt)("strong",{parentName:"p"},"Cardano Block Producer")," machine."),(0,r.kt)("p",null,"Assuming you are using ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Uncomplicated_Firewall"},(0,r.kt)("inlineCode",{parentName:"a"},"Uncomplicated Firewall"))," (",(0,r.kt)("inlineCode",{parentName:"p"},"0.36+"),"), the command to run in order to open that traffic is:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo ufw allow from **YOUR_BLOCK_PRODUCER_INTERNAL_IP** to any port **YOUR_RELAY_LISTENING_PORT** proto tcp\n")),(0,r.kt)("p",null,"Assuming you are using ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Iptables"},(0,r.kt)("inlineCode",{parentName:"a"},"Iptables"))," (",(0,r.kt)("inlineCode",{parentName:"p"},"1.8.7+"),"), the commands to run in order to open that traffic is:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"sudo iptables -A INPUT -s **YOUR_BLOCK_PRODUCER_INTERNAL_IP** -p tcp --dport **YOUR_RELAY_LISTENING_PORT** -j ACCEPT\nsudo iptables -L -v\nsudo service netfilter-persistent save\n")),(0,r.kt)("h2",{id:"verify-the-mithril-signer-deployment"},"Verify the Mithril Signer Deployment"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"There is a ",(0,r.kt)("inlineCode",{parentName:"p"},"2")," epochs delay between the signer node registration and its ability to create individual signatures, as explained in the ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/doc/mithril/mithril-protocol/certificates"},"Mithril Certificate Chain in depth"),".\nAfter this delay, you should be able to see your ",(0,r.kt)("inlineCode",{parentName:"p"},"PoolId")," listed in some of the certificates available on the ",(0,r.kt)("a",{parentName:"p",href:"https://mithril.network/explorer"},(0,r.kt)("inlineCode",{parentName:"a"},"Mithril Explorer")))))}h.isMDXComponent=!0},81900:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>p,default:()=>h,frontMatter:()=>o,metadata:()=>d,toc:()=>m});var n=a(87462),r=(a(67294),a(3905)),i=a(74866),l=a(85162);const o={unlisted:!0,hide_title:!0,hide_table_of_contents:!0},p=void 0,d={unversionedId:"networks-matrix",id:"networks-matrix",title:"networks-matrix",description:"Here is an up to date list of all the Mithril Networks, their configurations and their status:",source:"@site/root/networks-matrix.md",sourceDirName:".",slug:"/networks-matrix",permalink:"/doc/next/networks-matrix",draft:!1,editUrl:"https://github.com/input-output-hk/mithril/edit/main/docs/root/networks-matrix.md",tags:[],version:"current",frontMatter:{unlisted:!0,hide_title:!0,hide_table_of_contents:!0}},s={},m=[{value:"pre-release-preview",id:"pre-release-preview",level:2},{value:"testing-preview",id:"testing-preview",level:2},{value:"release-preprod",id:"release-preprod",level:2},{value:"release-mainnet",id:"release-mainnet",level:2}],u={toc:m},k="wrapper";function h(e){let{components:t,...a}=e;return(0,r.kt)(k,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Here is an up to date list of all the ",(0,r.kt)("strong",{parentName:"p"},"Mithril Networks"),", their configurations and their status:"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Last update: 07/05/2023")),(0,r.kt)(i.Z,{mdxType:"Tabs"},(0,r.kt)(l.Z,{value:"preview",label:"Preview",default:!0,mdxType:"TabItem"},(0,r.kt)("h2",{id:"pre-release-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"pre-release-preview")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"pre-release-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.pre-release-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Pre-Release \ud83d\udfe0")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.pre-release-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.pre-release-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/pre-release-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Pre-Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases?q=pre"},"\u2197\ufe0f"))))),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"testing-preview"},(0,r.kt)("inlineCode",{parentName:"h2"},"testing-preview")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u26a0\ufe0f For devs only")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"testing-preview")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.testing-preview.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preview"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"2"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Unstable \ud83d\udd34")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.testing-preview.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.testing-preview.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/testing-preview/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Main Branch")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/tree/main"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"preprod",label:"Preprod",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-preprod"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-preprod")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-preprod")," ",(0,r.kt)("a",{parentName:"td",href:"https://mithril.network/explorer?aggregator=https%3A%2F%2Faggregator.release-preprod.api.mithril.network%2Faggregator"},"\ud83d\udd0e"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"preprod"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"Yes \u2714\ufe0f")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"Release \ud83d\udfe2")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://aggregator.release-preprod.api.mithril.network/aggregator")," ",(0,r.kt)("a",{parentName:"td",href:"https://aggregator.release-preprod.api.mithril.network/aggregator"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"cardano-chain"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.addr"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey")," ",(0,r.kt)("a",{parentName:"td",href:"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/era.vkey"},"\u2197\ufe0f"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Latest Release")," ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/input-output-hk/mithril/releases/latest"},"\u2197\ufe0f")))))),(0,r.kt)(l.Z,{value:"mainnet",label:"Mainnet",mdxType:"TabItem"},(0,r.kt)("h2",{id:"release-mainnet"},(0,r.kt)("inlineCode",{parentName:"h2"},"release-mainnet")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Information"),(0,r.kt)("th",{parentName:"tr",align:null},"-"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Mithril Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"release-mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Network")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"mainnet"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Cardano Magic Id")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"-"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Supported")),(0,r.kt)("td",{parentName:"tr",align:null},"No \u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Status")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Aggregator Endpoint")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Genesis Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Adapter Type")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Address")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Era Reader Verification Key")),(0,r.kt)("td",{parentName:"tr",align:null},"-")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"Build From")),(0,r.kt)("td",{parentName:"tr",align:null},"-")))))),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"In this documentation, we use the generic:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_CARDANO_NETWORK**")," identifier, but you need to replace it with the name of the network that runs on your Cardano node (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"preprod"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_AGGREGATOR_ENDPOINT**")," identifier, but you need to replace it with the endpoint of an aggregator that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://aggregator.release-preprod.api.mithril.network/aggregator"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_GENESIS_VERIFICATION_KEY**")," identifier, but you need to replace it with the genesis verification key url that runs on the Cardano network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/mithril-infra/configuration/release-preprod/genesis.vkey"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADAPTER_TYPE**")," identifier, but you need to replace it with the era reader adapter type used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"cardano-chain"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_ADDRESS**")," identifier, but you need to replace it with the era reader address url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/address.addr"),")"),(0,r.kt)("li",{parentName:"ul"},"*",(0,r.kt)("strong",{parentName:"li"},"*YOUR_ERA_READER_VERIFICATION_KEY**")," identifier, but you need to replace it with the era reader verification key url used by the Mithril network you target (e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"https://raw.githubusercontent.com/input-output-hk/mithril/main/TEST_ONLY_era.vkey"),")"))))}h.isMDXComponent=!0},66182:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/files/signer-deployment-naive-b2092b7ecc1a39c7344fa0cb809c250c.jpg"},34310:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/files/signer-deployment-production-d33184629147bf7b0c79bb731673cd6c.jpg"},15588:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/signer-deployment-naive-b2092b7ecc1a39c7344fa0cb809c250c.jpg"},39009:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/signer-deployment-production-d33184629147bf7b0c79bb731673cd6c.jpg"}}]); \ No newline at end of file diff --git a/doc/assets/js/5679.e4889765.js b/doc/assets/js/5679.3e1ca37c.js similarity index 82% rename from doc/assets/js/5679.e4889765.js rename to doc/assets/js/5679.3e1ca37c.js index 1f88cb823c2..cfd65aca25d 100644 --- a/doc/assets/js/5679.e4889765.js +++ b/doc/assets/js/5679.3e1ca37c.js @@ -1,4 +1,4 @@ -/*! For license information please see 5679.e4889765.js.LICENSE.txt */ +/*! For license information please see 5679.3e1ca37c.js.LICENSE.txt */ (self.webpackChunkmithril_doc=self.webpackChunkmithril_doc||[]).push([[5679],{25679:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>b});var r=n(87462),i=n(67294),o=n(71155),s=n(86010);n(10412).default.canUseDOM&&(window.Prism=window.Prism||{},window.Prism.manual=!0);var a=n(72933),l=n(72389),c=n(28084),u=n(92949),p=n(82492),d=n.n(p);function f(e,t){void 0===e&&(e="theme-redoc");const n=(0,l.Z)(),r="dark"===(0,u.I)().colorMode,o=(0,c.OD)("docusaurus-theme-redoc",{failfast:!0}),s=(0,c.eZ)("docusaurus-theme-redoc",e)||Object.values(o)[0];return(0,i.useMemo)((()=>{const{lightTheme:e,darkTheme:i,options:o}=s,a={scrollYOffset:n||"string"!=typeof o.scrollYOffset?o.scrollYOffset:0},l=d()({...o,...a,theme:e},t),c=d()({...o,...a,theme:i},t);return{options:n&&r?c:l,darkThemeOptions:c,lightThemeOptions:l}}),[n,r,s,t])}var h=n(44996);let m=null;function g(e){return i.createElement("div",{className:"redocusaurus-styles"})}const y=function(e){const{className:t,optionsOverrides:n,...r}=e,{store:o,darkThemeOptions:c,lightThemeOptions:p,hasLogo:d}=function(e,t){let{spec:n,url:r,themeId:o}=e;const s=f(o,t),c=(0,h.Z)(r,{absolute:!0}),p=(0,l.Z)(),d="dark"===(0,u.I)().colorMode,g=(0,i.useMemo)((()=>(null!==m&&p&&m.dispose(),m=new a.AppStore(n,c,s.options),{...s,hasLogo:!!n.info?.["x-logo"],store:m})),[p,n,c,s]);return(0,i.useEffect)((()=>{g.store.onDidMount()}),[g,p,d]),g}(r,n);return i.createElement(i.Fragment,null,i.createElement(g,{specProps:r,lightThemeOptions:p,darkThemeOptions:c}),i.createElement("div",{className:(0,s.Z)(["redocusaurus",d&&"redocusaurus-has-logo",t])},i.createElement(a.Redoc,{store:o})))};const v=function(e){const{className:t,optionsOverrides:n,spec:o,url:l,themeId:c,isSpecFile:u}=e,{options:p}=f(c,n);return o?i.createElement(y,(0,r.Z)({},e,{spec:o})):i.createElement("div",{className:(0,s.Z)(["redocusaurus",t])},i.createElement(a.RedocStandalone,{specUrl:l,options:p}))};const b=function(e){let{layoutProps:t,specProps:n}=e;const s=n.spec?.info?.title||"API Docs",a=n.spec?.info?.description||"Open API Reference Docs for the API";return i.createElement(o.Z,(0,r.Z)({title:s,description:a},t),i.createElement(v,n))}},5623:e=>{"use strict";function t(e,t,i){e instanceof RegExp&&(e=n(e,i)),t instanceof RegExp&&(t=n(t,i));var o=r(e,t,i);return o&&{start:o[0],end:o[1],pre:i.slice(0,o[0]),body:i.slice(o[0]+e.length,o[1]),post:i.slice(o[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,i,o,s,a,l=n.indexOf(e),c=n.indexOf(t,l+1),u=l;if(l>=0&&c>0){if(e===t)return[l,c];for(r=[],o=n.length;u>=0&&!a;)u==l?(r.push(u),l=n.indexOf(e,u+1)):1==r.length?a=[r.pop(),c]:((i=r.pop())=0?l:c;r.length&&(a=[o,s])}return a}e.exports=t,t.range=r},40472:(e,t,n)=>{"use strict";var r=n(84663);e.exports=function(e,t){return e?void t.then((function(t){r((function(){e(null,t)}))}),(function(t){r((function(){e(t)}))})):t}},84663:e=>{"use strict";e.exports="object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:"function"==typeof setImmediate?setImmediate:function(e){setTimeout(e,0)}},94184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t2?n:e).apply(void 0,i)}}function l(e){return function(t){return"function"==typeof t?e(t):function(n,r,i){i.value=e(i.value,t,n,r,i)}}}e.memoize=i,e.debounce=o,e.bind=s,e.default={memoize:i,debounce:o,bind:s}},void 0===(i="function"==typeof n?n.apply(t,r):n)||(e.exports=i)},26729:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n="~";function r(){}function i(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,r,o,s){if("function"!=typeof r)throw new TypeError("The listener must be a function");var a=new i(r,o||e,s),l=n?n+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],a]:e._events[l].push(a):(e._events[l]=a,e._eventsCount++),e}function s(e,t){0==--e._eventsCount?e._events=new r:delete e._events[t]}function a(){this._events=new r,this._eventsCount=0}Object.create&&(r.prototype=Object.create(null),(new r).__proto__||(n=!1)),a.prototype.eventNames=function(){var e,r,i=[];if(0===this._eventsCount)return i;for(r in e=this._events)t.call(e,r)&&i.push(n?r.slice(1):r);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},a.prototype.listeners=function(e){var t=n?n+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var i=0,o=r.length,s=new Array(o);i{e.exports=s,s.default=s,s.stable=u,s.stableStringify=u;var t="[...]",n="[Circular]",r=[],i=[];function o(){return{depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function s(e,t,n,s){var a;void 0===s&&(s=o()),l(e,"",0,[],void 0,0,s);try{a=0===i.length?JSON.stringify(e,t,n):JSON.stringify(e,d(t),n)}catch(u){return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;0!==r.length;){var c=r.pop();4===c.length?Object.defineProperty(c[0],c[1],c[3]):c[0][c[1]]=c[2]}}return a}function a(e,t,n,o){var s=Object.getOwnPropertyDescriptor(o,n);void 0!==s.get?s.configurable?(Object.defineProperty(o,n,{value:e}),r.push([o,n,t,s])):i.push([t,n,e]):(o[n]=e,r.push([o,n,t]))}function l(e,r,i,o,s,c,u){var p;if(c+=1,"object"==typeof e&&null!==e){for(p=0;pu.depthLimit)return void a(t,e,r,s);if(void 0!==u.edgesLimit&&i+1>u.edgesLimit)return void a(t,e,r,s);if(o.push(e),Array.isArray(e))for(p=0;pt?1:0}function u(e,t,n,s){void 0===s&&(s=o());var a,l=p(e,"",0,[],void 0,0,s)||e;try{a=0===i.length?JSON.stringify(l,t,n):JSON.stringify(l,d(t),n)}catch(u){return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;0!==r.length;){var c=r.pop();4===c.length?Object.defineProperty(c[0],c[1],c[3]):c[0][c[1]]=c[2]}}return a}function p(e,i,o,s,l,u,d){var f;if(u+=1,"object"==typeof e&&null!==e){for(f=0;fd.depthLimit)return void a(t,e,i,l);if(void 0!==d.edgesLimit&&o+1>d.edgesLimit)return void a(t,e,i,l);if(s.push(e),Array.isArray(e))for(f=0;f0)for(var r=0;r{var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString;e.exports=function(e,r,i){if("[object Function]"!==n.call(r))throw new TypeError("iterator must be a function");var o=e.length;if(o===+o)for(var s=0;s{"use strict";var r=n(7990),i=n(13150);function o(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+t+" instead, which is now safe by default.")}}e.exports.Type=n(71364),e.exports.Schema=n(67657),e.exports.FAILSAFE_SCHEMA=n(44795),e.exports.JSON_SCHEMA=n(35966),e.exports.CORE_SCHEMA=n(9471),e.exports.DEFAULT_SCHEMA=n(86601),e.exports.load=r.load,e.exports.loadAll=r.loadAll,e.exports.dump=i.dump,e.exports.YAMLException=n(88425),e.exports.types={binary:n(43531),float:n(45215),map:n(40945),null:n(30151),pairs:n(6879),set:n(44982),timestamp:n(12156),bool:n(48771),int:n(61518),merge:n(67452),omap:n(51605),seq:n(76451),str:n(48)},e.exports.safeLoad=o("safeLoad","load"),e.exports.safeLoadAll=o("safeLoadAll","loadAll"),e.exports.safeDump=o("safeDump","dump")},8347:e=>{"use strict";function t(e){return null==e}e.exports.isNothing=t,e.exports.isObject=function(e){return"object"==typeof e&&null!==e},e.exports.toArray=function(e){return Array.isArray(e)?e:t(e)?[]:[e]},e.exports.repeat=function(e,t){var n,r="";for(n=0;n{"use strict";var r=n(8347),i=n(88425),o=n(86601),s=Object.prototype.toString,a=Object.prototype.hasOwnProperty,l=65279,c=9,u=10,p=13,d=32,f=33,h=34,m=35,g=37,y=38,v=39,b=42,x=44,w=45,k=58,O=61,E=62,S=63,_=64,A=91,R=93,T=96,C=123,I=124,P=125,j={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},N=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],L=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function $(e){var t,n,o;if(t=e.toString(16).toUpperCase(),e<=255)n="x",o=2;else if(e<=65535)n="u",o=4;else{if(!(e<=4294967295))throw new i("code point within a string may not be greater than 0xFFFFFFFF");n="U",o=8}return"\\"+n+r.repeat("0",o-t.length)+t}var M=1,D=2;function F(e){this.schema=e.schema||o,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=r.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=function(e,t){var n,r,i,o,s,l,c;if(null===t)return{};for(n={},i=0,o=(r=Object.keys(t)).length;i=55296&&r<=56319&&t+1=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function Q(e){return/^\n* /.test(e)}var Y=1,G=2,X=3,K=4,Z=5;function J(e,t,n,r,i,o,s,a){var c,p,d=0,j=null,N=!1,L=!1,$=-1!==r,M=-1,F=q(p=H(e,0))&&p!==l&&!U(p)&&p!==w&&p!==S&&p!==k&&p!==x&&p!==A&&p!==R&&p!==C&&p!==P&&p!==m&&p!==y&&p!==b&&p!==f&&p!==I&&p!==O&&p!==E&&p!==v&&p!==h&&p!==g&&p!==_&&p!==T&&function(e){return!U(e)&&e!==k}(H(e,e.length-1));if(t||s)for(c=0;c=65536?c+=2:c++){if(!q(d=H(e,c)))return Z;F=F&&V(d,j,a),j=d}else{for(c=0;c=65536?c+=2:c++){if((d=H(e,c))===u)N=!0,$&&(L=L||c-M-1>r&&" "!==e[M+1],M=c);else if(!q(d))return Z;F=F&&V(d,j,a),j=d}L=L||$&&c-M-1>r&&" "!==e[M+1]}return N||L?n>9&&Q(e)?Z:s?o===D?Z:G:L?K:X:!F||s||i(e)?o===D?Z:G:Y}function ee(e,t,n,r,o){e.dump=function(){if(0===t.length)return e.quotingType===D?'""':"''";if(!e.noCompatMode&&(-1!==N.indexOf(t)||L.test(t)))return e.quotingType===D?'"'+t+'"':"'"+t+"'";var s=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-s),l=r||e.flowLevel>-1&&n>=e.flowLevel;switch(J(t,l,e.indent,a,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+te(t,e.indent)+ne(z(function(e,t){var n,r,i=/(\n+)([^\n]*)/g,o=(a=e.indexOf("\n"),a=-1!==a?a:e.length,i.lastIndex=a,re(e.slice(0,a),t)),s="\n"===e[0]||" "===e[0];var a;for(;r=i.exec(e);){var l=r[1],c=r[2];n=" "===c[0],o+=l+(s||n||""===c?"":"\n")+re(c,t),s=n}return o}(t,a),s));case Z:return'"'+function(e){for(var t,n="",r=0,i=0;i=65536?i+=2:i++)r=H(e,i),!(t=j[r])&&q(r)?(n+=e[i],r>=65536&&(n+=e[i+1])):n+=t||$(r);return n}(t)+'"';default:throw new i("impossible error: invalid scalar style")}}()}function te(e,t){var n=Q(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function ne(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function re(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,s=0,a=0,l="";n=i.exec(e);)(a=n.index)-o>t&&(r=s>o?s:a,l+="\n"+e.slice(o,r),o=r+1),s=a;return l+="\n",e.length-o>t&&s>o?l+=e.slice(o,s)+"\n"+e.slice(s+1):l+=e.slice(o),l.slice(1)}function ie(e,t,n,r){var i,o,s,a="",l=e.tag;for(i=0,o=n.length;i tag resolver accepts not "'+p+'" style');r=u.represent[p](t,p)}e.dump=r}return!0}return!1}function se(e,t,n,r,o,a,l){e.tag=null,e.dump=n,oe(e,n,!1)||oe(e,n,!0);var c,p=s.call(e.dump),d=r;r&&(r=e.flowLevel<0||e.flowLevel>t);var f,h,m="[object Object]"===p||"[object Array]"===p;if(m&&(h=-1!==(f=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||h||2!==e.indent&&t>0)&&(o=!1),h&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(m&&h&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),"[object Object]"===p)r&&0!==Object.keys(e.dump).length?(!function(e,t,n,r){var o,s,a,l,c,p,d="",f=e.tag,h=Object.keys(n);if(!0===e.sortKeys)h.sort();else if("function"==typeof e.sortKeys)h.sort(e.sortKeys);else if(e.sortKeys)throw new i("sortKeys must be a boolean or a function");for(o=0,s=h.length;o1024)&&(e.dump&&u===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,c&&(p+=B(e,t)),se(e,t+1,l,!0,c)&&(e.dump&&u===e.dump.charCodeAt(0)?p+=":":p+=": ",d+=p+=e.dump));e.tag=f,e.dump=d||"{}"}(e,t,e.dump,o),h&&(e.dump="&ref_"+f+e.dump)):(!function(e,t,n){var r,i,o,s,a,l="",c=e.tag,u=Object.keys(n);for(r=0,i=u.length;r1024&&(a+="? "),a+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),se(e,t,s,!1,!1)&&(l+=a+=e.dump));e.tag=c,e.dump="{"+l+"}"}(e,t,e.dump),h&&(e.dump="&ref_"+f+" "+e.dump));else if("[object Array]"===p)r&&0!==e.dump.length?(e.noArrayIndent&&!l&&t>0?ie(e,t-1,e.dump,o):ie(e,t,e.dump,o),h&&(e.dump="&ref_"+f+e.dump)):(!function(e,t,n){var r,i,o,s="",a=e.tag;for(r=0,i=n.length;r",e.dump=c+" "+e.dump)}return!0}function ae(e,t){var n,r,i=[],o=[];for(le(e,i,o),n=0,r=o.length;n{"use strict";function t(e,t){var n="",r=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(n+='in "'+e.mark.name+'" '),n+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(n+="\n\n"+e.mark.snippet),r+" "+n):r}function n(e,n){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=n,this.message=t(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n.prototype.toString=function(e){return this.name+": "+t(this,e)},e.exports=n},7990:(e,t,n)=>{"use strict";var r=n(8347),i=n(88425),o=n(10192),s=n(86601),a=Object.prototype.hasOwnProperty,l=1,c=2,u=3,p=4,d=1,f=2,h=3,m=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/[\x85\u2028\u2029]/,y=/[,\[\]\{\}]/,v=/^(?:!|!!|![a-z\-]+!)$/i,b=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function x(e){return Object.prototype.toString.call(e)}function w(e){return 10===e||13===e}function k(e){return 9===e||32===e}function O(e){return 9===e||32===e||10===e||13===e}function E(e){return 44===e||91===e||93===e||123===e||125===e}function S(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function _(e){return 48===e?"\0":97===e?"\x07":98===e?"\b":116===e||9===e?"\t":110===e?"\n":118===e?"\v":102===e?"\f":114===e?"\r":101===e?"\x1b":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"\x85":95===e?"\xa0":76===e?"\u2028":80===e?"\u2029":""}function A(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var R=new Array(256),T=new Array(256),C=0;C<256;C++)R[C]=_(C)?1:0,T[C]=_(C);function I(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||s,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function P(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=o(n),new i(t,n)}function j(e,t){throw P(e,t)}function N(e,t){e.onWarning&&e.onWarning.call(null,P(e,t))}var L={YAML:function(e,t,n){var r,i,o;null!==e.version&&j(e,"duplication of %YAML directive"),1!==n.length&&j(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&j(e,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),o=parseInt(r[2],10),1!==i&&j(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&N(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,i;2!==n.length&&j(e,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],v.test(r)||j(e,"ill-formed tag handle (first argument) of the TAG directive"),a.call(e.tagMap,r)&&j(e,'there is a previously declared suffix for "'+r+'" tag handle'),b.test(i)||j(e,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(o){j(e,"tag prefix is malformed: "+i)}e.tagMap[r]=i}};function $(e,t,n,r){var i,o,s,a;if(t1&&(e.result+=r.repeat("\n",t-1))}function q(e,t){var n,r,i=e.tag,o=e.anchor,s=[],a=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=s),r=e.input.charCodeAt(e.position);0!==r&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,j(e,"tab characters must not be used in indentation")),45===r)&&O(e.input.charCodeAt(e.position+1));)if(a=!0,e.position++,z(e,!0,-1)&&e.lineIndent<=t)s.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,H(e,t,u,!1,!0),s.push(e.result),z(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)j(e,"bad indentation of a sequence entry");else if(e.lineIndentt?I=1:e.lineIndent===t?I=0:e.lineIndentt?I=1:e.lineIndent===t?I=0:e.lineIndentt)&&(b&&(s=e.line,a=e.lineStart,l=e.position),H(e,t,p,!0,i)&&(b?y=e.result:v=e.result),b||(D(e,h,m,g,y,v,s,a,l),g=y=v=null),z(e,!0,-1),u=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>t)&&0!==u)j(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===o?j(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?j(e,"repeat of an indentation width identifier"):(p=t+o-1,u=!0)}if(k(s)){do{s=e.input.charCodeAt(++e.position)}while(k(s));if(35===s)do{s=e.input.charCodeAt(++e.position)}while(!w(s)&&0!==s)}for(;0!==s;){for(F(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!u||e.lineIndentp&&(p=e.lineIndent),w(s))m++;else{if(e.lineIndent0){for(i=s,o=0;i>0;i--)(s=S(a=e.input.charCodeAt(++e.position)))>=0?o=(o<<4)+s:j(e,"expected hexadecimal character");e.result+=A(o),e.position++}else j(e,"unknown escape sequence");n=r=e.position}else w(a)?($(e,n,r,!0),U(e,z(e,!1,t)),n=r=e.position):e.position===e.lineStart&&B(e)?j(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}j(e,"unexpected end of the stream within a double quoted scalar")}(e,_)?N=!0:!function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!O(r)&&!E(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&j(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),a.call(e.anchorMap,n)||j(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],z(e,!0,-1),!0}(e)?function(e,t,n){var r,i,o,s,a,l,c,u,p=e.kind,d=e.result;if(O(u=e.input.charCodeAt(e.position))||E(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(O(r=e.input.charCodeAt(e.position+1))||n&&E(r)))return!1;for(e.kind="scalar",e.result="",i=o=e.position,s=!1;0!==u;){if(58===u){if(O(r=e.input.charCodeAt(e.position+1))||n&&E(r))break}else if(35===u){if(O(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&B(e)||n&&E(u))break;if(w(u)){if(a=e.line,l=e.lineStart,c=e.lineIndent,z(e,!1,-1),e.lineIndent>=t){s=!0,u=e.input.charCodeAt(e.position);continue}e.position=o,e.line=a,e.lineStart=l,e.lineIndent=c;break}}s&&($(e,i,o,!1),U(e,e.line-a),i=o=e.position,s=!1),k(u)||(o=e.position+1),u=e.input.charCodeAt(++e.position)}return $(e,i,o,!1),!!e.result||(e.kind=p,e.result=d,!1)}(e,_,l===n)&&(N=!0,null===e.tag&&(e.tag="?")):(N=!0,null===e.tag&&null===e.anchor||j(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===I&&(N=g&&q(e,C))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&j(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),y=0,v=e.implicitTypes.length;y"),null!==e.result&&x.kind!==e.kind&&j(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+x.kind+'", not "'+e.kind+'"'),x.resolve(e.result,e.tag)?(e.result=x.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):j(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||N}function Q(e){var t,n,r,i,o=e.position,s=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(i=e.input.charCodeAt(e.position))&&(z(e,!0,-1),i=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==i));){for(s=!0,i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!O(i);)i=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&j(e,"directive name must not be less than one character in length");0!==i;){for(;k(i);)i=e.input.charCodeAt(++e.position);if(35===i){do{i=e.input.charCodeAt(++e.position)}while(0!==i&&!w(i));break}if(w(i))break;for(t=e.position;0!==i&&!O(i);)i=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==i&&F(e),a.call(L,n)?L[n](e,n,r):N(e,'unknown document directive "'+n+'"')}z(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,z(e,!0,-1)):s&&j(e,"directives end mark is expected"),H(e,e.lineIndent-1,p,!1,!0),z(e,!0,-1),e.checkLineBreaks&&g.test(e.input.slice(o,e.position))&&N(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&B(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,z(e,!0,-1)):e.position{"use strict";var r=n(88425),i=n(71364);function o(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,r){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=r)})),n[t]=e})),n}function s(e){return this.extend(e)}s.prototype.extend=function(e){var t=[],n=[];if(e instanceof i)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new r("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof i))throw new r("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new r("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new r("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof i))throw new r("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var a=Object.create(s.prototype);return a.implicit=(this.implicit||[]).concat(t),a.explicit=(this.explicit||[]).concat(n),a.compiledImplicit=o(a,"implicit"),a.compiledExplicit=o(a,"explicit"),a.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e{"use strict";e.exports=n(35966)},86601:(e,t,n)=>{"use strict";e.exports=n(9471).extend({implicit:[n(12156),n(67452)],explicit:[n(43531),n(51605),n(6879),n(44982)]})},44795:(e,t,n)=>{"use strict";var r=n(67657);e.exports=new r({explicit:[n(48),n(76451),n(40945)]})},35966:(e,t,n)=>{"use strict";e.exports=n(44795).extend({implicit:[n(30151),n(48771),n(61518),n(45215)]})},10192:(e,t,n)=>{"use strict";var r=n(8347);function i(e,t,n,r,i){var o="",s="",a=Math.floor(i/2)-1;return r-t>a&&(t=r-a+(o=" ... ").length),n-r>a&&(n=r+a-(s=" ...").length),{str:o+e.slice(t,n).replace(/\t/g,"\u2192")+s,pos:r-t+o.length}}function o(e,t){return r.repeat(" ",t-e.length)+e}e.exports=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,s=/\r?\n|\r|\0/g,a=[0],l=[],c=-1;n=s.exec(e.buffer);)l.push(n.index),a.push(n.index+n[0].length),e.position<=n.index&&c<0&&(c=a.length-2);c<0&&(c=a.length-1);var u,p,d="",f=Math.min(e.line+t.linesAfter,l.length).toString().length,h=t.maxLength-(t.indent+f+3);for(u=1;u<=t.linesBefore&&!(c-u<0);u++)p=i(e.buffer,a[c-u],l[c-u],e.position-(a[c]-a[c-u]),h),d=r.repeat(" ",t.indent)+o((e.line-u+1).toString(),f)+" | "+p.str+"\n"+d;for(p=i(e.buffer,a[c],l[c],e.position,h),d+=r.repeat(" ",t.indent)+o((e.line+1).toString(),f)+" | "+p.str+"\n",d+=r.repeat("-",t.indent+f+3+p.pos)+"^\n",u=1;u<=t.linesAfter&&!(c+u>=l.length);u++)p=i(e.buffer,a[c+u],l[c+u],e.position-(a[c]-a[c+u]),h),d+=r.repeat(" ",t.indent)+o((e.line+u+1).toString(),f)+" | "+p.str+"\n";return d.replace(/\n$/,"")}},71364:(e,t,n)=>{"use strict";var r=n(88425),i=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],o=["scalar","sequence","mapping"];e.exports=function(e,t){var n,s;if(t=t||{},Object.keys(t).forEach((function(t){if(-1===i.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=(n=t.styleAliases||null,s={},null!==n&&Object.keys(n).forEach((function(e){n[e].forEach((function(t){s[String(t)]=e}))})),s),-1===o.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},43531:(e,t,n)=>{"use strict";var r=n(71364),i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new r("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=0,o=e.length,s=i;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,r=e.replace(/[\r\n=]/g,""),o=r.length,s=i,a=0,l=[];for(t=0;t>16&255),l.push(a>>8&255),l.push(255&a)),a=a<<6|s.indexOf(r.charAt(t));return 0===(n=o%4*6)?(l.push(a>>16&255),l.push(a>>8&255),l.push(255&a)):18===n?(l.push(a>>10&255),l.push(a>>2&255)):12===n&&l.push(a>>4&255),new Uint8Array(l)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,r="",o=0,s=e.length,a=i;for(t=0;t>18&63],r+=a[o>>12&63],r+=a[o>>6&63],r+=a[63&o]),o=(o<<8)+e[t];return 0===(n=s%3)?(r+=a[o>>18&63],r+=a[o>>12&63],r+=a[o>>6&63],r+=a[63&o]):2===n?(r+=a[o>>10&63],r+=a[o>>4&63],r+=a[o<<2&63],r+=a[64]):1===n&&(r+=a[o>>2&63],r+=a[o<<4&63],r+=a[64],r+=a[64]),r}})},48771:(e,t,n)=>{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},45215:(e,t,n)=>{"use strict";var r=n(8347),i=n(71364),o=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var s=/^[-+]?[0-9]+e/;e.exports=new i("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!o.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||r.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r.isNegativeZero(e))return"-0.0";return n=e.toString(10),s.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},61518:(e,t,n)=>{"use strict";var r=n(8347),i=n(71364);function o(e){return 48<=e&&e<=55}function s(e){return 48<=e&&e<=57}e.exports=new i("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=e.length,i=0,a=!1;if(!r)return!1;if("-"!==(t=e[i])&&"+"!==t||(t=e[++i]),"0"===t){if(i+1===r)return!0;if("b"===(t=e[++i])){for(i++;i=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},40945:(e,t,n)=>{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},67452:(e,t,n)=>{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})},30151:(e,t,n)=>{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)},construct:function(){return null},predicate:function(e){return null===e},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})},51605:(e,t,n)=>{"use strict";var r=n(71364),i=Object.prototype.hasOwnProperty,o=Object.prototype.toString;e.exports=new r("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,s,a,l=[],c=e;for(t=0,n=c.length;t{"use strict";var r=n(71364),i=Object.prototype.toString;e.exports=new r("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,o,s,a=e;for(s=new Array(a.length),t=0,n=a.length;t{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},44982:(e,t,n)=>{"use strict";var r=n(71364),i=Object.prototype.hasOwnProperty;e.exports=new r("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(e){if(null===e)return!0;var t,n=e;for(t in n)if(i.call(n,t)&&null!==n[t])return!1;return!0},construct:function(e){return null!==e?e:{}}})},48:(e,t,n)=>{"use strict";var r=n(71364);e.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},12156:(e,t,n)=>{"use strict";var r=n(71364),i=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),o=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");e.exports=new r("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==i.exec(e)||null!==o.exec(e))},construct:function(e){var t,n,r,s,a,l,c,u,p=0,d=null;if(null===(t=i.exec(e))&&(t=o.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,s=+t[3],!t[4])return new Date(Date.UTC(n,r,s));if(a=+t[4],l=+t[5],c=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(d=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(d=-d)),u=new Date(Date.UTC(n,r,s,a,l,c,p)),d&&u.setTime(u.getTime()-d),u},instanceOf:Date,represent:function(e){return e.toISOString()}})},83573:(e,t,n)=>{"use strict";var r=n(49804);function i(e,t,n){if(3===arguments.length)return i.set(e,t,n);if(2===arguments.length)return i.get(e,t);var r=i.bind(i,e);for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o].bind(r,e));return r}e.exports=i,i.get=function(e,t){for(var n=Array.isArray(t)?t:i.parse(t),r=0;r{e=n.nmd(e);var r="__lodash_hash_undefined__",i=1,o=2,s=9007199254740991,a="[object Arguments]",l="[object Array]",c="[object AsyncFunction]",u="[object Boolean]",p="[object Date]",d="[object Error]",f="[object Function]",h="[object GeneratorFunction]",m="[object Map]",g="[object Number]",y="[object Null]",v="[object Object]",b="[object Promise]",x="[object Proxy]",w="[object RegExp]",k="[object Set]",O="[object String]",E="[object Symbol]",S="[object Undefined]",_="[object WeakMap]",A="[object ArrayBuffer]",R="[object DataView]",T=/^\[object .+?Constructor\]$/,C=/^(?:0|[1-9]\d*)$/,I={};I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I[a]=I[l]=I[A]=I[u]=I[R]=I[p]=I[d]=I[f]=I[m]=I[g]=I[v]=I[w]=I[k]=I[O]=I[_]=!1;var P="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,j="object"==typeof self&&self&&self.Object===Object&&self,N=P||j||Function("return this")(),L=t&&!t.nodeType&&t,$=L&&e&&!e.nodeType&&e,M=$&&$.exports===L,D=M&&P.process,F=function(){try{return D&&D.binding&&D.binding("util")}catch(e){}}(),z=F&&F.isTypedArray;function B(e,t){for(var n=-1,r=null==e?0:e.length;++nc))return!1;var p=a.get(e);if(p&&a.get(t))return p==t;var d=-1,f=!0,h=n&o?new Re:void 0;for(a.set(e,t),a.set(t,e);++d-1},_e.prototype.set=function(e,t){var n=this.__data__,r=Ie(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Ae.prototype.clear=function(){this.size=0,this.__data__={hash:new Se,map:new(fe||_e),string:new Se}},Ae.prototype.delete=function(e){var t=Fe(this,e).delete(e);return this.size-=t?1:0,t},Ae.prototype.get=function(e){return Fe(this,e).get(e)},Ae.prototype.has=function(e){return Fe(this,e).has(e)},Ae.prototype.set=function(e,t){var n=Fe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Re.prototype.add=Re.prototype.push=function(e){return this.__data__.set(e,r),this},Re.prototype.has=function(e){return this.__data__.has(e)},Te.prototype.clear=function(){this.__data__=new _e,this.size=0},Te.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Te.prototype.get=function(e){return this.__data__.get(e)},Te.prototype.has=function(e){return this.__data__.has(e)},Te.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _e){var r=n.__data__;if(!fe||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ae(r)}return n.set(e,t),this.size=n.size,this};var Be=ce?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=s}function Ke(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ze(e){return null!=e&&"object"==typeof e}var Je=z?function(e){return function(t){return e(t)}}(z):function(e){return Ze(e)&&Xe(e.length)&&!!I[Pe(e)]};function et(e){return null!=(t=e)&&Xe(t.length)&&!Ge(t)?Ce(e):$e(e);var t}e.exports=function(e,t){return Ne(e,t)}},1989:(e,t,n)=>{var r=n(51789),i=n(80401),o=n(57667),s=n(59026),a=n(81866);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(27040),i=n(14125),o=n(82117),s=n(67518),a=n(54705);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),i=n(11285),o=n(96e3),s=n(49916),a=n(95265);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(38407),i=n(37465),o=n(63779),s=n(67599),a=n(44758),l=n(34309);function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype.delete=o,c.prototype.get=s,c.prototype.has=a,c.prototype.set=l,e.exports=c},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},14636:(e,t,n)=>{var r=n(22545),i=n(35694),o=n(1469),s=n(44144),a=n(65776),l=n(36719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&i(e),p=!n&&!u&&s(e),d=!n&&!u&&!p&&l(e),f=n||u||p||d,h=f?r(e.length,String):[],m=h.length;for(var g in e)!t&&!c.call(e,g)||f&&("length"==g||p&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||a(g,m))||h.push(g);return h}},86556:(e,t,n)=>{var r=n(89465),i=n(77813);e.exports=function(e,t,n){(void 0!==n&&!i(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},34865:(e,t,n)=>{var r=n(89465),i=n(77813),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var s=e[t];o.call(e,t)&&i(s,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},3118:(e,t,n)=>{var r=n(13218),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},44239:(e,t,n)=>{var r=n(62705),i=n(89607),o=n(2333),s=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?i(e):o(e)}},9454:(e,t,n)=>{var r=n(44239),i=n(37005);e.exports=function(e){return i(e)&&"[object Arguments]"==r(e)}},28458:(e,t,n)=>{var r=n(23560),i=n(15346),o=n(13218),s=n(80346),a=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,p=c.hasOwnProperty,d=RegExp("^"+u.call(p).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||i(e))&&(r(e)?d:a).test(s(e))}},38749:(e,t,n)=>{var r=n(44239),i=n(41780),o=n(37005),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!s[r(e)]}},10313:(e,t,n)=>{var r=n(13218),i=n(25726),o=n(33498),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=i(e),n=[];for(var a in e)("constructor"!=a||!t&&s.call(e,a))&&n.push(a);return n}},42980:(e,t,n)=>{var r=n(46384),i=n(86556),o=n(28483),s=n(59783),a=n(13218),l=n(81704),c=n(36390);e.exports=function e(t,n,u,p,d){t!==n&&o(n,(function(o,l){if(d||(d=new r),a(o))s(t,n,l,u,e,p,d);else{var f=p?p(c(t,l),o,l+"",t,n,d):void 0;void 0===f&&(f=o),i(t,l,f)}}),l)}},59783:(e,t,n)=>{var r=n(86556),i=n(64626),o=n(77133),s=n(278),a=n(38517),l=n(35694),c=n(1469),u=n(29246),p=n(44144),d=n(23560),f=n(13218),h=n(68630),m=n(36719),g=n(36390),y=n(59881);e.exports=function(e,t,n,v,b,x,w){var k=g(e,n),O=g(t,n),E=w.get(O);if(E)r(e,n,E);else{var S=x?x(k,O,n+"",e,t,w):void 0,_=void 0===S;if(_){var A=c(O),R=!A&&p(O),T=!A&&!R&&m(O);S=O,A||R||T?c(k)?S=k:u(k)?S=s(k):R?(_=!1,S=i(O,!0)):T?(_=!1,S=o(O,!0)):S=[]:h(O)||l(O)?(S=k,l(k)?S=y(k):f(k)&&!d(k)||(S=a(O))):_=!1}_&&(w.set(O,S),b(S,O,v,x,w),w.delete(O)),r(e,n,S)}}},5976:(e,t,n)=>{var r=n(6557),i=n(45357),o=n(30061);e.exports=function(e,t){return o(i(e,t,r),e+"")}},56560:(e,t,n)=>{var r=n(75703),i=n(38777),o=n(6557),s=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=s},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n{e.exports=function(e){return function(t){return e(t)}}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i?r.Buffer:void 0,a=s?s.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=a?a(n):new e.constructor(n);return e.copy(r),r}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n{var r=n(34865),i=n(89465);e.exports=function(e,t,n,o){var s=!n;n||(n={});for(var a=-1,l=t.length;++a{var r=n(55639)["__core-js_shared__"];e.exports=r},21463:(e,t,n)=>{var r=n(5976),i=n(16612);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,s=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(o--,s):void 0,a&&i(n[0],n[1],a)&&(s=o<3?void 0:s,o=1),t=Object(t);++r{e.exports=function(e){return function(t,n,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var l=s[e?a:++i];if(!1===n(o[l],l,o))break}return t}}},38777:(e,t,n)=>{var r=n(10852),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=i},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},10852:(e,t,n)=>{var r=n(28458),i=n(47801);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(l){}var i=s.call(e);return r&&(t?e[a]=n:delete e[a]),i}},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},59026:(e,t,n)=>{var r=n(94536),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},38517:(e,t,n)=>{var r=n(3118),i=n(85924),o=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:r(i(e))}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(77813),i=n(98612),o=n(65776),s=n(13218);e.exports=function(e,t,n){if(!s(n))return!1;var a=typeof t;return!!("number"==a?i(n)&&o(t,n.length):"string"==a&&t in n)&&r(n[t],e)}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,i=n(14429),o=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),i=n(38407),o=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),i=t&&!t.nodeType&&t,o=i&&e&&!e.nodeType&&e,s=o&&o.exports===i&&r.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(t){}}();e.exports=a},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var o=arguments,s=-1,a=i(o.length-t,0),l=Array(a);++s{var r=n(31957),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},36390:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},30061:(e,t,n)=>{var r=n(56560),i=n(21275)(r);e.exports=i},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var i=t(),o=16-(i-r);if(r=i,o>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),i=n(57071),o=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!i||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},75703:e=>{e.exports=function(e){return function(){return e}}},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,n)=>{var r=n(9454),i=n(37005),o=Object.prototype,s=o.hasOwnProperty,a=o.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return i(e)&&s.call(e,"callee")&&!a.call(e,"callee")};e.exports=l},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),i=n(41780);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},29246:(e,t,n)=>{var r=n(98612),i=n(37005);e.exports=function(e){return i(e)&&r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),i=n(95062),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,a=s&&s.exports===o?r.Buffer:void 0,l=(a?a.isBuffer:void 0)||i;e.exports=l},23560:(e,t,n)=>{var r=n(44239),i=n(13218);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),i=n(85924),o=n(37005),s=Function.prototype,a=Object.prototype,l=s.toString,c=a.hasOwnProperty,u=l.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=r(e))return!1;var t=i(e);if(null===t)return!0;var n=c.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==u}},36719:(e,t,n)=>{var r=n(38749),i=n(7518),o=n(31167),s=o&&o.isTypedArray,a=s?i(s):r;e.exports=a},81704:(e,t,n)=>{var r=n(14636),i=n(10313),o=n(98612);e.exports=function(e){return o(e)?r(e,!0):i(e)}},82492:(e,t,n)=>{var r=n(42980),i=n(21463)((function(e,t,n){r(e,t,n)}));e.exports=i},95062:e=>{e.exports=function(){return!1}},59881:(e,t,n)=>{var r=n(98363),i=n(81704);e.exports=function(e){return r(e,i(e))}},31336:(e,t,n)=>{var r,i;!function(){var o,s,a,l,c,u,p,d,f,h,m,g,y,v,b,x,w,k,O,E,S,_,A,R,T,C,I,P,j,N,L=function(e){var t=new L.Builder;return t.pipeline.add(L.trimmer,L.stopWordFilter,L.stemmer),t.searchPipeline.add(L.stemmer),e.call(t,t),t.build()};L.version="2.3.9",L.utils={},L.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),L.utils.asString=function(e){return null==e?"":e.toString()},L.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var l=L.utils.clone(t)||{};l.position=[s,a],l.index=i.length,i.push(new L.Token(n.slice(s,o),l))}s=o+1}}return i},L.tokenizer.separator=/[\s\-]+/,L.Pipeline=function(){this._stack=[]},L.Pipeline.registeredFunctions=Object.create(null),L.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&L.utils.warn("Overwriting existing registered function: "+t),e.label=t,L.Pipeline.registeredFunctions[e.label]=e},L.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||L.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},L.Pipeline.load=function(e){var t=new L.Pipeline;return e.forEach((function(e){var n=L.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},L.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){L.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},L.Pipeline.prototype.after=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},L.Pipeline.prototype.before=function(e,t){L.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},L.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},L.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=i),o!=e);)r=n-t,i=t+Math.floor(r/2),o=this.elements[2*i];return o==e||o>e?2*i:oa?c+=2:s==a&&(t+=n[l+1]*r[c+1],l+=2,c+=2);return t},L.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},L.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,s=i.str.charAt(0);s in i.node.edges?o=i.node.edges[s]:(o=new L.TokenSet,i.node.edges[s]=o),1==i.str.length&&(o.final=!0),r.push({node:o,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var a=i.node.edges["*"];else{a=new L.TokenSet;i.node.edges["*"]=a}if(0==i.str.length&&(a.final=!0),r.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&r.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if("*"in i.node.edges)var l=i.node.edges["*"];else{l=new L.TokenSet;i.node.edges["*"]=l}1==i.str.length&&(l.final=!0),r.push({node:l,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var c,u=i.str.charAt(0),p=i.str.charAt(1);p in i.node.edges?c=i.node.edges[p]:(c=new L.TokenSet,i.node.edges[p]=c),1==i.str.length&&(c.final=!0),r.push({node:c,editsRemaining:i.editsRemaining-1,str:u+i.str.slice(2)})}}}return n},L.TokenSet.fromString=function(e){for(var t=new L.TokenSet,n=t,r=0,i=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},L.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},L.Index.prototype.search=function(e){return this.query((function(t){new L.QueryParser(e,t).parse()}))},L.Index.prototype.query=function(e){for(var t=new L.Query(this.fields),n=Object.create(null),r=Object.create(null),i=Object.create(null),o=Object.create(null),s=Object.create(null),a=0;a1?1:e},L.Builder.prototype.k1=function(e){this._k1=e},L.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var i=0;i=this.length)return L.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},L.QueryLexer.prototype.width=function(){return this.pos-this.start},L.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},L.QueryLexer.prototype.backup=function(){this.pos-=1},L.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=L.QueryLexer.EOS&&this.backup()},L.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(L.QueryLexer.TERM)),e.ignore(),e.more())return L.QueryLexer.lexText},L.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.EDIT_DISTANCE),L.QueryLexer.lexText},L.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(L.QueryLexer.BOOST),L.QueryLexer.lexText},L.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(L.QueryLexer.TERM)},L.QueryLexer.termSeparator=L.tokenizer.separator,L.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==L.QueryLexer.EOS)return L.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return L.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(L.QueryLexer.TERM),L.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(L.QueryLexer.PRESENCE),L.QueryLexer.lexText;if(t.match(L.QueryLexer.termSeparator))return L.QueryLexer.lexTerm}else e.escapeCharacter()}},L.QueryParser=function(e,t){this.lexer=new L.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},L.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=L.QueryParser.parseClause;e;)e=e(this);return this.query},L.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},L.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},L.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},L.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case L.QueryLexer.PRESENCE:return L.QueryParser.parsePresence;case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new L.QueryParseError(n,t.start,t.end)}},L.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=L.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=L.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new L.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new L.QueryParseError(n,t.start,t.end)}switch(r.type){case L.QueryLexer.FIELD:return L.QueryParser.parseField;case L.QueryLexer.TERM:return L.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new L.QueryParseError(n,r.start,r.end)}}},L.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new L.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i){r="expecting term, found nothing";throw new L.QueryParseError(r,t.start,t.end)}if(i.type===L.QueryLexer.TERM)return L.QueryParser.parseTerm;r="expecting term, found '"+i.type+"'";throw new L.QueryParseError(r,i.start,i.end)}},L.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new L.QueryParseError(r,n.start,n.end)}else e.nextClause()}},L.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new L.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new L.QueryParseError(r,i.start,i.end)}else e.nextClause()}},L.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new L.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case L.QueryLexer.TERM:return e.nextClause(),L.QueryParser.parseTerm;case L.QueryLexer.FIELD:return e.nextClause(),L.QueryParser.parseField;case L.QueryLexer.EDIT_DISTANCE:return L.QueryParser.parseEditDistance;case L.QueryLexer.BOOST:return L.QueryParser.parseBoost;case L.QueryLexer.PRESENCE:return e.nextClause(),L.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new L.QueryParseError(r,i.start,i.end)}else e.nextClause()}},void 0===(i="function"==typeof(r=function(){return L})?r.call(t,n,t,e):r)||(e.exports=i)}()},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,o=null,s=function s(){if(!i){i=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",s),r.getIframeContents(e,t,n))}catch(a){n()}}};e.addEventListener("load",s),o=setTimeout(s,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},s=t.querySelectorAll("iframe"),a=s.length,l=0;s=Array.prototype.slice.call(s);var c=function(){--a<=0&&o(l)};a||c(),s.forEach((function(t){e.matches(t,i.exclude)?c():i.onIframeReady(t,(function(e){n(t)&&(l++,r(e)),c()}),c)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(i=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==i||o?!1===i||o||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach((function(e){e.handled||i.getIframeContents(e.val,(function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var o=this,s=this.createIterator(t,e,r),a=[],l=[],c=void 0,u=void 0,p=function(){var e=o.getIteratorNode(s);return u=e.prevNode,c=e.node};p();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(c,u,e,a)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return l.push(e)}),r)})),l.push(c);l.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(a,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),s=o.length;s||i(),o.forEach((function(o){var a=function(){r.iterateThroughNodes(e,o,t,n,(function(){--s<=0&&i()}))};r.iframes?r.waitForIframes(o,a):a()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every((function(t){return!r.call(e,t)||(i=!0,!1)})),i}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==s&&""!==a&&(e=e.replace(new RegExp("("+this.escapeStr(s)+"|"+this.escapeStr(a)+")","gm"+n),r+"("+this.processSynomyms(s)+"|"+this.processSynomyms(a)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(i){n.every((function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,i="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,s="";switch(o.forEach((function(e){s+="|"+t.escapeStr(e)})),i){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(s="\\s"+(s||this.escapeStr(n)))+"]*"+e+"[^"+s+"]*)";case"exactly":return"(^|\\s"+s+")("+e+")(?=$|\\s"+s+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var i=t.callNoMatchOnInvalidRanges(e,r),o=i.start,s=i.end;i.valid&&(e.start=o,e.length=s-o,n.push(e),r=s)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,o=n.length,s=t-o,a=parseInt(e.start,10)-s;return(r=(a=a>o?o:a)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),a<0||r-a<0||a>o||r>o?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(a,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:a,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),o=i.splitText(n-t),s=document.createElement(r);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=i.textContent,i.parentNode.replaceChild(s,i),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var o=this;e.nodes.every((function(s,a){var l=e.nodes[a+1];if(void 0===l||l.start>t){if(!r(s.node))return!1;var c=t-s.start,u=(n>s.end?s.end:n)-s.start,p=e.value.substr(0,s.start),d=e.value.substr(u+s.start);if(s.node=o.wrapRangeInTextNode(s.node,c,u),e.value=p+d,e.nodes.forEach((function(t,n){n>=a&&(e.nodes[n].start>0&&n!==a&&(e.nodes[n].start-=u),e.nodes[n].end-=u)})),n-=u,i(s.node.previousSibling,s.start),!(n>s.end))return!1;t=s.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,i){var o=this,s=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[s];)if(n(i[s],t)){var a=i.index;if(0!==s)for(var l=1;l{"use strict";n.r(t),n.d(t,{MobXProviderContext:()=>ie,Observer:()=>E,PropTypes:()=>ge,Provider:()=>oe,disposeOnUnmount:()=>pe,enableStaticRendering:()=>d,inject:()=>ae,isUsingStaticRendering:()=>f,observer:()=>te,observerBatching:()=>a,useAsObservableSource:()=>R,useLocalObservable:()=>S,useLocalStore:()=>T,useObserver:()=>C,useStaticRendering:()=>I});var r=n(68949),i=n(67294);if(!i.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!r.makeObservable)throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");var o=n(73935);function s(e){e()}function a(e){e||(e=s),(0,r.configure)({reactionScheduler:e})}function l(e){return(0,r.getDependencyTree)(e)}var c=function(){function e(e){var t=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var n=Date.now();t.registrations.forEach((function(r,i){n-r.registeredAt>=e&&(t.finalize(r.value),t.registrations.delete(i))})),t.registrations.size>0&&t.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){this.registrations.set(n,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.registrations.delete(e)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}}),e}(),u=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:c)((function(e){var t;null===(t=e.reaction)||void 0===t||t.dispose(),e.reaction=null})),p=!1;function d(e){p=e}function f(){return p}var h=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s};function m(e){return"observer".concat(e)}var g=function(){};function y(){return new g}function v(e,t){if(void 0===t&&(t="observed"),f())return e();var n=h(i.useState(y),1)[0],o=h(i.useState(),2)[1],s=function(){return o([])},a=i.useRef(null);a.current||(a.current={reaction:null,mounted:!1,changedBeforeMount:!1});var c,p,d=a.current;if(d.reaction||(d.reaction=new r.Reaction(m(t),(function(){d.mounted?s():d.changedBeforeMount=!0})),u.register(n,d,d)),i.useDebugValue(d.reaction,l),i.useEffect((function(){return u.unregister(d),d.mounted=!0,d.reaction?d.changedBeforeMount&&(d.changedBeforeMount=!1,s()):(d.reaction=new r.Reaction(m(t),(function(){s()})),s()),function(){d.reaction.dispose(),d.reaction=null,d.mounted=!1,d.changedBeforeMount=!1}}),[]),d.reaction.track((function(){try{c=e()}catch(t){p=t}})),p)throw p;return c}var b="function"==typeof Symbol&&Symbol.for,x=b?Symbol.for("react.forward_ref"):"function"==typeof i.forwardRef&&(0,i.forwardRef)((function(e){return null})).$$typeof,w=b?Symbol.for("react.memo"):"function"==typeof i.memo&&(0,i.memo)((function(e){return null})).$$typeof;function k(e,t){var n;if(w&&e.$$typeof===w)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");if(f())return e;var r=null!==(n=null==t?void 0:t.forwardRef)&&void 0!==n&&n,o=e,s=e.displayName||e.name;if(x&&e.$$typeof===x&&(r=!0,"function"!=typeof(o=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var a,l,c=function(e,t){return v((function(){return o(e,t)}),s)};return""!==s&&(c.displayName=s),e.contextTypes&&(c.contextTypes=e.contextTypes),r&&(c=(0,i.forwardRef)(c)),c=(0,i.memo)(c),a=e,l=c,Object.keys(a).forEach((function(e){O[e]||Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(a,e))})),c}var O={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};function E(e){var t=e.children,n=e.render,r=t||n;return"function"!=typeof r?null:v(r)}function S(e,t){return(0,i.useState)((function(){return(0,r.observable)(e(),t,{autoBind:!0})}))[0]}E.displayName="Observer";var _,A=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(a){i={error:a}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s};function R(e){var t=A((0,i.useState)((function(){return(0,r.observable)(e,{},{deep:!1})})),1)[0];return(0,r.runInAction)((function(){Object.assign(t,e)})),t}function T(e,t){var n=t&&R(t);return(0,i.useState)((function(){return(0,r.observable)(e(n),void 0,{autoBind:!0})}))[0]}a(o.unstable_batchedUpdates);_=u.finalizeAllImmediately;function C(e,t){return void 0===t&&(t="observed"),v(e,t)}function I(e){d(e)}var P=0;var j={};function N(e){return j[e]||(j[e]=function(e){if("function"==typeof Symbol)return Symbol(e);var t="__$mobx-react "+e+" ("+P+")";return P++,t}(e)),j[e]}function L(e,t){if($(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var i=0;i2?r-2:0),o=2;o {}` or `render = function() {}` is not supported.")}return t.render=function(){return this.render=f()?r:Z.call(this,r),this.render()},q(t,"componentDidMount",(function(){this[Q]=!1,this.render[V]||i.Component.prototype.forceUpdate.call(this)})),q(t,"componentWillUnmount",(function(){if(!f()){var e=this.render[V];if(e)e.dispose(),this.render[V]=null;else{var t=K(this);console.warn("The reactive render of an observer class component ("+t+")\n was overridden after MobX attached. This may result in a memory leak if the\n overridden reactive render was not properly disposed.")}this[Q]=!0}})),e}function K(e){return e.displayName||e.name||e.constructor&&(e.constructor.displayName||e.constructor.name)||""}function Z(e){var t=this;D(this,Y,!1),D(this,G,!1);var n=K(this),o=e.bind(this),s=!1;return function e(){var a;s=!1;var l=null!=(a=e[V])?a:e[V]=function(){var e=new r.Reaction(n+".render()",(function(){if(!s&&(s=!0,!0!==t[Q])){var n=!0;try{D(t,G,!0),t[Y]||i.Component.prototype.forceUpdate.call(t),n=!1}finally{D(t,G,!1),n&&(e.dispose(),t.render[V]=null)}}}));return e.reactComponent=t,e}(),c=void 0,u=void 0;if(l.track((function(){try{u=(0,r._allowStateChanges)(!1,o)}catch(e){c=e}})),c)throw c;return u}}function J(e,t){return f()&&console.warn("[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side."),this.state!==t||!L(this.props,e)}function ee(e,t){var n=N("reactProp_"+t+"_valueHolder"),i=N("reactProp_"+t+"_atomHolder");function o(){return this[i]||D(this,i,(0,r.createAtom)("reactive "+t)),this[i]}Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){var e=!1;return r._allowStateReadsStart&&r._allowStateReadsEnd&&(e=(0,r._allowStateReadsStart)(!0)),o.call(this).reportObserved(),r._allowStateReadsStart&&r._allowStateReadsEnd&&(0,r._allowStateReadsEnd)(e),this[n]},set:function(e){this[G]||L(this[n],e)?D(this,n,e):(D(this,n,e),D(this,Y,!0),o.call(this).reportChanged(),D(this,Y,!1))}})}function te(e){return!0===e.isMobxInjector&&console.warn("Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`"),Object.prototype.isPrototypeOf.call(i.Component,e)||Object.prototype.isPrototypeOf.call(i.PureComponent,e)?X(e):k(e)}function ne(){return ne=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,re),r=i.useContext(ie),o=i.useRef(ne({},r,n)).current;return i.createElement(ie.Provider,{value:o},t)}function se(e,t,n,r){var o,s,a,l=i.forwardRef((function(n,r){var o=ne({},n),s=i.useContext(ie);return Object.assign(o,e(s||{},o)||{}),r&&(o.ref=r),i.createElement(t,o)}));return r&&(l=te(l)),l.isMobxInjector=!0,o=t,s=l,a=Object.getOwnPropertyNames(Object.getPrototypeOf(o)),Object.getOwnPropertyNames(o).forEach((function(e){M[e]||-1!==a.indexOf(e)||Object.defineProperty(s,e,Object.getOwnPropertyDescriptor(o,e))})),l.wrappedComponent=t,l.displayName=function(e,t){var n,r=e.displayName||e.name||e.constructor&&e.constructor.name||"Component";n=t?"inject-with-"+t+"("+r+")":"inject("+r+")";return n}(t,n),l}function ae(){for(var e=arguments.length,t=new Array(e),n=0;n6?l-6:0),u=6;u>",a=a||i,null==n[i]){if(t){var r=null===n[i]?"null":"undefined";return new Error("The "+s+" `"+a+"` is marked as required in `"+o+"`, but its value is `"+r+"`.")}return null}return e.apply(void 0,[n,i,o,s,a].concat(c))}))}var n=t.bind(null,!1);return n.isRequired=t.bind(null,!0),n}function fe(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||"Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol}(t,e)?"symbol":t}function he(e,t){return de((function(n,i,o,s,a){return(0,r.untracked)((function(){if(e&&fe(n[i])===t.toLowerCase())return null;var s;switch(t){case"Array":s=r.isObservableArray;break;case"Object":s=r.isObservableObject;break;case"Map":s=r.isObservableMap;break;default:throw new Error("Unexpected mobxType: "+t)}var l=n[i];if(!s(l)){var c=function(e){var t=fe(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}(l),u=e?" or javascript `"+t.toLowerCase()+"`":"";return new Error("Invalid prop `"+a+"` of type `"+c+"` supplied to `"+o+"`, expected `mobx.Observable"+t+"`"+u+".")}return null}))}))}function me(e,t){return de((function(n,i,o,s,a){for(var l=arguments.length,c=new Array(l>5?l-5:0),u=5;u{"use strict";n.r(t),n.d(t,{$mobx:()=>W,FlowCancellationError:()=>dn,ObservableMap:()=>wr,ObservableSet:()=>Er,Reaction:()=>_t,_allowStateChanges:()=>qe,_allowStateChangesInsideComputed:()=>Wt,_allowStateReadsEnd:()=>ut,_allowStateReadsStart:()=>ct,_autoAction:()=>qt,_endAction:()=>Ue,_getAdministration:()=>Hr,_getGlobalState:()=>yt,_interceptReads:()=>xn,_isComputingDerivation:()=>nt,_resetGlobalState:()=>vt,_startAction:()=>Be,action:()=>Ut,autorun:()=>Ht,comparer:()=>Y,computed:()=>je,configure:()=>on,createAtom:()=>Q,defineProperty:()=>Ln,entries:()=>Cn,extendObservable:()=>sn,flow:()=>gn,flowResult:()=>vn,get:()=>Nn,getAtom:()=>Vr,getDebugName:()=>Qr,getDependencyTree:()=>an,getObserverTree:()=>cn,has:()=>jn,intercept:()=>wn,isAction:()=>Vt,isBoxedObservable:()=>Ye,isComputed:()=>On,isComputedProp:()=>En,isFlow:()=>bn,isFlowCancellationError:()=>fn,isObservable:()=>_n,isObservableArray:()=>mr,isObservableMap:()=>kr,isObservableObject:()=>Pr,isObservableProp:()=>An,isObservableSet:()=>Sr,keys:()=>Rn,makeAutoObservable:()=>tr,makeObservable:()=>Jn,observable:()=>Te,observe:()=>Mn,onBecomeObserved:()=>Zt,onBecomeUnobserved:()=>Jt,onReactionError:()=>At,override:()=>Z,ownKeys:()=>$n,reaction:()=>Gt,remove:()=>Pn,runInAction:()=>Wt,set:()=>In,spy:()=>jt,toJS:()=>zn,trace:()=>Bn,transaction:()=>Un,untracked:()=>st,values:()=>Tn,when:()=>qn});function r(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function z(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}var B=Symbol("mobx-stored-annotations");function U(e){return Object.assign((function(t,n){q(t,n,e)}),e)}function q(e,t,n){C(e,B)||k(e,B,N({},e[B])),function(e){return e.annotationType_===K}(n)||(e[B][t]=n)}var W=Symbol("mobx administration"),V=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=Ge.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return Et(this)},t.reportChanged=function(){kt(),St(this),gt.stateVersion=gt.stateVersionr&&(r=a.dependenciesState_)}n.length=i,e.newObserving_=null,o=t.length;for(;o--;){var l=t[o];0===l.diffValue_&&xt(l,e),l.diffValue_=0}for(;i--;){var c=n[i];1===c.diffValue_&&(c.diffValue_=0,bt(c,e))}r!==Ge.UP_TO_DATE_&&(e.dependenciesState_=r,e.onBecomeStale_())}(e),ut(r),i}function ot(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)xt(t[n],e);e.dependenciesState_=Ge.NOT_TRACKING_}function st(e){var t=at();try{return e()}finally{lt(t)}}function at(){var e=gt.trackingDerivation;return gt.trackingDerivation=null,e}function lt(e){gt.trackingDerivation=e}function ct(e){var t=gt.allowStateReads;return gt.allowStateReads=e,t}function ut(e){gt.allowStateReads=e}function pt(e){if(e.dependenciesState_!==Ge.UP_TO_DATE_){e.dependenciesState_=Ge.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=Ge.UP_TO_DATE_}}var dt=["mobxGuid","spyListeners","enforceActions","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","allowStateReads","disableErrorBoundaries","runId","UNCHANGED","useProxies"],ft=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0,this.stateVersion=Number.MIN_SAFE_INTEGER},ht=!0,mt=!1,gt=function(){var e=o();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(ht=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new ft).version&&(ht=!1),ht?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new ft):(setTimeout((function(){mt||r(35)}),1),new ft)}();function yt(){return gt}function vt(){var e=new ft;for(var t in e)-1===dt.indexOf(t)&&(gt[t]=e[t]);gt.allowStateChanges=!gt.enforceActions}function bt(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function xt(e,t){e.observers_.delete(t),0===e.observers_.size&&wt(e)}function wt(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,gt.pendingUnobservations.push(e))}function kt(){gt.inBatch++}function Ot(){if(0==--gt.inBatch){Ct();for(var e=gt.pendingUnobservations,t=0;t0&&wt(e),!1)}function St(e){e.lowestObserverState_!==Ge.STALE_&&(e.lowestObserverState_=Ge.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===Ge.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=Ge.STALE_})))}var _t=function(){function e(e,t,n,r){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=Ge.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=Xe.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=r}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,gt.pendingReactions.push(this),Ct())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){kt(),this.isScheduled_=!1;var e=gt.trackingContext;if(gt.trackingContext=this,tt(this)){this.isTrackPending_=!0;try{this.onInvalidate_()}catch(t){this.reportExceptionInDerivation_(t)}}gt.trackingContext=e,Ot()}},t.track=function(e){if(!this.isDisposed_){kt();0,this.isRunning_=!0;var t=gt.trackingContext;gt.trackingContext=this;var n=it(this,e,void 0);gt.trackingContext=t,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&ot(this),et(n)&&this.reportExceptionInDerivation_(n.cause),Ot()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(gt.disableErrorBoundaries)throw e;var n="[mobx] uncaught error in '"+this+"'";gt.suppressReactionErrors||console.error(n,e),gt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(kt(),ot(this),Ot()))},t.getDisposer_=function(){var e=this.dispose.bind(this);return e[W]=this,e},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1),Bn(this,e)},e}();function At(e){return gt.globalReactionErrorHandlers.push(e),function(){var t=gt.globalReactionErrorHandlers.indexOf(e);t>=0&>.globalReactionErrorHandlers.splice(t,1)}}var Rt=100,Tt=function(e){return e()};function Ct(){gt.inBatch>0||gt.isRunningReactions||Tt(It)}function It(){gt.isRunningReactions=!0;for(var e=gt.pendingReactions,t=0;e.length>0;){++t===Rt&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),r=0,i=n.length;r0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(ln)),n}function cn(e,t){return un(Vr(e,t))}function un(e){var t={name:e.name_};return function(e){return e.observers_&&e.observers_.size>0}(e)&&(t.observers=Array.from(function(e){return e.observers_}(e)).map(un)),t}var pn=0;function dn(){this.message="FLOW_CANCELLED"}function fn(e){return e instanceof dn}dn.prototype=Object.create(Error.prototype);var hn=re("flow"),mn=re("flow.bound",{bound:!0}),gn=Object.assign((function(e,t){if(v(t))return q(e,t,hn);var n=e,r=n.name||"",i=function(){var e,t=arguments,i=++pn,o=Ut(r+" - runid: "+i+" - init",n).apply(this,t),s=void 0,a=new Promise((function(t,n){var a=0;function l(e){var t;s=void 0;try{t=Ut(r+" - runid: "+i+" - yield "+a++,o.next).call(o,e)}catch(l){return n(l)}u(t)}function c(e){var t;s=void 0;try{t=Ut(r+" - runid: "+i+" - yield "+a++,o.throw).call(o,e)}catch(l){return n(l)}u(t)}function u(e){if(!y(null==e?void 0:e.then))return e.done?t(e.value):(s=Promise.resolve(e.value)).then(l,c);e.then(u,n)}e=n,l(void 0)}));return a.cancel=Ut(r+" - runid: "+i+" - cancel",(function(){try{s&&yn(s);var t=o.return(void 0),n=Promise.resolve(t.value);n.then(g,g),yn(n),e(new dn)}catch(r){e(r)}})),a};return i.isMobXFlow=!0,i}),hn);function yn(e){y(e.cancel)&&e.cancel()}function vn(e){return e}function bn(e){return!0===(null==e?void 0:e.isMobXFlow)}function xn(e,t,n){var r;return kr(e)||mr(e)||Ye(e)?r=Hr(e):Pr(e)&&(r=Hr(e,t)),r.dehancer="function"==typeof t?t:n,function(){r.dehancer=void 0}}function wn(e,t,n){return y(n)?function(e,t,n){return Hr(e,t).intercept_(n)}(e,t,n):function(e,t){return Hr(e).intercept_(t)}(e,t)}function kn(e,t){if(void 0===t)return Ze(e);if(!1===Pr(e))return!1;if(!e[W].values_.has(t))return!1;var n=Vr(e,t);return Ze(n)}function On(e){return kn(e)}function En(e,t){return kn(e,t)}function Sn(e,t){return!!e&&(void 0!==t?!!Pr(e)&&e[W].values_.has(t):Pr(e)||!!e[W]||H(e)||Pt(e)||Ze(e))}function _n(e){return Sn(e)}function An(e,t){return Sn(e,t)}function Rn(e){return Pr(e)?e[W].keys_():kr(e)||Sr(e)?Array.from(e.keys()):mr(e)?e.map((function(e,t){return t})):void r(5)}function Tn(e){return Pr(e)?Rn(e).map((function(t){return e[t]})):kr(e)?Rn(e).map((function(t){return e.get(t)})):Sr(e)?Array.from(e.values()):mr(e)?e.slice():void r(6)}function Cn(e){return Pr(e)?Rn(e).map((function(t){return[t,e[t]]})):kr(e)?Rn(e).map((function(t){return[t,e.get(t)]})):Sr(e)?Array.from(e.entries()):mr(e)?e.map((function(e,t){return[t,e]})):void r(7)}function In(e,t,n){if(2!==arguments.length||Sr(e))Pr(e)?e[W].set_(t,n):kr(e)?e.set(t,n):Sr(e)?e.add(t):mr(e)?("number"!=typeof t&&(t=parseInt(t,10)),t<0&&r("Invalid index: '"+t+"'"),kt(),t>=e.length&&(e.length=t+1),e[t]=n,Ot()):r(8);else{kt();var i=t;try{for(var o in i)In(e,o,i[o])}finally{Ot()}}}function Pn(e,t){Pr(e)?e[W].delete_(t):kr(e)||Sr(e)?e.delete(t):mr(e)?("number"!=typeof t&&(t=parseInt(t,10)),e.splice(t,1)):r(9)}function jn(e,t){return Pr(e)?e[W].has_(t):kr(e)||Sr(e)?e.has(t):mr(e)?t>=0&&t0}function Yn(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),m((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Gn(e,t){var n=at();try{for(var i=[].concat(e.interceptors_||[]),o=0,s=i.length;o0}function Kn(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),m((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Zn(e,t){var n=at(),r=e.changeListeners_;if(r){for(var i=0,o=(r=r.slice()).length;i0?e.map(this.dehancer):e},t.intercept_=function(e){return Yn(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),Kn(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&r("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var n=new Array(e-t),i=0;i0&&qr(e+t+1)},t.spliceWithArray_=function(e,t,n){var r=this;this.atom_;var i=this.values_.length;if(void 0===e?e=0:e>i?e=i:e<0&&(e=Math.max(0,i+e)),t=1===arguments.length?i-e:null==t?0:Math.max(0,Math.min(t,i-e)),void 0===n&&(n=u),Qn(this)){var o=Gn(this,{object:this.proxy_,type:nr,index:e,removedCount:t,added:n});if(!o)return u;t=o.removedCount,n=o.added}if(n=0===n.length?n:n.map((function(e){return r.enhancer_(e,void 0)})),this.legacyMode_){var s=n.length-t;this.updateArrayLength_(i,s)}var a=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,a),this.dehanceValues_(a)},t.spliceItemsIntoValues_=function(e,t,n){var r;if(n.length<1e4)return(r=this.values_).splice.apply(r,[e,t].concat(n));var i=this.values_.slice(e,e+t),o=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var s=0;s=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var n=this.values_;if(this.legacyMode_&&e>n.length&&r(17,e,n.length),e2?n-2:0),i=2;i-1&&(this.splice(n,1),!0)}};function lr(e,t){"function"==typeof Array.prototype[e]&&(ar[e]=t(e))}function cr(e){return function(){var t=this[W];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function ur(e){return function(t,n){var r=this,i=this[W];return i.atom_.reportObserved(),i.dehanceValues_(i.values_)[e]((function(e,i){return t.call(n,e,i,r)}))}}function pr(e){return function(){var t=this,n=this[W];n.atom_.reportObserved();var r=n.dehanceValues_(n.values_),i=arguments[0];return arguments[0]=function(e,n,r){return i(e,n,r,t)},r[e].apply(r,arguments)}}lr("concat",cr),lr("flat",cr),lr("includes",cr),lr("indexOf",cr),lr("join",cr),lr("lastIndexOf",cr),lr("slice",cr),lr("toString",cr),lr("toLocaleString",cr),lr("every",ur),lr("filter",ur),lr("find",ur),lr("findIndex",ur),lr("flatMap",ur),lr("forEach",ur),lr("map",ur),lr("some",ur),lr("reduce",pr),lr("reduceRight",pr);var dr,fr,hr=E("ObservableArrayAdministration",or);function mr(e){return b(e)&&hr(e[W])}var gr={},yr="add",vr="delete";dr=Symbol.iterator,fr=Symbol.toStringTag;var br,xr,wr=function(){function e(e,t,n){var i=this;void 0===t&&(t=G),void 0===n&&(n="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[W]=gr,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,y(Map)||r(18),this.keysAtom_=Q("ObservableMap.keys()"),this.data_=new Map,this.hasMap_=new Map,qe(!0,(function(){i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!gt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var r=n=new Qe(this.has_(e),X,"ObservableMap.key?",!1);this.hasMap_.set(e,r),Jt(r,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Qn(this)){var r=Gn(this,{type:n?rr:yr,object:this,newValue:t,name:e});if(!r)return this;t=r.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if((this.keysAtom_,Qn(this))&&!Gn(this,{type:vr,object:this,name:e}))return!1;if(this.has_(e)){var n=Xn(this),r=n?{observableKind:"map",debugObjectName:this.name_,type:vr,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return Un((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),n&&Zn(this,r),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==gt.UNCHANGED){var r=Xn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:rr,object:this,oldValue:n.value_,name:e,newValue:t}:null;0,n.setNewValue_(t),r&&Zn(this,i)}},t.addValue_=function(e,t){var n=this;this.keysAtom_,Un((function(){var r,i=new Qe(t,n.enhancer_,"ObservableMap.key",!1);n.data_.set(e,i),t=i.value_,null==(r=n.hasMap_.get(e))||r.setNewValue_(!0),n.keysAtom_.reportChanged()}));var r=Xn(this),i=r?{observableKind:"map",debugObjectName:this.name_,type:yr,object:this,name:e,newValue:t}:null;r&&Zn(this,i)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Zr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:e.get(i)}}})},t.entries=function(){var e=this,t=this.keys();return Zr({next:function(){var n=t.next(),r=n.done,i=n.value;return{done:r,value:r?void 0:[i,e.get(i)]}}})},t[dr]=function(){return this.entries()},t.forEach=function(e,t){for(var n,r=F(this);!(n=r()).done;){var i=n.value,o=i[0],s=i[1];e.call(t,s,o,this)}},t.merge=function(e){var t=this;return kr(e)&&(e=new Map(e)),Un((function(){x(e)?function(e){var t=Object.keys(e);if(!A)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return c.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],r=e[1];return t.set(n,r)})):S(e)?(e.constructor!==Map&&r(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&r(20,e)})),this},t.clear=function(){var e=this;Un((function(){st((function(){for(var t,n=F(e.keys());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.replace=function(e){var t=this;return Un((function(){for(var n,i=function(e){if(S(e)||kr(e))return e;if(Array.isArray(e))return new Map(e);if(x(e)){var t=new Map;for(var n in e)t.set(n,e[n]);return t}return r(21,e)}(e),o=new Map,s=!1,a=F(t.data_.keys());!(n=a()).done;){var l=n.value;if(!i.has(l))if(t.delete(l))s=!0;else{var c=t.data_.get(l);o.set(l,c)}}for(var u,p=F(i.entries());!(u=p()).done;){var d=u.value,f=d[0],h=d[1],m=t.data_.has(f);if(t.set(f,h),t.data_.has(f)){var g=t.data_.get(f);o.set(f,g),m||(s=!0)}}if(!s)if(t.data_.size!==o.size)t.keysAtom_.reportChanged();else for(var y=t.data_.keys(),v=o.keys(),b=y.next(),w=v.next();!b.done;){if(b.value!==w.value){t.keysAtom_.reportChanged();break}b=y.next(),w=v.next()}t.data_=o})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return Kn(this,e)},t.intercept_=function(e){return Yn(this,e)},j(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:fr,get:function(){return"Map"}}]),e}(),kr=E("ObservableMap",wr);var Or={};br=Symbol.iterator,xr=Symbol.toStringTag;var Er=function(){function e(e,t,n){void 0===t&&(t=G),void 0===n&&(n="ObservableSet"),this.name_=void 0,this[W]=Or,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,y(Set)||r(22),this.atom_=Q(this.name_),this.enhancer_=function(e,r){return t(e,r,n)},e&&this.replace(e)}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;Un((function(){st((function(){for(var t,n=F(e.data_.values());!(t=n()).done;){var r=t.value;e.delete(r)}}))}))},t.forEach=function(e,t){for(var n,r=F(this);!(n=r()).done;){var i=n.value;e.call(t,i,i,this)}},t.add=function(e){var t=this;if((this.atom_,Qn(this))&&!Gn(this,{type:yr,object:this,newValue:e}))return this;if(!this.has(e)){Un((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=!1,r=Xn(this),i=r?{observableKind:"set",debugObjectName:this.name_,type:yr,object:this,newValue:e}:null;n,r&&Zn(this,i)}return this},t.delete=function(e){var t=this;if(Qn(this)&&!Gn(this,{type:vr,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Xn(this),r=n?{observableKind:"set",debugObjectName:this.name_,type:vr,object:this,oldValue:e}:null;return Un((function(){t.atom_.reportChanged(),t.data_.delete(e)})),n&&Zn(this,r),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Zr({next:function(){var r=e;return e+=1,rDr){for(var t=Dr;t=0&&n++}e=Kr(e),t=Kr(t);var a="[object Array]"===s;if(!a){if("object"!=typeof e||"object"!=typeof t)return!1;var l=e.constructor,c=t.constructor;if(l!==c&&!(y(l)&&l instanceof l&&y(c)&&c instanceof c)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),i=i||[];for(var u=(r=r||[]).length;u--;)if(r[u]===e)return i[u]===t;if(r.push(e),i.push(t),a){if((u=e.length)!==t.length)return!1;for(;u--;)if(!Xr(e[u],t[u],n-1,r,i))return!1}else{var p,d=Object.keys(e);if(u=d.length,Object.keys(t).length!==u)return!1;for(;u--;)if(!C(t,p=d[u])||!Xr(e[p],t[p],n-1,r,i))return!1}return r.pop(),i.pop(),!0}function Kr(e){return mr(e)?e.slice():S(e)||kr(e)||_(e)||Sr(e)?Array.from(e.entries()):e}function Zr(e){return e[Symbol.iterator]=Jr,e}function Jr(){return this}["Symbol","Map","Set"].forEach((function(e){void 0===o()[e]&&r("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:jt,extras:{getDebugName:Qr},$mobx:W})},5900:(e,t,n)=>{"use strict";function r(e){return e<10?"0"+e:e}function i(e,t){return t>e.length?e.repeat(Math.trunc(t/e.length)+1).substring(0,t):e}function o(...e){const t=e=>e&&"object"==typeof e;return e.reduce(((e,n)=>(Object.keys(n||{}).forEach((r=>{const i=e[r],s=n[r];t(i)&&t(s)?e[r]=o(i,s):e[r]=s})),e)),Array.isArray(e[e.length-1])?[]:{})}function s(e){return{value:"object"===e?{}:"array"===e?[]:void 0}}function a(e,t){t&&e.pop()}n.r(t),n.d(t,{_registerSampler:()=>E,_samplers:()=>w,inferType:()=>c,sample:()=>O});const l={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",additionalItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",properties:"object",patternProperties:"object",dependencies:"object"};function c(e){if(void 0!==e.type)return Array.isArray(e.type)?0===e.type.length?null:e.type[0]:e.type;const t=Object.keys(l);for(var n=0;nt.maxSampleDepth)return a(f,r),s(c(e));if(e.$ref){if(!n)throw new Error("Your schema contains $ref. You must provide full specification in the third parameter.");let i=decodeURIComponent(e.$ref);i.startsWith("#")&&(i=i.substring(1));const o=p().get(n,i);let l;if(!0!==d[i])d[i]=!0,l=g(o,t,n,r),d[i]=!1;else{l=s(c(o))}return a(f,r),l}if(void 0!==e.example)return a(f,r),{value:e.example,readOnly:e.readOnly,writeOnly:e.writeOnly,type:e.type};if(void 0!==e.allOf)return a(f,r),m(e)||function(e,t,n,r,i){let s=g(e,n,r);const a=[];for(let o of t){const{type:e,readOnly:t,writeOnly:l,value:c}=g({type:s.type,...o},n,r,i);s.type&&e&&e!==s.type&&(console.warn("allOf: schemas with different types can't be merged"),s.type=e),s.type=s.type||e,s.readOnly=s.readOnly||t,s.writeOnly=s.writeOnly||l,null!=c&&a.push(c)}if("object"===s.type)return s.value=o(s.value||{},...a.filter((e=>"object"==typeof e))),s;{"array"===s.type&&(n.quiet||console.warn('OpenAPI Sampler: found allOf with "array" type. Result may be incorrect'));const e=a[a.length-1];return s.value=null!=e?e:s.value,s}}({...e,allOf:void 0},e.allOf,t,n,r);if(e.oneOf&&e.oneOf.length){e.anyOf&&(t.quiet||console.warn("oneOf and anyOf are not supported on the same level. Skipping anyOf")),a(f,r);return u(e,Object.assign({readOnly:e.readOnly,writeOnly:e.writeOnly},e.oneOf[0]))}if(e.anyOf&&e.anyOf.length){a(f,r);return u(e,Object.assign({readOnly:e.readOnly,writeOnly:e.writeOnly},e.anyOf[0]))}if(e.if&&e.then){a(f,r);const{if:i,then:s,...l}=e;return g(o(l,i,s),t,n,r)}let i=h(e),l=null;if(void 0===i){i=null,l=e.type,Array.isArray(l)&&e.type.length>0&&(l=e.type[0]),l||(l=c(e));let o=w[l];o&&(i=o(e,t,n,r))}return a(f,r),{value:i,readOnly:e.readOnly,writeOnly:e.writeOnly,type:l};function u(e,i){const s=m(e);if(void 0!==s)return s;const a=g({...e,oneOf:void 0,anyOf:void 0},t,n,r),l=g(i,t,n,r);if("object"==typeof a.value&&"object"==typeof l.value){const e=o(a.value,l.value);return{...l,value:e}}return l}}function y(e){let t=0;if("boolean"==typeof e.exclusiveMinimum||"boolean"==typeof e.exclusiveMaximum){if(e.maximum&&e.minimum)return t=e.exclusiveMinimum?Math.floor(e.minimum)+1:e.minimum,(e.exclusiveMaximum&&t>=e.maximum||!e.exclusiveMaximum&&t>e.maximum)&&(t=(e.maximum+e.minimum)/2),t;if(e.minimum)return e.exclusiveMinimum?Math.floor(e.minimum)+1:e.minimum;if(e.maximum)return e.exclusiveMaximum?e.maximum>0?0:Math.floor(e.maximum)-1:e.maximum>0?0:e.maximum}else{if(e.minimum)return e.minimum;e.exclusiveMinimum?(t=Math.floor(e.exclusiveMinimum)+1,t===e.exclusiveMaximum&&(t=(t+Math.floor(e.exclusiveMaximum)-1)/2)):e.exclusiveMaximum?t=Math.floor(e.exclusiveMaximum)-1:e.maximum&&(t=e.maximum)}return t}function v({min:e,max:t,omitTime:n,omitDate:i}){let o=function(e,t,n,i){var o=n?"":e.getUTCFullYear()+"-"+r(e.getUTCMonth()+1)+"-"+r(e.getUTCDate());return t||(o+="T"+r(e.getUTCHours())+":"+r(e.getUTCMinutes())+":"+r(e.getUTCSeconds())+(i?"."+(e.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5):"")+"Z"),o}(new Date("2019-08-24T14:15:22.123Z"),n,i,!1);return o.lengtht&&console.warn(`Using maxLength = ${t} is incorrect with format "date-time"`),o}function b(e,t){let n=i("string",e);return t&&n.length>t&&(n=n.substring(0,t)),n}const x={email:function(){return"user@example.com"},"idn-email":function(){return"\u043f\u043e\u0448\u0442\u0430@\u0443\u043a\u0440.\u043d\u0435\u0442"},password:function(e,t){let n="pa$$word";return e>n.length&&(n+="_",n+=i("qwerty!@#$%^123456",e-n.length).substring(0,e-n.length)),n},"date-time":function(e,t){return v({min:e,max:t,omitTime:!1,omitDate:!1})},date:function(e,t){return v({min:e,max:t,omitTime:!0,omitDate:!1})},time:function(e,t){return v({min:e,max:t,omitTime:!1,omitDate:!0}).slice(1)},ipv4:function(){return"192.168.0.1"},ipv6:function(){return"2001:0db8:85a3:0000:0000:8a2e:0370:7334"},hostname:function(){return"example.com"},"idn-hostname":function(){return"\u043f\u0440\u0438\u043a\u043b\u0430\u0434.\u0443\u043a\u0440"},iri:function(){return"http://example.com/entity/1"},"iri-reference":function(){return"/entity/1"},uri:function(){return"http://example.com"},"uri-reference":function(){return"../dictionary"},"uri-template":function(){return"http://example.com/{endpoint}"},uuid:function(e,t,n){return function(e){var t,n,r,i,o=function(e){var t=0;if(0==e.length)return t;for(var n=0;n>>5)|0;return t=n^((r|=0)<<17|r>>>15),n=r+(i|=0)|0,r=i+e|0,((i=t+e|0)>>>0)/4294967296}),a="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{var t=16*s()%16|0;return("x"==e?t:3&t|8).toString(16)}));return a}(n||"id")},default:b,"json-pointer":function(){return"/json/pointer"},"relative-json-pointer":function(){return"1/relative/json/pointer"},regex:function(){return"/regex/"}};var w={};const k={skipReadOnly:!1,maxSampleDepth:15};function O(e,t,n){let r=Object.assign({},k,t);return d={},f=[],g(e,r,n).value}function E(e,t){w[e]=t}E("array",(function(e,t={},n,r){const i=r&&r.depth||1;let o=Math.min(null!=e.maxItems?e.maxItems:1/0,e.minItems||1);const s=e.prefixItems||e.items||e.contains;Array.isArray(s)&&(o=Math.max(o,s.length));let a=[];if(!s)return a;for(let c=0;c(e[t]=!0,e)),{});Object.keys(e.properties).forEach((s=>{if(t.skipNonRequired&&!r.hasOwnProperty(s))return;const a=g(e.properties[s],t,n,{propertyName:s,depth:o+1});t.skipReadOnly&&a.readOnly||t.skipWriteOnly&&a.writeOnly||(i[s]=a.value)}))}if(e&&"object"==typeof e.additionalProperties){const r=e.additionalProperties["x-additionalPropertiesName"]||"property";i[`${String(r)}1`]=g(e.additionalProperties,t,n,{depth:o+1}).value,i[`${String(r)}2`]=g(e.additionalProperties,t,n,{depth:o+1}).value}return i})),E("string",(function(e,t,n,r){let i=e.format||"default",o=x[i]||b,s=r&&r.propertyName;return o(0|e.minLength,e.maxLength,s)}))},26470:e=>{"use strict";function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,o=-1,s=0,a=0;a<=e.length;++a){if(a2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),o=a,s=0;continue}}else if(2===r.length||1===r.length){r="",i=0,o=a,s=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(o+1,a):r=e.slice(o+1,a),i=a-o-1;o=a,s=0}else 46===n&&-1!==s?++s:s=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(void 0===e&&(e=process.cwd()),s=e),t(s),0!==s.length&&(r=s+"/"+r,i=47===s.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;ic){if(47===n.charCodeAt(a+p))return n.slice(a+p+1);if(0===p)return n.slice(a+p)}else s>c&&(47===e.charCodeAt(i+p)?u=p:0===p&&(u=0));break}var d=e.charCodeAt(i+p);if(d!==n.charCodeAt(a+p))break;47===d&&(u=p)}var f="";for(p=i+u+1;p<=o;++p)p!==o&&47!==e.charCodeAt(p)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(a+u):(a+=u,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,o=!0,s=e.length-1;s>=1;--s)if(47===(n=e.charCodeAt(s))){if(!o){i=s;break}}else o=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,o=-1,s=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var a=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!s){i=r+1;break}}else-1===l&&(s=!1,l=r+1),a>=0&&(c===n.charCodeAt(a)?-1==--a&&(o=r):(a=-1,o=l))}return i===o?o=l:-1===o&&(o=e.length),e.slice(i,o)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!s){i=r+1;break}}else-1===o&&(s=!1,o=r+1);return-1===o?"":e.slice(i,o)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,o=!0,s=0,a=e.length-1;a>=0;--a){var l=e.charCodeAt(a);if(47!==l)-1===i&&(o=!1,i=a+1),46===l?-1===n?n=a:1!==s&&(s=1):-1!==n&&(s=-1);else if(!o){r=a+1;break}}return-1===n||-1===i||0===s||1===s&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+e+r:r}("/",e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),o=47===i;o?(n.root="/",r=1):r=0;for(var s=-1,a=0,l=-1,c=!0,u=e.length-1,p=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===s?s=u:1!==p&&(p=1):-1!==s&&(p=-1);else if(!c){a=u+1;break}return-1===s||-1===l||0===p||1===p&&s===l-1&&s===a+1?-1!==l&&(n.base=n.name=0===a&&o?e.slice(1,l):e.slice(a,l)):(0===a&&o?(n.name=e.slice(1,s),n.base=e.slice(1,l)):(n.name=e.slice(a,s),n.base=e.slice(a,l)),n.ext=e.slice(s,l)),a>0?n.dir=e.slice(0,a-1):o&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},84772:(e,t,n)=>{"use strict";function r(e){return getComputedStyle(e)}function i(e,t){for(var n in t){var r=t[n];"number"==typeof r&&(r+="px"),e.style[n]=r}return e}function o(e){var t=document.createElement("div");return t.className=e,t}n.r(t),n.d(t,{default:()=>_});var s="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector);function a(e,t){if(!s)throw new Error("No element matching method supported");return s.call(e,t)}function l(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function c(e,t){return Array.prototype.filter.call(e.children,(function(e){return a(e,t)}))}var u={main:"ps",rtl:"ps__rtl",element:{thumb:function(e){return"ps__thumb-"+e},rail:function(e){return"ps__rail-"+e},consuming:"ps__child--consume"},state:{focus:"ps--focus",clicking:"ps--clicking",active:function(e){return"ps--active-"+e},scrolling:function(e){return"ps--scrolling-"+e}}},p={x:null,y:null};function d(e,t){var n=e.element.classList,r=u.state.scrolling(t);n.contains(r)?clearTimeout(p[t]):n.add(r)}function f(e,t){p[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(u.state.scrolling(t))}),e.settings.scrollingThreshold)}var h=function(e){this.element=e,this.handlers={}},m={isEmpty:{configurable:!0}};h.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},h.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(r){return!(!t||r===t)||(n.element.removeEventListener(e,r,!1),!1)}))},h.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},m.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(h.prototype,m);var g=function(){this.eventElements=[]};function y(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function v(e,t,n,r,i){var o;if(void 0===r&&(r=!0),void 0===i&&(i=!1),"top"===t)o=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");o=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,r,i){var o=n[0],s=n[1],a=n[2],l=n[3],c=n[4],u=n[5];void 0===r&&(r=!0);void 0===i&&(i=!1);var p=e.element;e.reach[l]=null,p[a]<1&&(e.reach[l]="start");p[a]>e[o]-e[s]-1&&(e.reach[l]="end");t&&(p.dispatchEvent(y("ps-scroll-"+l)),t<0?p.dispatchEvent(y("ps-scroll-"+c)):t>0&&p.dispatchEvent(y("ps-scroll-"+u)),r&&function(e,t){d(e,t),f(e,t)}(e,l));e.reach[l]&&(t||i)&&p.dispatchEvent(y("ps-"+l+"-reach-"+e.reach[l]))}(e,n,o,r,i)}function b(e){return parseInt(e,10)||0}g.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new h(e),this.eventElements.push(t)),t},g.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},g.prototype.unbind=function(e,t,n){var r=this.eventElement(e);r.unbind(t,n),r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r),1)},g.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},g.prototype.once=function(e,t,n){var r=this.eventElement(e),i=function(e){r.unbind(t,i),n(e)};r.bind(t,i)};var x={isWebKit:"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style,supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>0||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints,isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)};function w(e){var t=e.element,n=Math.floor(t.scrollTop),r=t.getBoundingClientRect();e.containerWidth=Math.round(r.width),e.containerHeight=Math.round(r.height),e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(c(t,u.element.rail("x")).forEach((function(e){return l(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(c(t,u.element.rail("y")).forEach((function(e){return l(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),function(e,t){var n={width:t.railXWidth},r=Math.floor(e.scrollTop);t.isRtl?n.left=t.negativeScrollAdjustment+e.scrollLeft+t.containerWidth-t.contentWidth:n.left=e.scrollLeft;t.isScrollbarXUsingBottom?n.bottom=t.scrollbarXBottom-r:n.top=t.scrollbarXTop+r;i(t.scrollbarXRail,n);var o={top:r,height:t.railYHeight};t.isScrollbarYUsingRight?t.isRtl?o.right=t.contentWidth-(t.negativeScrollAdjustment+e.scrollLeft)-t.scrollbarYRight-t.scrollbarYOuterWidth-9:o.right=t.scrollbarYRight-e.scrollLeft:t.isRtl?o.left=t.negativeScrollAdjustment+e.scrollLeft+2*t.containerWidth-t.contentWidth-t.scrollbarYLeft-t.scrollbarYOuterWidth:o.left=t.scrollbarYLeft+e.scrollLeft;i(t.scrollbarYRail,o),i(t.scrollbarX,{left:t.scrollbarXLeft,width:t.scrollbarXWidth-t.railBorderXWidth}),i(t.scrollbarY,{top:t.scrollbarYTop,height:t.scrollbarYHeight-t.railBorderYWidth})}(t,e),e.scrollbarXActive?t.classList.add(u.state.active("x")):(t.classList.remove(u.state.active("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=!0===e.isRtl?e.contentWidth:0),e.scrollbarYActive?t.classList.add(u.state.active("y")):(t.classList.remove(u.state.active("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)}function k(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function O(e,t){var n=t[0],r=t[1],i=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],p=t[8],h=e.element,m=null,g=null,y=null;function v(t){t.touches&&t.touches[0]&&(t[i]=t.touches[0].pageY),h[l]=m+y*(t[i]-g),d(e,c),w(e),t.stopPropagation(),t.type.startsWith("touch")&&t.changedTouches.length>1&&t.preventDefault()}function b(){f(e,c),e[p].classList.remove(u.state.clicking),e.event.unbind(e.ownerDocument,"mousemove",v)}function x(t,s){m=h[l],s&&t.touches&&(t[i]=t.touches[0].pageY),g=t[i],y=(e[r]-e[n])/(e[o]-e[a]),s?e.event.bind(e.ownerDocument,"touchmove",v):(e.event.bind(e.ownerDocument,"mousemove",v),e.event.once(e.ownerDocument,"mouseup",b),t.preventDefault()),e[p].classList.add(u.state.clicking),t.stopPropagation()}e.event.bind(e[s],"mousedown",(function(e){x(e)})),e.event.bind(e[s],"touchstart",(function(e){x(e,!0)}))}var E={"click-rail":function(e){e.element,e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,w(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,w(e),t.stopPropagation()}))},"drag-thumb":function(e){O(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x","scrollbarXRail"]),O(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y","scrollbarYRail"])},keyboard:function(e){var t=e.element;e.event.bind(e.ownerDocument,"keydown",(function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(a(t,":hover")||a(e.scrollbarX,":focus")||a(e.scrollbarY,":focus"))){var r,i=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(i){if("IFRAME"===i.tagName)i=i.contentDocument.activeElement;else for(;i.shadowRoot;)i=i.shadowRoot.activeElement;if(a(r=i,"input,[contenteditable]")||a(r,"select,[contenteditable]")||a(r,"textarea,[contenteditable]")||a(r,"button,[contenteditable]"))return}var o=0,s=0;switch(n.which){case 37:o=n.metaKey?-e.contentWidth:n.altKey?-e.containerWidth:-30;break;case 38:s=n.metaKey?e.contentHeight:n.altKey?e.containerHeight:30;break;case 39:o=n.metaKey?e.contentWidth:n.altKey?e.containerWidth:30;break;case 40:s=n.metaKey?-e.contentHeight:n.altKey?-e.containerHeight:-30;break;case 32:s=n.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:s=e.containerHeight;break;case 34:s=-e.containerHeight;break;case 36:s=e.contentHeight;break;case 35:s=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==o||e.settings.suppressScrollY&&0!==s||(t.scrollTop-=s,t.scrollLeft+=o,w(e),function(n,r){var i=Math.floor(t.scrollTop);if(0===n){if(!e.scrollbarYActive)return!1;if(0===i&&r>0||i>=e.contentHeight-e.containerHeight&&r<0)return!e.settings.wheelPropagation}var o=t.scrollLeft;if(0===r){if(!e.scrollbarXActive)return!1;if(0===o&&n<0||o>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(o,s)&&n.preventDefault())}}))},wheel:function(e){var t=e.element;function n(n){var i=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(n),o=i[0],s=i[1];if(!function(e,n,i){if(!x.isWebKit&&t.querySelector("select:focus"))return!0;if(!t.contains(e))return!1;for(var o=e;o&&o!==t;){if(o.classList.contains(u.element.consuming))return!0;var s=r(o);if(i&&s.overflowY.match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&(o.scrollTop>0&&i<0||o.scrollTop0))return!0}if(n&&s.overflowX.match(/(scroll|auto)/)){var l=o.scrollWidth-o.clientWidth;if(l>0&&(o.scrollLeft>0&&n<0||o.scrollLeft0))return!0}o=o.parentNode}return!1}(n.target,o,s)){var a=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(s?t.scrollTop-=s*e.settings.wheelSpeed:t.scrollTop+=o*e.settings.wheelSpeed,a=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(o?t.scrollLeft+=o*e.settings.wheelSpeed:t.scrollLeft-=s*e.settings.wheelSpeed,a=!0):(t.scrollTop-=s*e.settings.wheelSpeed,t.scrollLeft+=o*e.settings.wheelSpeed),w(e),a=a||function(n,r){var i=Math.floor(t.scrollTop),o=0===t.scrollTop,s=i+t.offsetHeight===t.scrollHeight,a=0===t.scrollLeft,l=t.scrollLeft+t.offsetWidth===t.scrollWidth;return!(Math.abs(r)>Math.abs(n)?o||s:a||l)||!e.settings.wheelPropagation}(o,s),a&&!n.ctrlKey&&(n.stopPropagation(),n.preventDefault())}}void 0!==window.onwheel?e.event.bind(t,"wheel",n):void 0!==window.onmousewheel&&e.event.bind(t,"mousewheel",n)},touch:function(e){if(x.supportsTouch||x.supportsIePointer){var t=e.element,n={},i=0,o={},s=null;x.supportsTouch?(e.event.bind(t,"touchstart",p),e.event.bind(t,"touchmove",d),e.event.bind(t,"touchend",f)):x.supportsIePointer&&(window.PointerEvent?(e.event.bind(t,"pointerdown",p),e.event.bind(t,"pointermove",d),e.event.bind(t,"pointerup",f)):window.MSPointerEvent&&(e.event.bind(t,"MSPointerDown",p),e.event.bind(t,"MSPointerMove",d),e.event.bind(t,"MSPointerUp",f)))}function a(n,r){t.scrollTop-=r,t.scrollLeft-=n,w(e)}function l(e){return e.targetTouches?e.targetTouches[0]:e}function c(e){return(!e.pointerType||"pen"!==e.pointerType||0!==e.buttons)&&(!(!e.targetTouches||1!==e.targetTouches.length)||!(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function p(e){if(c(e)){var t=l(e);n.pageX=t.pageX,n.pageY=t.pageY,i=(new Date).getTime(),null!==s&&clearInterval(s)}}function d(s){if(c(s)){var p=l(s),d={pageX:p.pageX,pageY:p.pageY},f=d.pageX-n.pageX,h=d.pageY-n.pageY;if(function(e,n,i){if(!t.contains(e))return!1;for(var o=e;o&&o!==t;){if(o.classList.contains(u.element.consuming))return!0;var s=r(o);if(i&&s.overflowY.match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&(o.scrollTop>0&&i<0||o.scrollTop0))return!0}if(n&&s.overflowX.match(/(scroll|auto)/)){var l=o.scrollWidth-o.clientWidth;if(l>0&&(o.scrollLeft>0&&n<0||o.scrollLeft0))return!0}o=o.parentNode}return!1}(s.target,f,h))return;a(f,h),n=d;var m=(new Date).getTime(),g=m-i;g>0&&(o.x=f/g,o.y=h/g,i=m),function(n,r){var i=Math.floor(t.scrollTop),o=t.scrollLeft,s=Math.abs(n),a=Math.abs(r);if(a>s){if(r<0&&i===e.contentHeight-e.containerHeight||r>0&&0===i)return 0===window.scrollY&&r>0&&x.isChrome}else if(s>a&&(n<0&&o===e.contentWidth-e.containerWidth||n>0&&0===o))return!0;return!0}(f,h)&&s.preventDefault()}}function f(){e.settings.swipeEasing&&(clearInterval(s),s=setInterval((function(){e.isInitialized?clearInterval(s):o.x||o.y?Math.abs(o.x)<.01&&Math.abs(o.y)<.01?clearInterval(s):e.element?(a(30*o.x,30*o.y),o.x*=.8,o.y*=.8):clearInterval(s):clearInterval(s)}),10))}}},S=function(e,t){var n=this;if(void 0===t&&(t={}),"string"==typeof e&&(e=document.querySelector(e)),!e||!e.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var s in this.element=e,e.classList.add(u.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!0,wheelSpeed:1},t)this.settings[s]=t[s];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var a,l,c=function(){return e.classList.add(u.state.focus)},p=function(){return e.classList.remove(u.state.focus)};this.isRtl="rtl"===r(e).direction,!0===this.isRtl&&e.classList.add(u.rtl),this.isNegativeScroll=(l=e.scrollLeft,e.scrollLeft=-1,a=e.scrollLeft<0,e.scrollLeft=l,a),this.negativeScrollAdjustment=this.isNegativeScroll?e.scrollWidth-e.clientWidth:0,this.event=new g,this.ownerDocument=e.ownerDocument||document,this.scrollbarXRail=o(u.element.rail("x")),e.appendChild(this.scrollbarXRail),this.scrollbarX=o(u.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",c),this.event.bind(this.scrollbarX,"blur",p),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var d=r(this.scrollbarXRail);this.scrollbarXBottom=parseInt(d.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=b(d.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=b(d.borderLeftWidth)+b(d.borderRightWidth),i(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=b(d.marginLeft)+b(d.marginRight),i(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=o(u.element.rail("y")),e.appendChild(this.scrollbarYRail),this.scrollbarY=o(u.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",c),this.event.bind(this.scrollbarY,"blur",p),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var f=r(this.scrollbarYRail);this.scrollbarYRight=parseInt(f.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=b(f.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(e){var t=r(e);return b(t.width)+b(t.paddingLeft)+b(t.paddingRight)+b(t.borderLeftWidth)+b(t.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=b(f.borderTopWidth)+b(f.borderBottomWidth),i(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=b(f.marginTop)+b(f.marginBottom),i(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:e.scrollLeft<=0?"start":e.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:e.scrollTop<=0?"start":e.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return E[e](n)})),this.lastScrollTop=Math.floor(e.scrollTop),this.lastScrollLeft=e.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return n.onScroll(e)})),w(this)};S.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,i(this.scrollbarXRail,{display:"block"}),i(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=b(r(this.scrollbarXRail).marginLeft)+b(r(this.scrollbarXRail).marginRight),this.railYMarginHeight=b(r(this.scrollbarYRail).marginTop)+b(r(this.scrollbarYRail).marginBottom),i(this.scrollbarXRail,{display:"none"}),i(this.scrollbarYRail,{display:"none"}),w(this),v(this,"top",0,!1,!0),v(this,"left",0,!1,!0),i(this.scrollbarXRail,{display:""}),i(this.scrollbarYRail,{display:""}))},S.prototype.onScroll=function(e){this.isAlive&&(w(this),v(this,"top",this.element.scrollTop-this.lastScrollTop),v(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=Math.floor(this.element.scrollTop),this.lastScrollLeft=this.element.scrollLeft)},S.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),l(this.scrollbarX),l(this.scrollbarY),l(this.scrollbarXRail),l(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},S.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")};const _=S},23450:function(e){e.exports=function(){var e=[],t=[],n={},r={},i={};function o(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function s(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function a(e,t){return e.replace(/\$(\d{1,2})/g,(function(e,n){return t[n]||""}))}function l(e,t){return e.replace(t[0],(function(n,r){var i=a(t[1],arguments);return s(""===n?e[r-1]:n,i)}))}function c(e,t,r){if(!e.length||n.hasOwnProperty(e))return t;for(var i=r.length;i--;){var o=r[i];if(o[0].test(t))return l(t,o)}return t}function u(e,t,n){return function(r){var i=r.toLowerCase();return t.hasOwnProperty(i)?s(r,i):e.hasOwnProperty(i)?s(r,e[i]):c(i,r,n)}}function p(e,t,n,r){return function(r){var i=r.toLowerCase();return!!t.hasOwnProperty(i)||!e.hasOwnProperty(i)&&c(i,i,n)===i}}function d(e,t,n){return(n?t+" ":"")+(1===t?d.singular(e):d.plural(e))}return d.plural=u(i,r,e),d.isPlural=p(i,r,e),d.singular=u(r,i,t),d.isSingular=p(r,i,t),d.addPluralRule=function(t,n){e.push([o(t),n])},d.addSingularRule=function(e,n){t.push([o(e),n])},d.addUncountableRule=function(e){"string"!=typeof e?(d.addPluralRule(e,"$0"),d.addSingularRule(e,"$0")):n[e.toLowerCase()]=!0},d.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),i[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return d.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return d.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return d.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[e\xe9]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(d.addUncountableRule),d}()},61303:(e,t,n)=>{"use strict";n.r(t),n.d(t,{adjustHue:()=>Xe,animation:()=>jt,backgroundImages:()=>Nt,backgrounds:()=>Lt,between:()=>W,border:()=>Mt,borderColor:()=>Dt,borderRadius:()=>Ft,borderStyle:()=>zt,borderWidth:()=>Bt,buttons:()=>Ht,clearFix:()=>V,complement:()=>Ke,cover:()=>H,cssVar:()=>b,darken:()=>et,desaturate:()=>nt,directionalProperty:()=>O,easeIn:()=>F,easeInOut:()=>B,easeOut:()=>q,ellipsis:()=>Q,em:()=>R,fluidRange:()=>X,fontFace:()=>ie,getContrast:()=>it,getLuminance:()=>rt,getValueAndUnit:()=>C,grayscale:()=>ot,hiDPI:()=>ae,hideText:()=>oe,hideVisually:()=>se,hsl:()=>De,hslToColorString:()=>st,hsla:()=>Fe,important:()=>I,invert:()=>at,lighten:()=>ct,linearGradient:()=>ce,margin:()=>Qt,math:()=>y,meetsContrastGuidelines:()=>ut,mix:()=>dt,modularScale:()=>j,normalize:()=>ue,opacify:()=>ht,padding:()=>Yt,parseToHsl:()=>Pe,parseToRgb:()=>Ie,position:()=>Xt,radialGradient:()=>pe,readableColor:()=>yt,rem:()=>N,remToPx:()=>M,retinaImage:()=>de,rgb:()=>ze,rgbToColorString:()=>vt,rgba:()=>Be,saturate:()=>xt,setHue:()=>kt,setLightness:()=>Et,setSaturation:()=>_t,shade:()=>Rt,size:()=>Kt,stripUnit:()=>_,textInputs:()=>en,timingFunctions:()=>he,tint:()=>Ct,toColorString:()=>He,transitions:()=>tn,transparentize:()=>Pt,triangle:()=>ye,wordWrap:()=>ve});var r=n(87462);var i=n(94578);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var s=n(89611);function a(e,t,n){return a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&(0,s.Z)(i,n.prototype),i},a.apply(null,arguments)}function l(e){var t="function"==typeof Map?new Map:void 0;return l=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;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,r)}function r(){return a(e,arguments,o(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),(0,s.Z)(r,e)},l(e)}function c(e,t){return t||(t=e.slice(0)),e.raw=t,e}function u(){var e;return(e=arguments.length-1)<0||arguments.length<=e?void 0:arguments[e]}var p={symbols:{"*":{infix:{symbol:"*",f:function(e,t){return e*t},notation:"infix",precedence:4,rightToLeft:0,argCount:2},symbol:"*",regSymbol:"\\*"},"/":{infix:{symbol:"/",f:function(e,t){return e/t},notation:"infix",precedence:4,rightToLeft:0,argCount:2},symbol:"/",regSymbol:"/"},"+":{infix:{symbol:"+",f:function(e,t){return e+t},notation:"infix",precedence:2,rightToLeft:0,argCount:2},prefix:{symbol:"+",f:u,notation:"prefix",precedence:3,rightToLeft:0,argCount:1},symbol:"+",regSymbol:"\\+"},"-":{infix:{symbol:"-",f:function(e,t){return e-t},notation:"infix",precedence:2,rightToLeft:0,argCount:2},prefix:{symbol:"-",f:function(e){return-e},notation:"prefix",precedence:3,rightToLeft:0,argCount:1},symbol:"-",regSymbol:"-"},",":{infix:{symbol:",",f:function(){return Array.of.apply(Array,arguments)},notation:"infix",precedence:1,rightToLeft:0,argCount:2},symbol:",",regSymbol:","},"(":{prefix:{symbol:"(",f:u,notation:"prefix",precedence:0,rightToLeft:0,argCount:1},symbol:"(",regSymbol:"\\("},")":{postfix:{symbol:")",f:void 0,notation:"postfix",precedence:0,rightToLeft:0,argCount:1},symbol:")",regSymbol:"\\)"},min:{func:{symbol:"min",f:function(){return Math.min.apply(Math,arguments)},notation:"func",precedence:0,rightToLeft:0,argCount:1},symbol:"min",regSymbol:"min\\b"},max:{func:{symbol:"max",f:function(){return Math.max.apply(Math,arguments)},notation:"func",precedence:0,rightToLeft:0,argCount:1},symbol:"max",regSymbol:"max\\b"}}};var d=function(e){function t(t){return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e.call(this,"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#"+t+" for more information.")||this)}return(0,i.Z)(t,e),t}(l(Error)),f=/((?!\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\D|$)|ged|darg?|nrut)/g;function h(e,t){var n,r=e.pop();return t.push(r.f.apply(r,(n=[]).concat.apply(n,t.splice(-r.argCount)))),r.precedence}function m(e,t){var n,i=function(e){var t={};return t.symbols=e?(0,r.Z)({},p.symbols,e.symbols):(0,r.Z)({},p.symbols),t}(t),o=[i.symbols["("].prefix],s=[],a=new RegExp("\\d+(?:\\.\\d+)?|"+Object.keys(i.symbols).map((function(e){return i.symbols[e]})).sort((function(e,t){return t.symbol.length-e.symbol.length})).map((function(e){return e.regSymbol})).join("|")+"|(\\S)","g");a.lastIndex=0;var l=!1;do{var c=(n=a.exec(e))||[")",void 0],u=c[0],f=c[1],m=i.symbols[u],g=m&&!m.prefix&&!m.func,y=!m||!m.postfix&&!m.infix;if(f||(l?y:g))throw new d(37,n?n.index:e.length,e);if(l){var v=m.postfix||m.infix;do{var b=o[o.length-1];if((v.precedence-b.precedence||b.rightToLeft)>0)break}while(h(o,s));l="postfix"===v.notation,")"!==v.symbol&&(o.push(v),l&&h(o,s))}else if(m){if(o.push(m.prefix||m.func),m.func&&(!(n=a.exec(e))||"("!==n[0]))throw new d(38,n?n.index:e.length,e)}else s.push(+u),l=!0}while(n&&o.length);if(o.length)throw new d(39,n?n.index:e.length,e);if(n)throw new d(40,n?n.index:e.length,e);return s.pop()}function g(e){return e.split("").reverse().join("")}function y(e,t){var n=g(e),r=n.match(f);if(r&&!r.every((function(e){return e===r[0]})))throw new d(41);return""+m(g(n.replace(f,"")),t)+(r?g(r[0]):"")}var v=/--[\S]*/g;function b(e,t){if(!e||!e.match(v))throw new d(73);var n;if("undefined"!=typeof document&&null!==document.documentElement&&(n=getComputedStyle(document.documentElement).getPropertyValue(e)),n)return n.trim();if(t)return t;throw new d(74)}function x(e){return e.charAt(0).toUpperCase()+e.slice(1)}var w=["Top","Right","Bottom","Left"];function k(e,t){if(!e)return t.toLowerCase();var n=e.split("-");if(n.length>1)return n.splice(1,0,t),n.reduce((function(e,t){return""+e+x(t)}));var r=e.replace(/([a-z])([A-Z])/g,"$1"+t+"$2");return e===r?""+e+t:r}function O(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0)?n[r]=e[r]+" !important":n[r]=e[r]})),n}var P={minorSecond:1.067,majorSecond:1.125,minorThird:1.2,majorThird:1.25,perfectFourth:1.333,augFourth:1.414,perfectFifth:1.5,minorSixth:1.6,goldenSection:1.618,majorSixth:1.667,minorSeventh:1.778,majorSeventh:1.875,octave:2,majorTenth:2.5,majorEleventh:2.667,majorTwelfth:3,doubleOctave:4};function j(e,t,n){if(void 0===t&&(t="1em"),void 0===n&&(n=1.333),"number"!=typeof e)throw new d(42);if("string"==typeof n&&!P[n])throw new d(43);var r="string"==typeof t?C(t):[t,""],i=r[0],o=r[1],s="string"==typeof n?P[n]:n;if("string"==typeof i)throw new d(44,t);return""+i*Math.pow(s,e)+(o||"")}var N=A("rem"),L=16;function $(e){var t=C(e);if("px"===t[1])return parseFloat(e);if("%"===t[1])return parseFloat(e)/100*L;throw new d(78,t[1])}function M(e,t){var n=C(e);if("rem"!==n[1]&&""!==n[1])throw new d(77,n[1]);var r=t?$(t):function(){if("undefined"!=typeof document&&null!==document.documentElement){var e=getComputedStyle(document.documentElement).fontSize;return e?$(e):L}return L}();return n[0]*r+"px"}var D={back:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",circ:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",cubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",expo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",quad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",quart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",quint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",sine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)"};function F(e){return D[e.toLowerCase().trim()]}var z={back:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",circ:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",cubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",expo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",quad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",quart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",quint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",sine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function B(e){return z[e.toLowerCase().trim()]}var U={back:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",cubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",circ:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",expo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",quad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",quart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",quint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",sine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)"};function q(e){return U[e.toLowerCase().trim()]}function W(e,t,n,r){void 0===n&&(n="320px"),void 0===r&&(r="1200px");var i=C(e),o=i[0],s=i[1],a=C(t),l=a[0],c=a[1],u=C(n),p=u[0],f=u[1],h=C(r),m=h[0],g=h[1];if("number"!=typeof p||"number"!=typeof m||!f||!g||f!==g)throw new d(47);if("number"!=typeof o||"number"!=typeof l||s!==c)throw new d(48);if(s!==f||c!==g)throw new d(76);var y=(o-l)/(p-m);return"calc("+(l-y*m).toFixed(2)+(s||"")+" + "+(100*y).toFixed(2)+"vw)"}function V(e){var t;return void 0===e&&(e="&"),(t={})[e+"::after"]={clear:"both",content:'""',display:"table"},t}function H(e){return void 0===e&&(e=0),{position:"absolute",top:e,right:e,bottom:e,left:e}}function Q(e,t){void 0===t&&(t=1);var n={display:"inline-block",maxWidth:e||"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",wordWrap:"normal"};return t>1?(0,r.Z)({},n,{WebkitBoxOrient:"vertical",WebkitLineClamp:t,display:"-webkit-box",whiteSpace:"normal"}):n}function Y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return G(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),i=1;i1?(t=t.slice(0,-1),t+=", "+r[o]):1===s.length&&(t+=""+r[o])}else r[o]&&(t+=r[o]+" ");return t.trim()}function ce(e){var t=e.colorStops,n=e.fallback,r=e.toDirection,i=void 0===r?"":r;if(!t||t.length<2)throw new d(56);return{backgroundColor:n||t[0].replace(/,\s+/g,",").split(" ")[0].replace(/,(?=\S)/g,", "),backgroundImage:le(K||(K=c(["linear-gradient(","",")"])),i,t.join(", ").replace(/,(?=\S)/g,", "))}}function ue(){var e;return[(e={html:{lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:"0"},main:{display:"block"},h1:{fontSize:"2em",margin:"0.67em 0"},hr:{boxSizing:"content-box",height:"0",overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{backgroundColor:"transparent"},"abbr[title]":{borderBottom:"none",textDecoration:"underline"}},e["b,\n strong"]={fontWeight:"bolder"},e["code,\n kbd,\n samp"]={fontFamily:"monospace, monospace",fontSize:"1em"},e.small={fontSize:"80%"},e["sub,\n sup"]={fontSize:"75%",lineHeight:"0",position:"relative",verticalAlign:"baseline"},e.sub={bottom:"-0.25em"},e.sup={top:"-0.5em"},e.img={borderStyle:"none"},e["button,\n input,\n optgroup,\n select,\n textarea"]={fontFamily:"inherit",fontSize:"100%",lineHeight:"1.15",margin:"0"},e["button,\n input"]={overflow:"visible"},e["button,\n select"]={textTransform:"none"},e['button,\n html [type="button"],\n [type="reset"],\n [type="submit"]']={WebkitAppearance:"button"},e['button::-moz-focus-inner,\n [type="button"]::-moz-focus-inner,\n [type="reset"]::-moz-focus-inner,\n [type="submit"]::-moz-focus-inner']={borderStyle:"none",padding:"0"},e['button:-moz-focusring,\n [type="button"]:-moz-focusring,\n [type="reset"]:-moz-focusring,\n [type="submit"]:-moz-focusring']={outline:"1px dotted ButtonText"},e.fieldset={padding:"0.35em 0.625em 0.75em"},e.legend={boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:"0",whiteSpace:"normal"},e.progress={verticalAlign:"baseline"},e.textarea={overflow:"auto"},e['[type="checkbox"],\n [type="radio"]']={boxSizing:"border-box",padding:"0"},e['[type="number"]::-webkit-inner-spin-button,\n [type="number"]::-webkit-outer-spin-button']={height:"auto"},e['[type="search"]']={WebkitAppearance:"textfield",outlineOffset:"-2px"},e['[type="search"]::-webkit-search-decoration']={WebkitAppearance:"none"},e["::-webkit-file-upload-button"]={WebkitAppearance:"button",font:"inherit"},e.details={display:"block"},e.summary={display:"list-item"},e.template={display:"none"},e["[hidden]"]={display:"none"},e),{"abbr[title]":{textDecoration:"underline dotted"}}]}function pe(e){var t=e.colorStops,n=e.extent,r=void 0===n?"":n,i=e.fallback,o=e.position,s=void 0===o?"":o,a=e.shape,l=void 0===a?"":a;if(!t||t.length<2)throw new d(57);return{backgroundColor:i||t[0].split(" ")[0],backgroundImage:le(Z||(Z=c(["radial-gradient(","","","",")"])),s,l,r,t.join(", "))}}function de(e,t,n,i,o){var s;if(void 0===n&&(n="png"),void 0===o&&(o="_2x"),!e)throw new d(58);var a=n.replace(/^\./,""),l=i?i+"."+a:""+e+o+"."+a;return(s={backgroundImage:"url("+e+"."+a+")"})[ae()]=(0,r.Z)({backgroundImage:"url("+l+")"},t?{backgroundSize:t}:{}),s}var fe={easeInBack:"cubic-bezier(0.600, -0.280, 0.735, 0.045)",easeInCirc:"cubic-bezier(0.600, 0.040, 0.980, 0.335)",easeInCubic:"cubic-bezier(0.550, 0.055, 0.675, 0.190)",easeInExpo:"cubic-bezier(0.950, 0.050, 0.795, 0.035)",easeInQuad:"cubic-bezier(0.550, 0.085, 0.680, 0.530)",easeInQuart:"cubic-bezier(0.895, 0.030, 0.685, 0.220)",easeInQuint:"cubic-bezier(0.755, 0.050, 0.855, 0.060)",easeInSine:"cubic-bezier(0.470, 0.000, 0.745, 0.715)",easeOutBack:"cubic-bezier(0.175, 0.885, 0.320, 1.275)",easeOutCubic:"cubic-bezier(0.215, 0.610, 0.355, 1.000)",easeOutCirc:"cubic-bezier(0.075, 0.820, 0.165, 1.000)",easeOutExpo:"cubic-bezier(0.190, 1.000, 0.220, 1.000)",easeOutQuad:"cubic-bezier(0.250, 0.460, 0.450, 0.940)",easeOutQuart:"cubic-bezier(0.165, 0.840, 0.440, 1.000)",easeOutQuint:"cubic-bezier(0.230, 1.000, 0.320, 1.000)",easeOutSine:"cubic-bezier(0.390, 0.575, 0.565, 1.000)",easeInOutBack:"cubic-bezier(0.680, -0.550, 0.265, 1.550)",easeInOutCirc:"cubic-bezier(0.785, 0.135, 0.150, 0.860)",easeInOutCubic:"cubic-bezier(0.645, 0.045, 0.355, 1.000)",easeInOutExpo:"cubic-bezier(1.000, 0.000, 0.000, 1.000)",easeInOutQuad:"cubic-bezier(0.455, 0.030, 0.515, 0.955)",easeInOutQuart:"cubic-bezier(0.770, 0.000, 0.175, 1.000)",easeInOutQuint:"cubic-bezier(0.860, 0.000, 0.070, 1.000)",easeInOutSine:"cubic-bezier(0.445, 0.050, 0.550, 0.950)"};function he(e){return fe[e]}var me=function(e,t,n){var r=""+n[0]+(n[1]||""),i=""+n[0]/2+(n[1]||""),o=""+t[0]+(t[1]||""),s=""+t[0]/2+(t[1]||"");switch(e){case"top":return"0 "+i+" "+o+" "+i;case"topLeft":return r+" "+o+" 0 0";case"left":return s+" "+r+" "+s+" 0";case"bottomLeft":return r+" 0 0 "+o;case"bottom":return o+" "+i+" 0 "+i;case"bottomRight":return"0 0 "+r+" "+o;case"right":return s+" 0 "+s+" "+r;default:return"0 "+r+" "+o+" 0"}},ge=function(e,t){switch(e){case"top":case"bottomRight":return{borderBottomColor:t};case"right":case"bottomLeft":return{borderLeftColor:t};case"bottom":case"topLeft":return{borderTopColor:t};case"left":case"topRight":return{borderRightColor:t};default:throw new d(59)}};function ye(e){var t=e.pointingDirection,n=e.height,i=e.width,o=e.foregroundColor,s=e.backgroundColor,a=void 0===s?"transparent":s,l=C(i),c=C(n);if(isNaN(c[0])||isNaN(l[0]))throw new d(60);return(0,r.Z)({width:"0",height:"0",borderColor:a},ge(t,o),{borderStyle:"solid",borderWidth:me(t,c,l)})}function ve(e){return void 0===e&&(e="break-word"),{overflowWrap:e,wordWrap:e,wordBreak:"break-word"===e?"break-all":e}}function be(e){return Math.round(255*e)}function xe(e,t,n){return be(e)+","+be(t)+","+be(n)}function we(e,t,n,r){if(void 0===r&&(r=xe),0===t)return r(n,n,n);var i=(e%360+360)%360/60,o=(1-Math.abs(2*n-1))*t,s=o*(1-Math.abs(i%2-1)),a=0,l=0,c=0;i>=0&&i<1?(a=o,l=s):i>=1&&i<2?(a=s,l=o):i>=2&&i<3?(l=o,c=s):i>=3&&i<4?(l=s,c=o):i>=4&&i<5?(a=s,c=o):i>=5&&i<6&&(a=o,c=s);var u=n-o/2;return r(a+u,l+u,c+u)}var ke={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"};var Oe=/^#[a-fA-F0-9]{6}$/,Ee=/^#[a-fA-F0-9]{8}$/,Se=/^#[a-fA-F0-9]{3}$/,_e=/^#[a-fA-F0-9]{4}$/,Ae=/^rgb\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*\)$/i,Re=/^rgb(?:a)?\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i,Te=/^hsl\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,Ce=/^hsl(?:a)?\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i;function Ie(e){if("string"!=typeof e)throw new d(3);var t=function(e){if("string"!=typeof e)return e;var t=e.toLowerCase();return ke[t]?"#"+ke[t]:e}(e);if(t.match(Oe))return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16)};if(t.match(Ee)){var n=parseFloat((parseInt(""+t[7]+t[8],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16),alpha:n}}if(t.match(Se))return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16)};if(t.match(_e)){var r=parseFloat((parseInt(""+t[4]+t[4],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16),alpha:r}}var i=Ae.exec(t);if(i)return{red:parseInt(""+i[1],10),green:parseInt(""+i[2],10),blue:parseInt(""+i[3],10)};var o=Re.exec(t.substring(0,50));if(o)return{red:parseInt(""+o[1],10),green:parseInt(""+o[2],10),blue:parseInt(""+o[3],10),alpha:parseFloat(""+o[4])>1?parseFloat(""+o[4])/100:parseFloat(""+o[4])};var s=Te.exec(t);if(s){var a="rgb("+we(parseInt(""+s[1],10),parseInt(""+s[2],10)/100,parseInt(""+s[3],10)/100)+")",l=Ae.exec(a);if(!l)throw new d(4,t,a);return{red:parseInt(""+l[1],10),green:parseInt(""+l[2],10),blue:parseInt(""+l[3],10)}}var c=Ce.exec(t.substring(0,50));if(c){var u="rgb("+we(parseInt(""+c[1],10),parseInt(""+c[2],10)/100,parseInt(""+c[3],10)/100)+")",p=Ae.exec(u);if(!p)throw new d(4,t,u);return{red:parseInt(""+p[1],10),green:parseInt(""+p[2],10),blue:parseInt(""+p[3],10),alpha:parseFloat(""+c[4])>1?parseFloat(""+c[4])/100:parseFloat(""+c[4])}}throw new d(5)}function Pe(e){return function(e){var t,n=e.red/255,r=e.green/255,i=e.blue/255,o=Math.max(n,r,i),s=Math.min(n,r,i),a=(o+s)/2;if(o===s)return void 0!==e.alpha?{hue:0,saturation:0,lightness:a,alpha:e.alpha}:{hue:0,saturation:0,lightness:a};var l=o-s,c=a>.5?l/(2-o-s):l/(o+s);switch(o){case n:t=(r-i)/l+(r=1?Me(e,t,n):"rgba("+we(e,t,n)+","+r+")";if("object"==typeof e&&void 0===t&&void 0===n&&void 0===r)return e.alpha>=1?Me(e.hue,e.saturation,e.lightness):"rgba("+we(e.hue,e.saturation,e.lightness)+","+e.alpha+")";throw new d(2)}function ze(e,t,n){if("number"==typeof e&&"number"==typeof t&&"number"==typeof n)return je("#"+Ne(e)+Ne(t)+Ne(n));if("object"==typeof e&&void 0===t&&void 0===n)return je("#"+Ne(e.red)+Ne(e.green)+Ne(e.blue));throw new d(6)}function Be(e,t,n,r){if("string"==typeof e&&"number"==typeof t){var i=Ie(e);return"rgba("+i.red+","+i.green+","+i.blue+","+t+")"}if("number"==typeof e&&"number"==typeof t&&"number"==typeof n&&"number"==typeof r)return r>=1?ze(e,t,n):"rgba("+e+","+t+","+n+","+r+")";if("object"==typeof e&&void 0===t&&void 0===n&&void 0===r)return e.alpha>=1?ze(e.red,e.green,e.blue):"rgba("+e.red+","+e.green+","+e.blue+","+e.alpha+")";throw new d(7)}var Ue=function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&("number"!=typeof e.alpha||void 0===e.alpha)},qe=function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&"number"==typeof e.alpha},We=function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&("number"!=typeof e.alpha||void 0===e.alpha)},Ve=function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&"number"==typeof e.alpha};function He(e){if("object"!=typeof e)throw new d(8);if(qe(e))return Be(e);if(Ue(e))return ze(e);if(Ve(e))return Fe(e);if(We(e))return De(e);throw new d(8)}function Qe(e,t,n){return function(){var r=n.concat(Array.prototype.slice.call(arguments));return r.length>=t?e.apply(this,r):Qe(e,t,r)}}function Ye(e){return Qe(e,e.length,[])}function Ge(e,t){if("transparent"===t)return t;var n=Pe(t);return He((0,r.Z)({},n,{hue:n.hue+parseFloat(e)}))}var Xe=Ye(Ge);function Ke(e){if("transparent"===e)return e;var t=Pe(e);return He((0,r.Z)({},t,{hue:(t.hue+180)%360}))}function Ze(e,t,n){return Math.max(e,Math.min(t,n))}function Je(e,t){if("transparent"===t)return t;var n=Pe(t);return He((0,r.Z)({},n,{lightness:Ze(0,1,n.lightness-parseFloat(e))}))}var et=Ye(Je);function tt(e,t){if("transparent"===t)return t;var n=Pe(t);return He((0,r.Z)({},n,{saturation:Ze(0,1,n.saturation-parseFloat(e))}))}var nt=Ye(tt);function rt(e){if("transparent"===e)return 0;var t=Ie(e),n=Object.keys(t).map((function(e){var n=t[e]/255;return n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)})),r=n[0],i=n[1],o=n[2];return parseFloat((.2126*r+.7152*i+.0722*o).toFixed(3))}function it(e,t){var n=rt(e),r=rt(t);return parseFloat((n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)).toFixed(2))}function ot(e){return"transparent"===e?e:He((0,r.Z)({},Pe(e),{saturation:0}))}function st(e){if("object"==typeof e&&"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness)return e.alpha&&"number"==typeof e.alpha?Fe({hue:e.hue,saturation:e.saturation,lightness:e.lightness,alpha:e.alpha}):De({hue:e.hue,saturation:e.saturation,lightness:e.lightness});throw new d(45)}function at(e){if("transparent"===e)return e;var t=Ie(e);return He((0,r.Z)({},t,{red:255-t.red,green:255-t.green,blue:255-t.blue}))}function lt(e,t){if("transparent"===t)return t;var n=Pe(t);return He((0,r.Z)({},n,{lightness:Ze(0,1,n.lightness+parseFloat(e))}))}var ct=Ye(lt);function ut(e,t){var n=it(e,t);return{AA:n>=4.5,AALarge:n>=3,AAA:n>=7,AAALarge:n>=4.5}}function pt(e,t,n){if("transparent"===t)return n;if("transparent"===n)return t;if(0===e)return n;var i=Ie(t),o=(0,r.Z)({},i,{alpha:"number"==typeof i.alpha?i.alpha:1}),s=Ie(n),a=(0,r.Z)({},s,{alpha:"number"==typeof s.alpha?s.alpha:1}),l=o.alpha-a.alpha,c=2*parseFloat(e)-1,u=((c*l==-1?c:c+l)/(1+c*l)+1)/2,p=1-u;return Be({red:Math.floor(o.red*u+a.red*p),green:Math.floor(o.green*u+a.green*p),blue:Math.floor(o.blue*u+a.blue*p),alpha:o.alpha*parseFloat(e)+a.alpha*(1-parseFloat(e))})}var dt=Ye(pt);function ft(e,t){if("transparent"===t)return t;var n=Ie(t),i="number"==typeof n.alpha?n.alpha:1;return Be((0,r.Z)({},n,{alpha:Ze(0,1,(100*i+100*parseFloat(e))/100)}))}var ht=Ye(ft),mt="#000",gt="#fff";function yt(e,t,n,r){void 0===t&&(t=mt),void 0===n&&(n=gt),void 0===r&&(r=!0);var i=rt(e)>.179,o=i?t:n;return!r||it(e,o)>=4.5?o:i?mt:gt}function vt(e){if("object"==typeof e&&"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue)return"number"==typeof e.alpha?Be({red:e.red,green:e.green,blue:e.blue,alpha:e.alpha}):ze({red:e.red,green:e.green,blue:e.blue});throw new d(46)}function bt(e,t){if("transparent"===t)return t;var n=Pe(t);return He((0,r.Z)({},n,{saturation:Ze(0,1,n.saturation+parseFloat(e))}))}var xt=Ye(bt);function wt(e,t){return"transparent"===t?t:He((0,r.Z)({},Pe(t),{hue:parseFloat(e)}))}var kt=Ye(wt);function Ot(e,t){return"transparent"===t?t:He((0,r.Z)({},Pe(t),{lightness:parseFloat(e)}))}var Et=Ye(Ot);function St(e,t){return"transparent"===t?t:He((0,r.Z)({},Pe(t),{saturation:parseFloat(e)}))}var _t=Ye(St);function At(e,t){return"transparent"===t?t:dt(parseFloat(e),"rgb(0, 0, 0)",t)}var Rt=Ye(At);function Tt(e,t){return"transparent"===t?t:dt(parseFloat(e),"rgb(255, 255, 255)",t)}var Ct=Ye(Tt);function It(e,t){if("transparent"===t)return t;var n=Ie(t),i="number"==typeof n.alpha?n.alpha:1;return Be((0,r.Z)({},n,{alpha:Ze(0,1,+(100*i-100*parseFloat(e)).toFixed(2)/100)}))}var Pt=Ye(It);function jt(){for(var e=arguments.length,t=new Array(e),n=0;n8)throw new d(64);return{animation:t.map((function(e){if(r&&!Array.isArray(e)||!r&&Array.isArray(e))throw new d(65);if(Array.isArray(e)&&e.length>8)throw new d(66);return Array.isArray(e)?e.join(" "):e})).join(", ")}}function Nt(){for(var e=arguments.length,t=new Array(e),n=0;n1?t-1:0),r=1;r=0?((i={})["border"+x(e)+"Width"]=n[0],i["border"+x(e)+"Style"]=n[1],i["border"+x(e)+"Color"]=n[2],i):(n.unshift(e),{borderWidth:n[0],borderStyle:n[1],borderColor:n[2]})}function Dt(){for(var e=arguments.length,t=new Array(e),n=0;n1?t-1:0),i=1;i=0&&e?(0,r.Z)({},O.apply(void 0,[""].concat(n)),{position:e}):O.apply(void 0,["",e].concat(n))}function Kt(e,t){return void 0===t&&(t=e),{height:e,width:t}}var Zt=[void 0,null,"active","focus","hover"];function Jt(e){return'input[type="color"]'+e+',\n input[type="date"]'+e+',\n input[type="datetime"]'+e+',\n input[type="datetime-local"]'+e+',\n input[type="email"]'+e+',\n input[type="month"]'+e+',\n input[type="number"]'+e+',\n input[type="password"]'+e+',\n input[type="search"]'+e+',\n input[type="tel"]'+e+',\n input[type="text"]'+e+',\n input[type="time"]'+e+',\n input[type="url"]'+e+',\n input[type="week"]'+e+",\n input:not([type])"+e+",\n textarea"+e}function en(){for(var e=arguments.length,t=new Array(e),n=0;n{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,s=0;s{Prism.languages.c=Prism.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|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.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},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.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:Prism.languages.c}}}}),Prism.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 Prism.languages.c.boolean},35433:()=>{Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}},46213:()=>{!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}(Prism)},2731:()=>{!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"])}(Prism)},79016:()=>{!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var i="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",o="class enum interface record struct",s="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",a="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var c=l(o),u=RegExp(l(i+" "+o+" "+s+" "+a)),p=l(o+" "+s+" "+a),d=l(i+" "+o+" "+a),f=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),h=r(/\((?:[^()]|<>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,g=t(/<<0>>(?:\s*<<1>>)?/.source,[m,f]),y=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[p,g]),v=/\[\s*(?:,\s*)*\]/.source,b=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[y,v]),x=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[f,h,v]),w=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[x]),k=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[w,y,v]),O={keyword:u,punctuation:/[<>()?,.:[\]]/},E=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,S=/"(?:\\.|[^\\"\r\n])*"/.source,_=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[_]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[S]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[y]),lookbehind:!0,inside:O},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,k]),lookbehind:!0,inside:O},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[c,g]),lookbehind:!0,inside:O},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[y]),lookbehind:!0,inside:O},{pattern:n(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[b]),lookbehind:!0,inside:O},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[k,d,m]),inside:O}],keyword:u,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[h]),lookbehind:!0,alias:"class-name",inside:O},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[k,y]),inside:O,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[k]),lookbehind:!0,inside:O,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,f]),inside:{function:n(/^<<0>>/.source,[m]),generic:{pattern:RegExp(f),alias:"class-name",inside:O}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[c,g,m,k,u.source,h,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:n(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[g,h]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:u,"class-name":{pattern:RegExp(k),greedy:!0,inside:O},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var A=S+"|"+E,R=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[A]),T=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[R]),2),C=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,I=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[y,T]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[C,I]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[C]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[T]),inside:e.languages.csharp},"class-name":{pattern:RegExp(y),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var P=/:[^}\r\n]+/.source,j=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[R]),2),N=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[j,P]),L=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[A]),2),$=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[L,P]);function M(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,P]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[N]),lookbehind:!0,greedy:!0,inside:M(N,j)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[$]),lookbehind:!0,greedy:!0,inside:M($,L)}],char:{pattern:RegExp(E),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism)},97899:()=>{Prism.languages.csv={value:/[^\r\n,"]+|"(?:[^"]|"")*"(?!")/,punctuation:/,/}},27046:()=>{Prism.languages.go=Prism.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/}),Prism.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete Prism.languages.go["class-name"]},50057:()=>{!function(e){function t(e){return RegExp("(^(?:"+e+"):[ \t]*(?![ \t]))[^]+","i")}e.languages.http={"request-line":{pattern:/^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[\d.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[\d.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[\d.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},header:{pattern:/^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m,inside:{"header-value":[{pattern:t(/Content-Security-Policy/.source),lookbehind:!0,alias:["csp","languages-csp"],inside:e.languages.csp},{pattern:t(/Public-Key-Pins(?:-Report-Only)?/.source),lookbehind:!0,alias:["hpkp","languages-hpkp"],inside:e.languages.hpkp},{pattern:t(/Strict-Transport-Security/.source),lookbehind:!0,alias:["hsts","languages-hsts"],inside:e.languages.hsts},{pattern:t(/[^:]+/.source),lookbehind:!0}],"header-name":{pattern:/^[^:]+/,alias:"keyword"},punctuation:/^:/}}};var n,r=e.languages,i={"application/javascript":r.javascript,"application/json":r.json||r.javascript,"application/xml":r.xml,"text/xml":r.xml,"text/html":r.html,"text/css":r.css,"text/plain":r.plain},o={"application/json":!0,"application/xml":!0};function s(e){var t=e.replace(/^[a-z]+\//,"");return"(?:"+e+"|"+("\\w+/(?:[\\w.-]+\\+)+"+t+"(?![+\\w.-])")+")"}for(var a in i)if(i[a]){n=n||{};var l=o[a]?s(a):a;n[a.replace(/\//g,"-")]={pattern:RegExp("("+/content-type:\s*/.source+l+/(?:(?:\r\n?|\n)[\w-].*)*(?:\r(?:\n|(?!\n))|\n)/.source+")"+/[^ \t\w-][\s\S]*/.source,"i"),lookbehind:!0,inside:i[a]}}n&&e.languages.insertBefore("http","header",n)}(Prism)},52503:()=>{!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,r={pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[r,{pattern:RegExp(/(^|[^\w.])/.source+n+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:r.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+n+/[A-Z]\w*\b/.source),lookbehind:!0,inside:r.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":r,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+n+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:r.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+n+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:r.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(//g,(function(){return t.source}))),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism)},66841:()=>{Prism.languages.lua={comment:/^#!.+|--(?:\[(=*)\[[\s\S]*?\]\1\]|.*)/m,string:{pattern:/(["'])(?:(?!\1)[^\\\r\n]|\\z(?:\r\n|\s)|\\(?:\r\n|[^z]))*\1|\[(=*)\[[\s\S]*?\]\2\]/,greedy:!0},number:/\b0x[a-f\d]+(?:\.[a-f\d]*)?(?:p[+-]?\d+)?\b|\b\d+(?:\.\B|(?:\.\d*)?(?:e[+-]?\d+)?\b)|\B\.\d+(?:e[+-]?\d+)?\b/i,keyword:/\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,function:/(?!\d)\w+(?=\s*(?:[({]))/,operator:[/[-+*%^&|#]|\/\/?|<[<=]?|>[>=]?|[=~]=?/,{pattern:/(^|[^.])\.\.(?!\.)/,lookbehind:!0}],punctuation:/[\[\](){},;]|\.+|:+/}},96854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,i,o){if(n.language===r){var s=n.tokenStack=[];n.code=n.code.replace(i,(function(e){if("function"==typeof o&&!o(e))return e;for(var i,a=s.length;-1!==n.code.indexOf(i=t(r,a));)++a;return s[a]=e,i})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var i=0,o=Object.keys(n.tokenStack);!function s(a){for(var l=0;l=o.length);l++){var c=a[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[i],p=n.tokenStack[u],d="string"==typeof c?c:c.content,f=t(r,u),h=d.indexOf(f);if(h>-1){++i;var m=d.substring(0,h),g=new e.Token(r,e.tokenize(p,n.grammar),"language-"+r,p),y=d.substring(h+f.length),v=[];m&&v.push.apply(v,s([m])),v.push(g),y&&v.push.apply(v,s([y])),"string"==typeof c?a.splice.apply(a,[l,1].concat(v)):c.content=v}}else c.content&&s(c.content)}return a}(n.tokens)}}}})}(Prism)},24335:()=>{Prism.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]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:Prism.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},Prism.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,t){Prism.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:Prism.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml},11426:()=>{Prism.languages.objectivec=Prism.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 Prism.languages.objectivec["class-name"],Prism.languages.objc=Prism.languages.objectivec},20288:()=>{!function(e){var t=/(?:\((?:[^()\\]|\\[\s\S])*\)|\{(?:[^{}\\]|\\[\s\S])*\}|\[(?:[^[\]\\]|\\[\s\S])*\]|<(?:[^<>\\]|\\[\s\S])*>)/.source;e.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0,greedy:!0}],string:[{pattern:RegExp(/\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,t].join("|")+")"),greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:RegExp(/\b(?:m|qr)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,t].join("|")+")"+/[msixpodualngc]*/.source),greedy:!0},{pattern:RegExp(/(^|[^-])\b(?:s|tr|y)(?![a-zA-Z0-9])\s*/.source+"(?:"+[/([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2/.source,/([a-zA-Z0-9])(?:(?!\3)[^\\]|\\[\s\S])*\3(?:(?!\3)[^\\]|\\[\s\S])*\3/.source,t+/\s*/.source+t].join("|")+")"+/[msixpodualngcer]*/.source),lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*?>|\b_\b/,alias:"symbol"},"v-string":{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/(\bsub[ \t]+)\w+/,lookbehind:!0},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\b/,punctuation:/[{}[\];(),:]/}}(Prism)},99945:()=>{!function(e){var t=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,n=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],r=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,i=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,o=/[{}\[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:t,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:r,operator:i,punctuation:o};var s={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},a=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:s}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:s}}];e.languages.insertBefore("php","variable",{string:a,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:t,string:a,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:n,number:r,operator:i,punctuation:o}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",(function(t){if(/<\?/.test(t.code)){e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")}))}(Prism)},80366:()=>{Prism.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:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python},82939:()=>{Prism.languages.q={string:/"(?:\\.|[^"\\\r\n])*"/,comment:[{pattern:/([\t )\]}])\/.*/,lookbehind:!0,greedy:!0},{pattern:/(^|\r?\n|\r)\/[\t ]*(?:(?:\r?\n|\r)(?:.*(?:\r?\n|\r(?!\n)))*?(?:\\(?=[\t ]*(?:\r?\n|\r))|$)|\S.*)/,lookbehind:!0,greedy:!0},{pattern:/^\\[\t ]*(?:\r?\n|\r)[\s\S]+/m,greedy:!0},{pattern:/^#!.+/m,greedy:!0}],symbol:/`(?::\S+|[\w.]*)/,datetime:{pattern:/0N[mdzuvt]|0W[dtz]|\d{4}\.\d\d(?:m|\.\d\d(?:T(?:\d\d(?::\d\d(?::\d\d(?:[.:]\d\d\d)?)?)?)?)?[dz]?)|\d\d:\d\d(?::\d\d(?:[.:]\d\d\d)?)?[uvt]?/,alias:"number"},number:/\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\da-fA-F]+|\d+(?:\.\d*)?(?:e[+-]?\d+)?[hjfeb]?)/,keyword:/\\\w+\b|\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\b/,adverb:{pattern:/['\/\\]:?|\beach\b/,alias:"function"},verb:{pattern:/(?:\B\.\B|\b[01]:|<[=>]?|>=?|[:+\-*%,!?~=|$&#@^]):?|\b_\b:?/,alias:"operator"},punctuation:/[(){}\[\];.]/}},59385:()=>{!function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===||[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var t={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var n="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",r=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+n+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+r),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+r+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+n),greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:t,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+n),greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:t,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism)},12886:()=>{Prism.languages.scala=Prism.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\b/,symbol:/'[^\d\s\\]\w*/}),Prism.languages.insertBefore("scala","triple-quoted-string",{"string-interpolation":{pattern:/\b[a-z]\w*(?:"""(?:[^$]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*?"""|"(?:[^$"\r\n]|\$(?:[^{]|\{(?:[^{}]|\{[^{}]*\})*\}))*")/i,greedy:!0,inside:{id:{pattern:/^\w+/,greedy:!0,alias:"function"},escape:{pattern:/\\\$"|\$[$"]/,greedy:!0,alias:"symbol"},interpolation:{pattern:/\$(?:\w+|\{(?:[^{}]|\{[^{}]*\})*\})/,greedy:!0,inside:{punctuation:/^\$\{?|\}$/,expression:{pattern:/[\s\S]+/,inside:Prism.languages.scala}}},string:/[\s\S]+/}}}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala.function,delete Prism.languages.scala.constant},35266:()=>{Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}},90874:()=>{Prism.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:/[{}[\]();,.:\\]/},Prism.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=Prism.languages.swift}))},73358:()=>{!function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",i=/(?:[^\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 s(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"(?:"+i+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:s(/\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:s(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:s(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:s(o),lookbehind:!0,greedy:!0},number:{pattern:s(/[+-]?(?: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}(Prism)},15660:(e,t,n)=>{var r=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,r={},i={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=p.reach);O+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof o)){var S,_=1;if(v){if(!(S=s(w,O,e,y))||S.index>=e.length)break;var A=S.index,R=S.index+S[0].length,T=O;for(T+=k.value.length;A>=T;)T+=(k=k.next).value.length;if(O=T-=k.value.length,k.value instanceof o)continue;for(var C=k;C!==t.tail&&(Tp.reach&&(p.reach=N);var L=k.prev;if(P&&(L=c(t,L,P),O+=P.length),u(t,L,_),k=c(t,L,new o(d,g?i.tokenize(I,g):I,b,I)),j&&c(t,k,j),_>1){var $={cause:d+","+h,reach:N};a(e,t,n,k.prev,O,$),p&&$.reach>p.reach&&(p.reach=$.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 c(e,t,n){var r=t.next,i={value:n,prev:t,next:r};return t.next=i,r.prev=i,e.length++,i}function u(e,t,n){for(var r=t.next,i=0;i"+o.content+""},!e.document)return e.addEventListener?(i.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var n=JSON.parse(t.data),r=n.language,o=n.code,s=n.immediateClose;e.postMessage(i.highlight(o,i.languages[r],r)),s&&e.close()}),!1),i):i;var p=i.util.currentScript();function d(){i.manual||i.highlightAll()}if(p&&(i.filename=p.src,p.hasAttribute("data-manual")&&(i.manual=!0)),!i.manual){var f=document.readyState;"loading"===f||"interactive"===f&&p&&p.defer?document.addEventListener("DOMContentLoaded",d):window.requestAnimationFrame?window.requestAnimationFrame(d):window.setTimeout(d,16)}return i}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=r),void 0!==n.g&&(n.g.Prism=r),r.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]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:n}};i["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:i},r.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.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:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.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}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.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:r.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:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.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:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.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:r.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"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.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")),r.languages.js=r.languages.javascript,function(){if(void 0!==r&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var e={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},t="data-src-status",n="loading",i="loaded",o="pre[data-src]:not(["+t+'="'+i+'"]):not(['+t+'="'+n+'"])';r.hooks.add("before-highlightall",(function(e){e.selector+=", "+o})),r.hooks.add("before-sanity-check",(function(s){var a=s.element;if(a.matches(o)){s.code="",a.setAttribute(t,n);var l=a.appendChild(document.createElement("CODE"));l.textContent="Loading\u2026";var c=a.getAttribute("data-src"),u=s.language;if("none"===u){var p=(/\.(\w+)$/.exec(c)||[,"none"])[1];u=e[p]||p}r.util.setLanguage(l,u),r.util.setLanguage(a,u);var d=r.plugins.autoloader;d&&d.loadLanguages(u),function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?t(r.responseText):r.status>=400?n("\u2716 Error "+r.status+" while fetching file: "+r.statusText):n("\u2716 Error: File does not exist or is empty"))},r.send(null)}(c,(function(e){a.setAttribute(t,i);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var n=Number(t[1]),r=t[2],i=t[3];return r?i?[n,Number(i)]:[n,void 0]:[n,n]}}(a.getAttribute("data-range"));if(n){var o=e.split(/\r\n?|\n/g),s=n[0],c=null==n[1]?o.length:n[1];s<0&&(s+=o.length),s=Math.max(0,Math.min(s-1,o.length)),c<0&&(c+=o.length),c=Math.max(0,Math.min(c,o.length)),e=o.slice(s,c).join("\n"),a.hasAttribute("data-start")||a.setAttribute("data-start",String(s+1))}l.textContent=e,r.highlightElement(l)}),(function(e){a.setAttribute(t,"failed"),l.textContent=e}))}})),r.plugins.fileHighlight={highlight:function(e){for(var t,n=(e||document).querySelectorAll(o),i=0;t=n[i++];)r.highlightElement(t)}};var s=!1;r.fileHighlight=function(){s||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),s=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}}()},78369:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Tab:()=>L,TabList:()=>C,TabPanel:()=>z,Tabs:()=>_,resetIdCounter:()=>h});var r=n(67294);function i(e){return function(t){return!!t.type&&t.type.tabsRole===e}}var o=i("Tab"),s=i("TabList"),a=i("TabPanel");function l(){return l=Object.assign||function(e){for(var t=1;t=this.getTabsCount())){var n=this.props;(0,n.onSelect)(e,n.selectedIndex,t)}},l.getNextTab=function(e){for(var t=this.getTabsCount(),n=e+1;ne;)if(!k(this.getTab(t)))return t;return e},l.getFirstTab=function(){for(var e=this.getTabsCount(),t=0;t=0||(i[n]=e[n]);return i}(t,y));return r.createElement("div",v({},o,{className:(0,p.Z)(n),onClick:this.handleClick,onKeyDown:this.handleKeyDown,ref:function(t){e.node=t,i&&i(t)},"data-rttabs":!0}),this.getChildren())},i}(r.Component);O.defaultProps={className:"react-tabs",focus:!1},O.propTypes={};var E=["children","defaultIndex","defaultFocus"];function S(e,t){return S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},S(e,t)}var _=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).handleSelected=function(e,t,r){var i=n.props.onSelect,o=n.state.mode;if("function"!=typeof i||!1!==i(e,t,r)){var s={focus:"keydown"===r.type};1===o&&(s.selectedIndex=e),n.setState(s)}},n.state=i.copyPropsToState(n.props,{},t.defaultFocus),n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,S(t,n),i.getDerivedStateFromProps=function(e,t){return i.copyPropsToState(e,t)},i.getModeFromProps=function(e){return null===e.selectedIndex?1:0},i.copyPropsToState=function(e,t,n){void 0===n&&(n=!1);var r={focus:n,mode:i.getModeFromProps(e)};if(1===r.mode){var o=Math.max(0,m(e.children)-1),s=null;s=null!=t.selectedIndex?Math.min(t.selectedIndex,o):e.defaultIndex||0,r.selectedIndex=s}return r},i.prototype.render=function(){var e=this.props,t=e.children,n=(e.defaultIndex,e.defaultFocus,function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,E)),i=this.state,o=i.focus,s=i.selectedIndex;return n.focus=o,n.onSelect=this.handleSelected,null!=s&&(n.selectedIndex=s),r.createElement(O,n,t)},i}(r.Component);_.defaultProps={defaultFocus:!1,forceRenderTabPanel:!1,selectedIndex:null,defaultIndex:null,environment:null,disableUpDownKeys:!1},_.propTypes={},_.tabsRole="Tabs";var A=["children","className"];function R(){return R=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,A);return r.createElement("ul",R({},i,{className:(0,p.Z)(n),role:"tablist"}),t)},i}(r.Component);C.defaultProps={className:"react-tabs__tab-list"},C.propTypes={},C.tabsRole="TabList";var I=["children","className","disabled","disabledClassName","focus","id","panelId","selected","selectedClassName","tabIndex","tabRef"];function P(){return P=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(n,I);return r.createElement("li",P({},m,{className:(0,p.Z)(o,(e={},e[d]=u,e[a]=s,e)),ref:function(e){t.node=e,h&&h(e)},role:"tab",id:l,"aria-selected":u?"true":"false","aria-disabled":s?"true":"false","aria-controls":c,tabIndex:f||(u?"0":null),"data-rttab":!0}),i)},i}(r.Component);L.defaultProps={className:N,disabledClassName:N+"--disabled",focus:!1,id:null,panelId:null,selected:!1,selectedClassName:N+"--selected"},L.propTypes={},L.tabsRole="Tab";var $=["children","className","forceRender","id","selected","selectedClassName","tabId"];function M(){return M=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(t,$);return r.createElement("div",M({},u,{className:(0,p.Z)(i,(e={},e[l]=a,e)),role:"tabpanel",id:s,"aria-labelledby":c}),o||a?n:null)},i}(r.Component);z.defaultProps={className:F,forceRender:!1,selectedClassName:F+"--selected"},z.propTypes={},z.tabsRole="TabPanel"},72933:function(e,t,n){e.exports=function(){var e={295:function(e,t,n){"use strict";var r=n(15),i=n.n(r),o=n(645),s=n.n(o)()(i());s.push([e.id,".ps{overflow:hidden!important;overflow-anchor:none;-ms-overflow-style:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;height:15px;bottom:0;position:absolute}.ps__rail-y{display:none;opacity:0;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear;width:15px;right:0;position:absolute}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{display:block;background-color:transparent}.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y,.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y{opacity:.6}.ps .ps__rail-x:hover,.ps .ps__rail-y:hover,.ps .ps__rail-x:focus,.ps .ps__rail-y:focus,.ps .ps__rail-x.ps--clicking,.ps .ps__rail-y.ps--clicking{background-color:#eee;opacity:.9}.ps__thumb-x{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out;height:6px;bottom:2px;position:absolute}.ps__thumb-y{background-color:#aaa;border-radius:6px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px;right:2px;position:absolute}.ps__rail-x:hover>.ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x.ps--clicking .ps__thumb-x{background-color:#999;height:11px}.ps__rail-y:hover>.ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y.ps--clicking .ps__thumb-y{background-color:#999;width:11px}@supports (-ms-overflow-style: none){.ps{overflow:auto!important}}@media screen and (-ms-high-contrast: active),(-ms-high-contrast: none){.ps{overflow:auto!important}}\n","",{version:3,sources:["webpack://./node_modules/perfect-scrollbar/css/perfect-scrollbar.css"],names:[],mappings:"AAGA,IACE,yBAAA,CACA,oBAAA,CACA,uBAAA,CACA,iBAAA,CACA,qBAAA,CAMF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,WAAA,CAEA,QAAA,CAEA,iBAAA,CAGF,YACE,YAAA,CACA,SAAA,CACA,yDAAA,CACA,iEAAA,CACA,UAAA,CAEA,OAAA,CAEA,iBAAA,CAGF,oDAEE,aAAA,CACA,4BAAA,CAGF,oJAME,UAAA,CAGF,kJAME,qBAAA,CACA,UAAA,CAMF,aACE,qBAAA,CAnEF,iBAAA,CAqEE,6DAAA,CACA,qEAAA,CACA,UAAA,CAEA,UAAA,CAEA,iBAAA,CAGF,aACE,qBAAA,CA/EF,iBAAA,CAiFE,4DAAA,CACA,oEAAA,CACA,SAAA,CAEA,SAAA,CAEA,iBAAA,CAGF,oGAGE,qBAAA,CACA,WAAA,CAGF,oGAGE,qBAAA,CACA,UAAA,CAIF,qCACE,IACE,uBAAA,CAAA,CAIJ,wEACE,IACE,uBAAA,CAAA",sourcesContent:["/*\n * Container style\n */\n.ps {\n overflow: hidden !important;\n overflow-anchor: none;\n -ms-overflow-style: none;\n touch-action: auto;\n -ms-touch-action: auto;\n}\n\n/*\n * Scrollbar rail styles\n */\n.ps__rail-x {\n display: none;\n opacity: 0;\n transition: background-color .2s linear, opacity .2s linear;\n -webkit-transition: background-color .2s linear, opacity .2s linear;\n height: 15px;\n /* there must be 'bottom' or 'top' for ps__rail-x */\n bottom: 0px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__rail-y {\n display: none;\n opacity: 0;\n transition: background-color .2s linear, opacity .2s linear;\n -webkit-transition: background-color .2s linear, opacity .2s linear;\n width: 15px;\n /* there must be 'right' or 'left' for ps__rail-y */\n right: 0;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps--active-x > .ps__rail-x,\n.ps--active-y > .ps__rail-y {\n display: block;\n background-color: transparent;\n}\n\n.ps:hover > .ps__rail-x,\n.ps:hover > .ps__rail-y,\n.ps--focus > .ps__rail-x,\n.ps--focus > .ps__rail-y,\n.ps--scrolling-x > .ps__rail-x,\n.ps--scrolling-y > .ps__rail-y {\n opacity: 0.6;\n}\n\n.ps .ps__rail-x:hover,\n.ps .ps__rail-y:hover,\n.ps .ps__rail-x:focus,\n.ps .ps__rail-y:focus,\n.ps .ps__rail-x.ps--clicking,\n.ps .ps__rail-y.ps--clicking {\n background-color: #eee;\n opacity: 0.9;\n}\n\n/*\n * Scrollbar thumb styles\n */\n.ps__thumb-x {\n background-color: #aaa;\n border-radius: 6px;\n transition: background-color .2s linear, height .2s ease-in-out;\n -webkit-transition: background-color .2s linear, height .2s ease-in-out;\n height: 6px;\n /* there must be 'bottom' for ps__thumb-x */\n bottom: 2px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__thumb-y {\n background-color: #aaa;\n border-radius: 6px;\n transition: background-color .2s linear, width .2s ease-in-out;\n -webkit-transition: background-color .2s linear, width .2s ease-in-out;\n width: 6px;\n /* there must be 'right' for ps__thumb-y */\n right: 2px;\n /* please don't change 'position' */\n position: absolute;\n}\n\n.ps__rail-x:hover > .ps__thumb-x,\n.ps__rail-x:focus > .ps__thumb-x,\n.ps__rail-x.ps--clicking .ps__thumb-x {\n background-color: #999;\n height: 11px;\n}\n\n.ps__rail-y:hover > .ps__thumb-y,\n.ps__rail-y:focus > .ps__thumb-y,\n.ps__rail-y.ps--clicking .ps__thumb-y {\n background-color: #999;\n width: 11px;\n}\n\n/* MS supports */\n@supports (-ms-overflow-style: none) {\n .ps {\n overflow: auto !important;\n }\n}\n\n@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .ps {\n overflow: auto !important;\n }\n}\n"],sourceRoot:""}]),t.Z=s},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);nnew Promise(((r,i)=>{var o=e=>{try{a(n.next(e))}catch(e){i(e)}},s=e=>{try{a(n.throw(e))}catch(e){i(e)}},a=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,s);a((n=n.apply(e,t)).next())}));class s{constructor(){this.add=d,this.done=f,this.search=v,this.toJS=h,this.load=g,this.dispose=y,this.fromExternalJS=m}}let a,l,c,u=[];function p(){a=new i.Builder,a.field("title"),a.field("description"),a.ref("ref"),a.pipeline.add(i.trimmer,i.stopWordFilter,i.stemmer),c=new Promise((e=>{l=e}))}function d(e,t,n){const r=u.push(n)-1,i={title:e.toLowerCase(),description:t.toLowerCase(),ref:r};a.add(i)}function f(){return o(this,null,(function*(){l(a.build())}))}function h(){return o(this,null,(function*(){return{store:u,index:(yield c).toJSON()}}))}function m(e,t){return o(this,null,(function*(){try{if(importScripts(e),!self[t])throw new Error("Broken index file format");g(self[t])}catch(e){console.error("Failed to load search index: "+e.message)}}))}function g(e){return o(this,null,(function*(){u=e.store,l(i.Index.load(e.index))}))}function y(){return o(this,null,(function*(){u=[],p()}))}function v(e,t=0){return o(this,null,(function*(){if(0===e.trim().length)return[];let n=(yield c).query((t=>{e.trim().toLowerCase().split(/\s+/).forEach((e=>{if(1===e.length)return;const n=(e=>{const t=i.trimmer(new i.Token(e,{}));return"*"+i.stemmer(t)+"*"})(e);t.term(n,{})}))}));return t>0&&(n=n.slice(0,t)),n.map((e=>({meta:u[e.ref],score:e.score})))}))}i.tokenizer.separator=/\s+/,p()},342:function(e,t,n){"use strict";const r=n(376),i={}.NODE_DISABLE_COLORS?{red:"",yellow:"",green:"",normal:""}:{red:"\x1b[31m",yellow:"\x1b[33;1m",green:"\x1b[32m",normal:"\x1b[0m"};function o(e,t){function n(e,t){return r.stringify(e)===r.stringify(Object.assign({},e,t))}return n(e,t)&&n(t,e)}function s(e){let t=(e=e.replace("[]","Array")).split("/");return t[0]=t[0].replace(/[^A-Za-z0-9_\-\.]+|\s+/gm,"_"),t.join("/")}String.prototype.toCamelCase=function(){return this.toLowerCase().replace(/[-_ \/\.](.)/g,(function(e,t){return t.toUpperCase()}))},e.exports={colour:i,uniqueOnly:function(e,t,n){return n.indexOf(e)===t},hasDuplicates:function(e){return new Set(e).size!==e.length},allSame:function(e){return new Set(e).size<=1},distinctArray:function(e){return e.length===function(e){let t=[];for(let n of e)t.find((function(e,t,r){return o(e,n)}))||t.push(n);return t}(e).length},firstDupe:function(e){return e.find((function(t,n,r){return e.indexOf(t)1&&console.warn("Replacing with",t),m++}}else{let i=u(l(t,e[n]));if(s.verbose>1&&console.warn((!1===i?f.colour.red:f.colour.green)+"Fragment resolution",e[n],f.colour.normal),!1===i){if(r.parent[r.pkey]={},s.fatal){let t=new Error("Fragment $ref resolution failed "+e[n]);if(!s.promise)throw t;s.promise.reject(t)}}else m++,r.parent[r.pkey]=i,h[e[n]]=r.path.replace("/%24ref","")}else if(p.protocol){let t=o.resolve(i,e[n]).toString();s.verbose>1&&console.warn(f.colour.yellow+"Rewriting external url ref",e[n],"as",t,f.colour.normal),e["x-miro"]=e[n],s.externalRefs[e[n]]&&(s.externalRefs[t]||(s.externalRefs[t]=s.externalRefs[e[n]]),s.externalRefs[t].failed=s.externalRefs[e[n]].failed),e[n]=t}else if(!e["x-miro"]){let t=o.resolve(i,e[n]).toString(),r=!1;s.externalRefs[e[n]]&&(r=s.externalRefs[e[n]].failed),r||(s.verbose>1&&console.warn(f.colour.yellow+"Rewriting external ref",e[n],"as",t,f.colour.normal),e["x-miro"]=e[n],e[n]=t)}}));return c(e,{},(function(e,t,n){d(e,t)&&void 0!==e.$fixed&&delete e.$fixed})),s.verbose>1&&console.warn("Finished fragment resolution"),e}function m(e,t){if(!t.filters||!t.filters.length)return e;for(let n of t.filters)e=n(e,t);return e}function g(e,t,n,s){var c=o.parse(n.source),p=n.source.split("\\").join("/").split("/");p.pop()||p.pop();let d="",f=t.split("#");f.length>1&&(d="#"+f[1],t=f[0]),p=p.join("/");let g=(y=o.parse(t).protocol,v=c.protocol,y&&y.length>2?y:v&&v.length>2?v:"file:");var y,v;let b;if(b="file:"===g?i.resolve(p?p+"/":"",t):o.resolve(p?p+"/":"",t),n.cache[b]){n.verbose&&console.warn("CACHED",b,d);let e=u(n.cache[b]),r=n.externalRef=e;if(d&&(r=l(r,d),!1===r&&(r={},n.fatal))){let e=new Error("Cached $ref resolution failed "+b+d);if(!n.promise)throw e;n.promise.reject(e)}return r=h(r,e,t,d,b,n),r=m(r,n),s(u(r),b,n),Promise.resolve(r)}if(n.verbose&&console.warn("GET",b,d),n.handlers&&n.handlers[g])return n.handlers[g](p,t,d,n).then((function(e){return n.externalRef=e,e=m(e,n),n.cache[b]=e,s(e,b,n),e})).catch((function(e){throw n.verbose&&console.warn(e),e}));if(g&&g.startsWith("http")){const e=Object.assign({},n.fetchOptions,{agent:n.agent});return n.fetch(b,e).then((function(e){if(200!==e.status){if(n.ignoreIOErrors)return n.verbose&&console.warn("FAILED",t),n.externalRefs[t].failed=!0,'{"$ref":"'+t+'"}';throw new Error(`Received status code ${e.status}: ${b}`)}return e.text()})).then((function(e){try{let r=a.parse(e,{schema:"core",prettyErrors:!0});if(e=n.externalRef=r,n.cache[b]=u(e),d&&!1===(e=l(e,d))&&(e={},n.fatal)){let e=new Error("Remote $ref resolution failed "+b+d);if(!n.promise)throw e;n.promise.reject(e)}e=m(e=h(e,r,t,d,b,n),n)}catch(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}return s(e,b,n),e})).catch((function(e){if(n.verbose&&console.warn(e),n.cache[b]={},!n.promise||!n.fatal)throw e;n.promise.reject(e)}))}{const e='{"$ref":"'+t+'"}';return function(e,t,n,i,o){return new Promise((function(s,a){r.readFile(e,t,(function(e,t){e?n.ignoreIOErrors&&o?(n.verbose&&console.warn("FAILED",i),n.externalRefs[i].failed=!0,s(o)):a(e):s(t)}))}))}(b,n.encoding||"utf8",n,t,e).then((function(e){try{let r=a.parse(e,{schema:"core",prettyErrors:!0});if(e=n.externalRef=r,n.cache[b]=u(e),d&&!1===(e=l(e,d))&&(e={},n.fatal)){let e=new Error("File $ref resolution failed "+b+d);if(!n.promise)throw e;n.promise.reject(e)}e=m(e=h(e,r,t,d,b,n),n)}catch(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}return s(e,b,n),e})).catch((function(e){if(n.verbose&&console.warn(e),!n.promise||!n.fatal)throw e;n.promise.reject(e)}))}}function y(e){return new Promise((function(t,n){(function(e){return new Promise((function(t,n){function r(t,n,r){if(t[n]&&d(t[n],"$ref")){let o=t[n].$ref;if(!o.startsWith("#")){let s="";if(!i[o]){let t=Object.keys(i).find((function(e,t,n){return o.startsWith(e+"/")}));t&&(e.verbose&&console.warn("Found potential subschema at",t),s="/"+(o.split("#")[1]||"").replace(t.split("#")[1]||""),s=s.split("/undefined").join(""),o=t)}if(i[o]||(i[o]={resolved:!1,paths:[],extras:{},description:t[n].description}),i[o].resolved)if(i[o].failed);else if(e.rewriteRefs){let r=i[o].resolvedAt;e.verbose>1&&console.warn("Rewriting ref",o,r),t[n]["x-miro"]=o,t[n].$ref=r+s}else t[n]=u(i[o].data);else i[o].paths.push(r.path),i[o].extras[r.path]=s}}}let i=e.externalRefs;if(e.resolver.depth>0&&e.source===e.resolver.base)return t(i);c(e.openapi.definitions,{identityDetection:!0,path:"#/definitions"},r),c(e.openapi.components,{identityDetection:!0,path:"#/components"},r),c(e.openapi,{identityDetection:!0},r),t(i)}))})(e).then((function(t){for(let n in t)if(!t[n].resolved){let r=e.resolver.depth;r>0&&r++,e.resolver.actions[r].push((function(){return g(e.openapi,n,e,(function(e,r,i){if(!t[n].resolved){let o={};o.context=t[n],o.$ref=n,o.original=u(e),o.updated=e,o.source=r,i.externals.push(o),t[n].resolved=!0}let o=Object.assign({},i,{source:"",resolver:{actions:i.resolver.actions,depth:i.resolver.actions.length-1,base:i.resolver.base}});i.patch&&t[n].description&&!e.description&&"object"==typeof e&&(e.description=t[n].description),t[n].data=e;let s=(a=t[n].paths,[...new Set(a)]);var a;s=s.sort((function(e,t){const n=e.startsWith("#/components/")||e.startsWith("#/definitions/"),r=t.startsWith("#/components/")||t.startsWith("#/definitions/");return n&&!r?-1:r&&!n?1:0}));for(let c of s)if(t[n].resolvedAt&&c!==t[n].resolvedAt&&c.indexOf("x-ms-examples/")<0)i.verbose>1&&console.warn("Creating pointer to data at",c),l(i.openapi,c,{$ref:t[n].resolvedAt+t[n].extras[c],"x-miro":n+t[n].extras[c]});else{t[n].resolvedAt?i.verbose>1&&console.warn("Avoiding circular reference"):(t[n].resolvedAt=c,i.verbose>1&&console.warn("Creating initial clone of data at",c));let r=u(e);l(i.openapi,c,r)}0===i.resolver.actions[o.resolver.depth].length&&i.resolver.actions[o.resolver.depth].push((function(){return y(o)}))}))}))}})).catch((function(t){e.verbose&&console.warn(t),n(t)}));let r={options:e};r.actions=e.resolver.actions[e.resolver.depth],t(r)}))}function v(e,t,n){e.resolver.actions.push([]),y(e).then((function(r){var i;(i=r.actions,i.reduce(((e,t)=>e.then((e=>t().then(Array.prototype.concat.bind(e))))),Promise.resolve([]))).then((function(){if(e.resolver.depth>=e.resolver.actions.length)return console.warn("Ran off the end of resolver actions"),t(!0);e.resolver.depth++,e.resolver.actions[e.resolver.depth].length?setTimeout((function(){v(r.options,t,n)}),0):(e.verbose>1&&console.warn(f.colour.yellow+"Finished external resolution!",f.colour.normal),e.resolveInternal&&(e.verbose>1&&console.warn(f.colour.yellow+"Starting internal resolution!",f.colour.normal),e.openapi=p(e.openapi,e.original,{verbose:e.verbose-1}),e.verbose>1&&console.warn(f.colour.yellow+"Finished internal resolution!",f.colour.normal)),c(e.openapi,{},(function(t,n,r){d(t,n)&&(e.preserveMiro||delete t["x-miro"])})),t(e))})).catch((function(t){e.verbose&&console.warn(t),n(t)}))})).catch((function(t){e.verbose&&console.warn(t),n(t)}))}function b(e){if(e.cache||(e.cache={}),e.fetch||(e.fetch=s),e.source){let t=o.parse(e.source);(!t.protocol||t.protocol.length<=2)&&(e.source=i.resolve(e.source))}e.externals=[],e.externalRefs={},e.rewriteRefs=!0,e.resolver={},e.resolver.depth=0,e.resolver.base=e.source,e.resolver.actions=[[]]}e.exports={optionalResolve:function(e){return b(e),new Promise((function(t,n){e.resolve?v(e,t,n):t(e)}))},resolve:function(e,t,n){return n||(n={}),n.openapi=e,n.source=t,n.resolve=!0,b(n),new Promise((function(e,t){v(n,e,t)}))}}},804:function(e){"use strict";function t(){return{depth:0,seen:new WeakMap,top:!0,combine:!1,allowRefSiblings:!1}}e.exports={getDefaultState:t,walkSchema:function e(n,r,i,o){if(void 0===i.depth&&(i=t()),null==n)return n;if(void 0!==n.$ref){let e={$ref:n.$ref};return i.allowRefSiblings&&n.description&&(e.description=n.description),o(e,r,i),e}if(i.combine&&(n.allOf&&Array.isArray(n.allOf)&&1===n.allOf.length&&delete(n=Object.assign({},n.allOf[0],n)).allOf,n.anyOf&&Array.isArray(n.anyOf)&&1===n.anyOf.length&&delete(n=Object.assign({},n.anyOf[0],n)).anyOf,n.oneOf&&Array.isArray(n.oneOf)&&1===n.oneOf.length&&delete(n=Object.assign({},n.oneOf[0],n)).oneOf),o(n,r,i),i.seen.has(n))return n;if("object"==typeof n&&null!==n&&i.seen.set(n,!0),i.top=!1,i.depth++,void 0!==n.items&&(i.property="items",e(n.items,n,i,o)),n.additionalItems&&"object"==typeof n.additionalItems&&(i.property="additionalItems",e(n.additionalItems,n,i,o)),n.additionalProperties&&"object"==typeof n.additionalProperties&&(i.property="additionalProperties",e(n.additionalProperties,n,i,o)),n.properties)for(let t in n.properties){let r=n.properties[t];i.property="properties/"+t,e(r,n,i,o)}if(n.patternProperties)for(let t in n.patternProperties){let r=n.patternProperties[t];i.property="patternProperties/"+t,e(r,n,i,o)}if(n.allOf)for(let t in n.allOf){let r=n.allOf[t];i.property="allOf/"+t,e(r,n,i,o)}if(n.anyOf)for(let t in n.anyOf){let r=n.anyOf[t];i.property="anyOf/"+t,e(r,n,i,o)}if(n.oneOf)for(let t in n.oneOf){let r=n.oneOf[t];i.property="oneOf/"+t,e(r,n,i,o)}return n.not&&(i.property="not",e(n.not,n,i,o)),i.depth--,n}}},470:function(e){"use strict";function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,o=-1,s=0,a=0;a<=e.length;++a){if(a2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),o=a,s=0;continue}}else if(2===r.length||1===r.length){r="",i=0,o=a,s=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(o+1,a):r=e.slice(o+1,a),i=a-o-1;o=a,s=0}else 46===n&&-1!==s?++s:s=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(void 0===e&&(e=process.cwd()),s=e),t(s),0!==s.length&&(r=s+"/"+r,i=47===s.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;ic){if(47===n.charCodeAt(a+p))return n.slice(a+p+1);if(0===p)return n.slice(a+p)}else s>c&&(47===e.charCodeAt(i+p)?u=p:0===p&&(u=0));break}var d=e.charCodeAt(i+p);if(d!==n.charCodeAt(a+p))break;47===d&&(u=p)}var f="";for(p=i+u+1;p<=o;++p)p!==o&&47!==e.charCodeAt(p)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(a+u):(a+=u,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,o=!0,s=e.length-1;s>=1;--s)if(47===(n=e.charCodeAt(s))){if(!o){i=s;break}}else o=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,o=-1,s=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var a=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!s){i=r+1;break}}else-1===l&&(s=!1,l=r+1),a>=0&&(c===n.charCodeAt(a)?-1==--a&&(o=r):(a=-1,o=l))}return i===o?o=l:-1===o&&(o=e.length),e.slice(i,o)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!s){i=r+1;break}}else-1===o&&(s=!1,o=r+1);return-1===o?"":e.slice(i,o)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,o=!0,s=0,a=e.length-1;a>=0;--a){var l=e.charCodeAt(a);if(47!==l)-1===i&&(o=!1,i=a+1),46===l?-1===n?n=a:1!==s&&(s=1):-1!==n&&(s=-1);else if(!o){r=a+1;break}}return-1===n||-1===i||0===s||1===s&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),o=47===i;o?(n.root="/",r=1):r=0;for(var s=-1,a=0,l=-1,c=!0,u=e.length-1,p=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===s?s=u:1!==p&&(p=1):-1!==s&&(p=-1);else if(!c){a=u+1;break}return-1===s||-1===l||0===p||1===p&&s===l-1&&s===a+1?-1!==l&&(n.base=n.name=0===a&&o?e.slice(1,l):e.slice(a,l)):(0===a&&o?(n.name=e.slice(1,s),n.base=e.slice(1,l)):(n.name=e.slice(a,s),n.base=e.slice(a,l)),n.ext=e.slice(s,l)),a>0?n.dir=e.slice(0,a-1):o&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},683:function(e){"use strict";e.exports={nop:function(e){return e},clone:function(e){return JSON.parse(JSON.stringify(e))},shallowClone:function(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},deepClone:function e(t){let n=Array.isArray(t)?[]:{};for(let r in t)(t.hasOwnProperty(r)||Array.isArray(t))&&(n[r]="object"==typeof t[r]?e(t[r]):t[r]);return n},fastClone:function(e){return Object.assign({},e)},circularClone:function e(t,n){if(n||(n=new WeakMap),Object(t)!==t||t instanceof Function)return t;if(n.has(t))return n.get(t);try{var r=new t.constructor}catch(e){r=Object.create(Object.getPrototypeOf(t))}return n.set(t,r),Object.assign(r,...Object.keys(t).map((r=>({[r]:e(t[r],n)}))))}}},593:function(e,t,n){"use strict";const r=n(401).recurse,i=n(683).shallowClone,o=n(53).jptr,s=n(592).isRef;e.exports={dereference:function e(t,n,a){a||(a={}),a.cache||(a.cache={}),a.state||(a.state={}),a.state.identityDetection=!0,a.depth=a.depth?a.depth+1:1;let l=a.depth>1?t:i(t),c={data:l},u=a.depth>1?n:i(n);a.master||(a.master=l);let p=function(e){return e&&e.verbose?{warn:function(){var e=Array.prototype.slice.call(arguments);console.warn.apply(console,e)}}:{warn:function(){}}}(a),d=1;for(;d>0;)d=0,r(c,a.state,(function(t,n,r){if(s(t,n)){let i=t[n];if(d++,a.cache[i]){let e=a.cache[i];if(e.resolved)p.warn("Patching %s for %s",i,e.path),r.parent[r.pkey]=e.data,a.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[r.pkey][a.$ref]=i);else{if(i===e.path)throw new Error(`Tight circle at ${e.path}`);p.warn("Unresolved ref"),r.parent[r.pkey]=o(e.source,e.path),!1===r.parent[r.pkey]&&(r.parent[r.pkey]=o(e.source,e.key)),a.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[a.$ref]=i)}}else{let t={};t.path=r.path.split("/$ref")[0],t.key=i,p.warn("Dereffing %s at %s",i,t.path),t.source=u,t.data=o(t.source,t.key),!1===t.data&&(t.data=o(a.master,t.key),t.source=a.master),!1===t.data&&p.warn("Missing $ref target",t.key),a.cache[i]=t,t.data=r.parent[r.pkey]=e(o(t.source,t.key),t.source,a),a.$ref&&"object"==typeof r.parent[r.pkey]&&(r.parent[r.pkey][a.$ref]=i),t.resolved=!0}}}));return c.data}}},592:function(e){"use strict";e.exports={isRef:function(e,t){return"$ref"===t&&!!e&&"string"==typeof e[t]}}},53:function(e){"use strict";function t(e){return e.replace(/\~1/g,"/").replace(/~0/g,"~")}e.exports={jptr:function(e,n,r){if(void 0===e)return!1;if(!n||"string"!=typeof n||"#"===n)return void 0!==r?r:e;if(n.indexOf("#")>=0){let e=n.split("#");if(e[0])return!1;n=e[1],n=decodeURIComponent(n.slice(1).split("+").join(" "))}n.startsWith("/")&&(n=n.slice(1));let i=n.split("/");for(let o=0;o0?i[o-1]:"",-1!=s||e&&e.hasOwnProperty(i[o]))if(s>=0)n&&(e[s]=r),e=e[s];else{if(-2===s)return n?(Array.isArray(e)&&e.push(r),r):void 0;n&&(e[i[o]]=r),e=e[i[o]]}else{if(void 0===r||"object"!=typeof e||Array.isArray(e))return!1;e[i[o]]=n?r:"0"===i[o+1]||"-"===i[o+1]?[]:{},e=e[i[o]]}}return e},jpescape:function(e){return e.replace(/\~/g,"~0").replace(/\//g,"~1")},jpunescape:t}},401:function(e,t,n){"use strict";const r=n(53).jpescape;e.exports={recurse:function e(t,n,i){if(n||(n={depth:0}),n.depth||(n=Object.assign({},{path:"#",depth:0,pkey:"",parent:{},payload:{},seen:new WeakMap,identity:!1,identityDetection:!1},n)),"object"!=typeof t)return;let o=n.path;for(let s in t){if(n.key=s,n.path=n.path+"/"+encodeURIComponent(r(s)),n.identityPath=n.seen.get(t[s]),n.identity=void 0!==n.identityPath,t.hasOwnProperty(s)&&i(t,s,n),"object"==typeof t[s]&&!n.identity){n.identityDetection&&!Array.isArray(t[s])&&null!==t[s]&&n.seen.set(t[s],n.path);let r={};r.parent=t,r.path=n.path,r.depth=n.depth?n.depth+1:1,r.pkey=s,r.payload=n.payload,r.seen=n.seen,r.identity=!1,r.identityDetection=n.identityDetection,e(t[s],r,i)}n.path=o}}}},433:function(e,t,n){"use strict";n.r(t);var r=n(379),i=n.n(r),o=n(795),s=n.n(o),a=n(569),l=n.n(a),c=n(565),u=n.n(c),p=n(216),d=n.n(p),f=n(589),h=n.n(f),m=n(295),g={};g.styleTagTransform=h(),g.setAttributes=u(),g.insert=l().bind(null,"head"),g.domAPI=s(),g.insertStyleElement=d(),i()(m.Z,g),t.default=m.Z&&m.Z.locals?m.Z.locals:void 0},379:function(e){"use strict";var t=[];function n(e){for(var n=-1,r=0;r0?" ".concat(n.layer):""," {")),r+=n.css,i&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},925:function(e,t,n){"use strict";const r=n(45),i=n(416),o=(n(470),n(766)),s=n(416),a=n(66),l=n(53),c=l.jptr,u=n(592).isRef,p=n(683).clone,d=n(683).circularClone,f=n(401).recurse,h=n(856),m=n(804),g=n(342),y=n(711).statusCodes,v=n(109).i8,b="3.0.0";let x;class w extends Error{constructor(e){super(e),this.name="S2OError"}}function k(e,t){let n=new w(e);if(n.options=t,!t.promise)throw n;t.promise.reject(n)}function O(e,t,n){n.warnOnly?t[n.warnProperty||"x-s2o-warning"]=e:k(e,n)}function E(e,t){m.walkSchema(e,{},{},(function(e,n,r){!function(e,t){if(e["x-required"]&&Array.isArray(e["x-required"])&&(e.required||(e.required=[]),e.required=e.required.concat(e["x-required"]),delete e["x-required"]),e["x-anyOf"]&&(e.anyOf=e["x-anyOf"],delete e["x-anyOf"]),e["x-oneOf"]&&(e.oneOf=e["x-oneOf"],delete e["x-oneOf"]),e["x-not"]&&(e.not=e["x-not"],delete e["x-not"]),"boolean"==typeof e["x-nullable"]&&(e.nullable=e["x-nullable"],delete e["x-nullable"]),"object"==typeof e["x-discriminator"]&&"string"==typeof e["x-discriminator"].propertyName){e.discriminator=e["x-discriminator"],delete e["x-discriminator"];for(let t in e.discriminator.mapping){let n=e.discriminator.mapping[t];n.startsWith("#/definitions/")&&(e.discriminator.mapping[t]=n.replace("#/definitions/","#/components/schemas/"))}}}(e),function(e,t,n){if(e.nullable&&n.patches++,e.discriminator&&"string"==typeof e.discriminator&&(e.discriminator={propertyName:e.discriminator}),e.items&&Array.isArray(e.items)&&(0===e.items.length?e.items={}:1===e.items.length?e.items=e.items[0]:e.items={anyOf:e.items}),e.type&&Array.isArray(e.type))if(n.patch){if(n.patches++,0===e.type.length)delete e.type;else{e.oneOf||(e.oneOf=[]);for(let t of e.type){let n={};if("null"===t)e.nullable=!0;else{n.type=t;for(let t of g.arrayProperties)void 0!==e.prop&&(n[t]=e[t],delete e[t])}n.type&&e.oneOf.push(n)}delete e.type,0===e.oneOf.length?delete e.oneOf:e.oneOf.length<2&&(e.type=e.oneOf[0].type,Object.keys(e.oneOf[0]).length>1&&O("Lost properties from oneOf",e,n),delete e.oneOf)}e.type&&Array.isArray(e.type)&&1===e.type.length&&(e.type=e.type[0])}else k("(Patchable) schema type must not be an array",n);e.type&&"null"===e.type&&(delete e.type,e.nullable=!0),"array"!==e.type||e.items||(e.items={}),"file"===e.type&&(e.type="string",e.format="binary"),"boolean"==typeof e.required&&(e.required&&e.name&&(void 0===t.required&&(t.required=[]),Array.isArray(t.required)&&t.required.push(e.name)),delete e.required),e.xml&&"string"==typeof e.xml.namespace&&(e.xml.namespace||delete e.xml.namespace),void 0!==e.allowEmptyValue&&(n.patches++,delete e.allowEmptyValue)}(e,n,t)}))}function S(e,t,n){let r=n.payload.options;if(u(e,t)){if(e[t].startsWith("#/components/"));else if("#/consumes"===e[t])delete e[t],n.parent[n.pkey]=p(r.openapi.consumes);else if("#/produces"===e[t])delete e[t],n.parent[n.pkey]=p(r.openapi.produces);else if(e[t].startsWith("#/definitions/")){let n=e[t].replace("#/definitions/","").split("/");const i=l.jpunescape(n[0]);let o=x.schemas[decodeURIComponent(i)];o?n[0]=o:O("Could not resolve reference "+e[t],e,r),e[t]="#/components/schemas/"+n.join("/")}else if(e[t].startsWith("#/parameters/"))e[t]="#/components/parameters/"+g.sanitise(e[t].replace("#/parameters/",""));else if(e[t].startsWith("#/responses/"))e[t]="#/components/responses/"+g.sanitise(e[t].replace("#/responses/",""));else if(e[t].startsWith("#")){let n=p(l.jptr(r.openapi,e[t]));if(!1===n)O("direct $ref not found "+e[t],e,r);else if(r.refmap[e[t]])e[t]=r.refmap[e[t]];else{let o=e[t];o=o.replace("/properties/headers/",""),o=o.replace("/properties/responses/",""),o=o.replace("/properties/parameters/",""),o=o.replace("/properties/schemas/","");let s="schemas",a=o.lastIndexOf("/schema");if(s=o.indexOf("/headers/")>a?"headers":o.indexOf("/responses/")>a?"responses":o.indexOf("/example")>a?"examples":o.indexOf("/x-")>a?"extensions":o.indexOf("/parameters/")>a?"parameters":"schemas","schemas"===s&&E(n,r),"responses"!==s&&"extensions"!==s){let o=s.substr(0,s.length-1);"parameter"===o&&n.name&&n.name===g.sanitise(n.name)&&(o=encodeURIComponent(n.name));let a=1;for(e["x-miro"]&&(i=(i=e["x-miro"]).indexOf("#")>=0?i.split("#")[1].split("/").pop():i.split("/").pop().split(".")[0],o=encodeURIComponent(g.sanitise(i)),a="");l.jptr(r.openapi,"#/components/"+s+"/"+o+a);)a=""===a?2:++a;let c="#/components/"+s+"/"+o+a,u="";"examples"===s&&(n={value:n},u="/value"),l.jptr(r.openapi,c,n),r.refmap[e[t]]=c+u,e[t]=c+u}}}if(delete e["x-miro"],Object.keys(e).length>1){const i=e[t],o=n.path.indexOf("/schema")>=0;"preserve"===r.refSiblings||(o&&"allOf"===r.refSiblings?(delete e.$ref,n.parent[n.pkey]={allOf:[{$ref:i},e]}):n.parent[n.pkey]={$ref:i})}}var i;if("x-ms-odata"===t&&"string"==typeof e[t]&&e[t].startsWith("#/")){let n=e[t].replace("#/definitions/","").replace("#/components/schemas/","").split("/"),i=x.schemas[decodeURIComponent(n[0])];i?n[0]=i:O("Could not resolve reference "+e[t],e,r),e[t]="#/components/schemas/"+n.join("/")}}function _(e){for(let t in e)for(let n in e[t]){let r=g.sanitise(n);n!==r&&(e[t][r]=e[t][n],delete e[t][n])}}function A(e,t){if("basic"===e.type&&(e.type="http",e.scheme="basic"),"oauth2"===e.type){let n={},r=e.flow;"application"===e.flow&&(r="clientCredentials"),"accessCode"===e.flow&&(r="authorizationCode"),void 0!==e.authorizationUrl&&(n.authorizationUrl=e.authorizationUrl.split("?")[0].trim()||"/"),"string"==typeof e.tokenUrl&&(n.tokenUrl=e.tokenUrl.split("?")[0].trim()||"/"),n.scopes=e.scopes||{},e.flows={},e.flows[r]=n,delete e.flow,delete e.authorizationUrl,delete e.tokenUrl,delete e.scopes,void 0!==e.name&&(t.patch?(t.patches++,delete e.name):k("(Patchable) oauth2 securitySchemes should not have name property",t))}}function R(e){return e&&!e["x-s2o-delete"]}function T(e,t){if(e.$ref)e.$ref=e.$ref.replace("#/responses/","#/components/responses/");else{e.type&&!e.schema&&(e.schema={}),e.type&&(e.schema.type=e.type),e.items&&"array"!==e.items.type&&(e.items.collectionFormat!==e.collectionFormat&&O("Nested collectionFormats are not supported",e,t),delete e.items.collectionFormat),"array"===e.type?("ssv"===e.collectionFormat?O("collectionFormat:ssv is no longer supported for headers",e,t):"pipes"===e.collectionFormat?O("collectionFormat:pipes is no longer supported for headers",e,t):"multi"===e.collectionFormat?e.explode=!0:"tsv"===e.collectionFormat?(O("collectionFormat:tsv is no longer supported",e,t),e["x-collectionFormat"]="tsv"):e.style="simple",delete e.collectionFormat):e.collectionFormat&&(t.patch?(t.patches++,delete e.collectionFormat):k("(Patchable) collectionFormat is only applicable to header.type array",t)),delete e.type;for(let t of g.parameterTypeProperties)void 0!==e[t]&&(e.schema[t]=e[t],delete e[t]);for(let t of g.arrayProperties)void 0!==e[t]&&(e.schema[t]=e[t],delete e[t])}}function C(e,t){if(e.$ref.indexOf("#/parameters/")>=0){let t=e.$ref.split("#/parameters/");e.$ref=t[0]+"#/components/parameters/"+g.sanitise(t[1])}e.$ref.indexOf("#/definitions/")>=0&&O("Definition used as parameter",e,t)}function I(e,t,n,r,i,o,s){let a,l={},u=!0;if(t&&t.consumes&&"string"==typeof t.consumes){if(!s.patch)return k("(Patchable) operation.consumes must be an array",s);s.patches++,t.consumes=[t.consumes]}Array.isArray(o.consumes)||delete o.consumes;let d=((t?t.consumes:null)||o.consumes||[]).filter(g.uniqueOnly);if(e&&e.$ref&&"string"==typeof e.$ref){C(e,s);let t=decodeURIComponent(e.$ref.replace("#/components/parameters/","")),n=!1,r=o.components.parameters[t];if(r&&!r["x-s2o-delete"]||!e.$ref.startsWith("#/")||(e["x-s2o-delete"]=!0,n=!0),n){let t=e.$ref,n=c(o,e.$ref);!n&&t.startsWith("#/")?O("Could not resolve reference "+t,e,s):n&&(e=n)}}if(e&&(e.name||e.in)){"boolean"==typeof e["x-deprecated"]&&(e.deprecated=e["x-deprecated"],delete e["x-deprecated"]),void 0!==e["x-example"]&&(e.example=e["x-example"],delete e["x-example"]),"body"===e.in||e.type||(s.patch?(s.patches++,e.type="string"):k("(Patchable) parameter.type is mandatory for non-body parameters",s)),e.type&&"object"==typeof e.type&&e.type.$ref&&(e.type=c(o,e.type.$ref)),"file"===e.type&&(e["x-s2o-originalType"]=e.type,a=e.type),e.description&&"object"==typeof e.description&&e.description.$ref&&(e.description=c(o,e.description.$ref)),null===e.description&&delete e.description;let t=e.collectionFormat;if("array"!==e.type||t||(t="csv"),t&&("array"!==e.type&&(s.patch?(s.patches++,delete e.collectionFormat):k("(Patchable) collectionFormat is only applicable to param.type array",s)),"csv"!==t||"query"!==e.in&&"cookie"!==e.in||(e.style="form",e.explode=!1),"csv"!==t||"path"!==e.in&&"header"!==e.in||(e.style="simple"),"ssv"===t&&("query"===e.in?e.style="spaceDelimited":O("collectionFormat:ssv is no longer supported except for in:query parameters",e,s)),"pipes"===t&&("query"===e.in?e.style="pipeDelimited":O("collectionFormat:pipes is no longer supported except for in:query parameters",e,s)),"multi"===t&&(e.explode=!0),"tsv"===t&&(O("collectionFormat:tsv is no longer supported",e,s),e["x-collectionFormat"]="tsv"),delete e.collectionFormat),e.type&&"body"!==e.type&&"formData"!==e.in)if(e.items&&e.schema)O("parameter has array,items and schema",e,s);else{e.schema&&s.patches++,e.schema&&"object"==typeof e.schema||(e.schema={}),e.schema.type=e.type,e.items&&(e.schema.items=e.items,delete e.items,f(e.schema.items,null,(function(n,r,i){"collectionFormat"===r&&"string"==typeof n[r]&&(t&&n[r]!==t&&O("Nested collectionFormats are not supported",e,s),delete n[r])})));for(let t of g.parameterTypeProperties)void 0!==e[t]&&(e.schema[t]=e[t]),delete e[t]}e.schema&&E(e.schema,s),e["x-ms-skip-url-encoding"]&&"query"===e.in&&(e.allowReserved=!0,delete e["x-ms-skip-url-encoding"])}if(e&&"formData"===e.in){u=!1,l.content={};let t="application/x-www-form-urlencoded";if(d.length&&d.indexOf("multipart/form-data")>=0&&(t="multipart/form-data"),l.content[t]={},e.schema)l.content[t].schema=e.schema,e.schema.$ref&&(l["x-s2o-name"]=decodeURIComponent(e.schema.$ref.replace("#/components/schemas/","")));else{l.content[t].schema={},l.content[t].schema.type="object",l.content[t].schema.properties={},l.content[t].schema.properties[e.name]={};let n=l.content[t].schema,r=l.content[t].schema.properties[e.name];e.description&&(r.description=e.description),e.example&&(r.example=e.example),e.type&&(r.type=e.type);for(let t of g.parameterTypeProperties)void 0!==e[t]&&(r[t]=e[t]);!0===e.required&&(n.required||(n.required=[]),n.required.push(e.name),l.required=!0),void 0!==e.default&&(r.default=e.default),r.properties&&(r.properties=e.properties),e.allOf&&(r.allOf=e.allOf),"array"===e.type&&e.items&&(r.items=e.items,r.items.collectionFormat&&delete r.items.collectionFormat),"file"!==a&&"file"!==e["x-s2o-originalType"]||(r.type="string",r.format="binary"),P(e,r)}}else e&&"file"===e.type&&(e.required&&(l.required=e.required),l.content={},l.content["application/octet-stream"]={},l.content["application/octet-stream"].schema={},l.content["application/octet-stream"].schema.type="string",l.content["application/octet-stream"].schema.format="binary",P(e,l));if(e&&"body"===e.in){l.content={},e.name&&(l["x-s2o-name"]=(t&&t.operationId?g.sanitiseAll(t.operationId):"")+("_"+e.name).toCamelCase()),e.description&&(l.description=e.description),e.required&&(l.required=e.required),t&&s.rbname&&e.name&&(t[s.rbname]=e.name),e.schema&&e.schema.$ref?l["x-s2o-name"]=decodeURIComponent(e.schema.$ref.replace("#/components/schemas/","")):e.schema&&"array"===e.schema.type&&e.schema.items&&e.schema.items.$ref&&(l["x-s2o-name"]=decodeURIComponent(e.schema.items.$ref.replace("#/components/schemas/",""))+"Array"),d.length||d.push("application/json");for(let t of d)l.content[t]={},l.content[t].schema=p(e.schema||{}),E(l.content[t].schema,s);P(e,l)}if(Object.keys(l).length>0&&(e["x-s2o-delete"]=!0,t)&&(t.requestBody&&u?(t.requestBody["x-s2o-overloaded"]=!0,O("Operation "+(t.operationId||i)+" has multiple requestBodies",t,s)):(t.requestBody||(t=n[r]=function(e,t){let n={};for(let r of Object.keys(e))n[r]=e[r],"parameters"===r&&(n.requestBody={},t.rbname&&(n[t.rbname]=""));return n.requestBody={},n}(t,s)),t.requestBody.content&&t.requestBody.content["multipart/form-data"]&&t.requestBody.content["multipart/form-data"].schema&&t.requestBody.content["multipart/form-data"].schema.properties&&l.content["multipart/form-data"]&&l.content["multipart/form-data"].schema&&l.content["multipart/form-data"].schema.properties?(t.requestBody.content["multipart/form-data"].schema.properties=Object.assign(t.requestBody.content["multipart/form-data"].schema.properties,l.content["multipart/form-data"].schema.properties),t.requestBody.content["multipart/form-data"].schema.required=(t.requestBody.content["multipart/form-data"].schema.required||[]).concat(l.content["multipart/form-data"].schema.required||[]),t.requestBody.content["multipart/form-data"].schema.required.length||delete t.requestBody.content["multipart/form-data"].schema.required):t.requestBody.content&&t.requestBody.content["application/x-www-form-urlencoded"]&&t.requestBody.content["application/x-www-form-urlencoded"].schema&&t.requestBody.content["application/x-www-form-urlencoded"].schema.properties&&l.content["application/x-www-form-urlencoded"]&&l.content["application/x-www-form-urlencoded"].schema&&l.content["application/x-www-form-urlencoded"].schema.properties?(t.requestBody.content["application/x-www-form-urlencoded"].schema.properties=Object.assign(t.requestBody.content["application/x-www-form-urlencoded"].schema.properties,l.content["application/x-www-form-urlencoded"].schema.properties),t.requestBody.content["application/x-www-form-urlencoded"].schema.required=(t.requestBody.content["application/x-www-form-urlencoded"].schema.required||[]).concat(l.content["application/x-www-form-urlencoded"].schema.required||[]),t.requestBody.content["application/x-www-form-urlencoded"].schema.required.length||delete t.requestBody.content["application/x-www-form-urlencoded"].schema.required):(t.requestBody=Object.assign(t.requestBody,l),t.requestBody["x-s2o-name"]||(t.requestBody.schema&&t.requestBody.schema.$ref?t.requestBody["x-s2o-name"]=decodeURIComponent(t.requestBody.schema.$ref.replace("#/components/schemas/","")).split("/").join(""):t.operationId&&(t.requestBody["x-s2o-name"]=g.sanitiseAll(t.operationId)))))),e&&!e["x-s2o-delete"]){delete e.type;for(let t of g.parameterTypeProperties)delete e[t];"path"!==e.in||void 0!==e.required&&!0===e.required||(s.patch?(s.patches++,e.required=!0):k("(Patchable) path parameters must be required:true ["+e.name+" in "+i+"]",s))}return t}function P(e,t){for(let n in e)n.startsWith("x-")&&!n.startsWith("x-s2o")&&(t[n]=e[n])}function j(e,t,n,r,i){if(!e)return!1;if(e.$ref&&"string"==typeof e.$ref)e.$ref.indexOf("#/definitions/")>=0?O("definition used as response: "+e.$ref,e,i):e.$ref.startsWith("#/responses/")&&(e.$ref="#/components/responses/"+g.sanitise(decodeURIComponent(e.$ref.replace("#/responses/",""))));else{if((void 0===e.description||null===e.description||""===e.description&&i.patch)&&(i.patch?"object"!=typeof e||Array.isArray(e)||(i.patches++,e.description=y[e]||""):k("(Patchable) response.description is mandatory",i)),void 0!==e.schema){if(E(e.schema,i),e.schema.$ref&&"string"==typeof e.schema.$ref&&e.schema.$ref.startsWith("#/responses/")&&(e.schema.$ref="#/components/responses/"+g.sanitise(decodeURIComponent(e.schema.$ref.replace("#/responses/","")))),n&&n.produces&&"string"==typeof n.produces){if(!i.patch)return k("(Patchable) operation.produces must be an array",i);i.patches++,n.produces=[n.produces]}r.produces&&!Array.isArray(r.produces)&&delete r.produces;let t=((n?n.produces:null)||r.produces||[]).filter(g.uniqueOnly);t.length||t.push("*/*"),e.content={};for(let n of t){if(e.content[n]={},e.content[n].schema=p(e.schema),e.examples&&e.examples[n]){let t={};t.value=e.examples[n],e.content[n].examples={},e.content[n].examples.response=t,delete e.examples[n]}"file"===e.content[n].schema.type&&(e.content[n].schema={type:"string",format:"binary"})}delete e.schema}for(let t in e.examples)e.content||(e.content={}),e.content[t]||(e.content[t]={}),e.content[t].examples={},e.content[t].examples.response={},e.content[t].examples.response.value=e.examples[t];if(delete e.examples,e.headers)for(let t in e.headers)"status code"===t.toLowerCase()?i.patch?(i.patches++,delete e.headers[t]):k('(Patchable) "Status Code" is not a valid header',i):T(e.headers[t],i)}}function N(e,t,n,r,o){for(let s in e){let a=e[s];a&&a["x-trace"]&&"object"==typeof a["x-trace"]&&(a.trace=a["x-trace"],delete a["x-trace"]),a&&a["x-summary"]&&"string"==typeof a["x-summary"]&&(a.summary=a["x-summary"],delete a["x-summary"]),a&&a["x-description"]&&"string"==typeof a["x-description"]&&(a.description=a["x-description"],delete a["x-description"]),a&&a["x-servers"]&&Array.isArray(a["x-servers"])&&(a.servers=a["x-servers"],delete a["x-servers"]);for(let e in a)if(g.httpMethods.indexOf(e)>=0||"x-amazon-apigateway-any-method"===e){let u=a[e];if(u&&u.parameters&&Array.isArray(u.parameters)){if(a.parameters)for(let t of a.parameters)"string"==typeof t.$ref&&(C(t,n),t=c(o,t.$ref)),u.parameters.find((function(e,n,r){return e.name===t.name&&e.in===t.in}))||"formData"!==t.in&&"body"!==t.in&&"file"!==t.type||(u=I(t,u,a,e,s,o,n),n.rbname&&""===u[n.rbname]&&delete u[n.rbname]);for(let t of u.parameters)u=I(t,u,a,e,e+":"+s,o,n);n.rbname&&""===u[n.rbname]&&delete u[n.rbname],n.debug||u.parameters&&(u.parameters=u.parameters.filter(R))}if(u&&u.security&&_(u.security),"object"==typeof u){if(!u.responses){let e={description:"Default response"};u.responses={default:e}}for(let e in u.responses)j(u.responses[e],0,u,o,n)}if(u&&u["x-servers"]&&Array.isArray(u["x-servers"]))u.servers=u["x-servers"],delete u["x-servers"];else if(u&&u.schemes&&u.schemes.length)for(let e of u.schemes)if((!o.schemes||o.schemes.indexOf(e)<0)&&(u.servers||(u.servers=[]),Array.isArray(o.servers)))for(let t of o.servers){let n=p(t),r=i.parse(n.url);r.protocol=e,n.url=r.format(),u.servers.push(n)}if(n.debug&&(u["x-s2o-consumes"]=u.consumes||[],u["x-s2o-produces"]=u.produces||[]),u){if(delete u.consumes,delete u.produces,delete u.schemes,u["x-ms-examples"]){for(let e in u["x-ms-examples"]){let t=u["x-ms-examples"][e],n=g.sanitiseAll(e);if(t.parameters)for(let r in t.parameters){let n=t.parameters[r];for(let t of(u.parameters||[]).concat(a.parameters||[]))t.$ref&&(t=l.jptr(o,t.$ref)),t.name!==r||t.example||(t.examples||(t.examples={}),t.examples[e]={value:n})}if(t.responses)for(let r in t.responses){if(t.responses[r].headers)for(let e in t.responses[r].headers){let n=t.responses[r].headers[e];for(let t in u.responses[r].headers)t===e&&(u.responses[r].headers[t].example=n)}if(t.responses[r].body&&(o.components.examples[n]={value:p(t.responses[r].body)},u.responses[r]&&u.responses[r].content))for(let t in u.responses[r].content){let i=u.responses[r].content[t];i.examples||(i.examples={}),i.examples[e]={$ref:"#/components/examples/"+n}}}}delete u["x-ms-examples"]}if(u.parameters&&0===u.parameters.length&&delete u.parameters,u.requestBody){let n=u.operationId?g.sanitiseAll(u.operationId):g.sanitiseAll(e+s).toCamelCase(),i=g.sanitise(u.requestBody["x-s2o-name"]||n||"");delete u.requestBody["x-s2o-name"];let o=JSON.stringify(u.requestBody),a=g.hash(o);if(!r[a]){let e={};e.name=i,e.body=u.requestBody,e.refs=[],r[a]=e}let c="#/"+t+"/"+encodeURIComponent(l.jpescape(s))+"/"+e+"/requestBody";r[a].refs.push(c)}}}if(a&&a.parameters){for(let e in a.parameters)I(a.parameters[e],null,a,null,s,o,n);!n.debug&&Array.isArray(a.parameters)&&(a.parameters=a.parameters.filter(R))}}}function L(e){return e&&e.url&&"string"==typeof e.url?(e.url=e.url.split("{{").join("{"),e.url=e.url.split("}}").join("}"),e.url.replace(/\{(.+?)\}/g,(function(t,n){e.variables||(e.variables={}),e.variables[n]={default:"unknown"}})),e):e}function $(e,t,n){if(void 0===e.info||null===e.info){if(!t.patch)return n(new w("(Patchable) info object is mandatory"));t.patches++,e.info={version:"",title:""}}if("object"!=typeof e.info||Array.isArray(e.info))return n(new w("info must be an object"));if(void 0===e.info.title||null===e.info.title){if(!t.patch)return n(new w("(Patchable) info.title cannot be null"));t.patches++,e.info.title=""}if(void 0===e.info.version||null===e.info.version){if(!t.patch)return n(new w("(Patchable) info.version cannot be null"));t.patches++,e.info.version=""}if("string"!=typeof e.info.version){if(!t.patch)return n(new w("(Patchable) info.version must be a string"));t.patches++,e.info.version=e.info.version.toString()}if(void 0!==e.info.logo){if(!t.patch)return n(new w("(Patchable) info should not have logo property"));t.patches++,e.info["x-logo"]=e.info.logo,delete e.info.logo}if(void 0!==e.info.termsOfService){if(null===e.info.termsOfService){if(!t.patch)return n(new w("(Patchable) info.termsOfService cannot be null"));t.patches++,e.info.termsOfService=""}try{new URL(e.info.termsOfService)}catch(r){if(!t.patch)return n(new w("(Patchable) info.termsOfService must be a URL"));t.patches++,delete e.info.termsOfService}}}function M(e,t,n){if(void 0===e.paths){if(!t.patch)return n(new w("(Patchable) paths object is mandatory"));t.patches++,e.paths={}}}function D(e,t,n){return o(n,new Promise((function(n,r){if(e||(e={}),t.original=e,t.text||(t.text=a.stringify(e)),t.externals=[],t.externalRefs={},t.rewriteRefs=!0,t.preserveMiro=!0,t.promise={},t.promise.resolve=n,t.promise.reject=r,t.patches=0,t.cache||(t.cache={}),t.source&&(t.cache[t.source]=t.original),function(e,t){const n=new WeakSet;f(e,{identityDetection:!0},(function(e,r,i){"object"==typeof e[r]&&null!==e[r]&&(n.has(e[r])?t.anchors?e[r]=p(e[r]):k("YAML anchor or merge key at "+i.path,t):n.add(e[r]))}))}(e,t),e.openapi&&"string"==typeof e.openapi&&e.openapi.startsWith("3."))return t.openapi=d(e),$(t.openapi,t,r),M(t.openapi,t,r),void h.optionalResolve(t).then((function(){return t.direct?n(t.openapi):n(t)})).catch((function(e){console.warn(e),r(e)}));if(!e.swagger||"2.0"!=e.swagger)return r(new w("Unsupported swagger/OpenAPI version: "+(e.openapi?e.openapi:e.swagger)));let i=t.openapi={};if(i.openapi="string"==typeof t.targetVersion&&t.targetVersion.startsWith("3.")?t.targetVersion:b,t.origin){i["x-origin"]||(i["x-origin"]=[]);let n={};n.url=t.source||t.origin,n.format="swagger",n.version=e.swagger,n.converter={},n.converter.url="https://github.com/mermade/oas-kit",n.converter.version=v,i["x-origin"].push(n)}if(i=Object.assign(i,d(e)),delete i.swagger,f(i,{},(function(e,t,n){null===e[t]&&!t.startsWith("x-")&&"default"!==t&&n.path.indexOf("/example")<0&&delete e[t]})),e.host)for(let t of Array.isArray(e.schemes)?e.schemes:[""]){let n={},r=(e.basePath||"").replace(/\/$/,"");n.url=(t?t+":":"")+"//"+e.host+r,L(n),i.servers||(i.servers=[]),i.servers.push(n)}else if(e.basePath){let t={};t.url=e.basePath,L(t),i.servers||(i.servers=[]),i.servers.push(t)}if(delete i.host,delete i.basePath,i["x-servers"]&&Array.isArray(i["x-servers"])&&(i.servers=i["x-servers"],delete i["x-servers"]),e["x-ms-parameterized-host"]){let t=e["x-ms-parameterized-host"],n={};n.url=t.hostTemplate+(e.basePath?e.basePath:""),n.variables={};const r=n.url.match(/\{\w+\}/g);for(let e in t.parameters){let o=t.parameters[e];o.$ref&&(o=p(c(i,o.$ref))),e.startsWith("x-")||(delete o.required,delete o.type,delete o.in,void 0===o.default&&(o.enum?o.default=o.enum[0]:o.default="none"),o.name||(o.name=r[e].replace("{","").replace("}","")),n.variables[o.name]=o,delete o.name)}i.servers||(i.servers=[]),!1===t.useSchemePrefix?i.servers.push(n):e.schemes.forEach((e=>{i.servers.push(Object.assign({},n,{url:e+"://"+n.url}))})),delete i["x-ms-parameterized-host"]}$(i,t,r),M(i,t,r),"string"==typeof i.consumes&&(i.consumes=[i.consumes]),"string"==typeof i.produces&&(i.produces=[i.produces]),i.components={},i["x-callbacks"]&&(i.components.callbacks=i["x-callbacks"],delete i["x-callbacks"]),i.components.examples={},i.components.headers={},i["x-links"]&&(i.components.links=i["x-links"],delete i["x-links"]),i.components.parameters=i.parameters||{},i.components.responses=i.responses||{},i.components.requestBodies={},i.components.securitySchemes=i.securityDefinitions||{},i.components.schemas=i.definitions||{},delete i.definitions,delete i.responses,delete i.parameters,delete i.securityDefinitions,h.optionalResolve(t).then((function(){(function(e,t){let n={};x={schemas:{}},e.security&&_(e.security);for(let i in e.components.securitySchemes){let n=g.sanitise(i);i!==n&&(e.components.securitySchemes[n]&&k("Duplicate sanitised securityScheme name "+n,t),e.components.securitySchemes[n]=e.components.securitySchemes[i],delete e.components.securitySchemes[i]),A(e.components.securitySchemes[n],t)}for(let i in e.components.schemas){let n=g.sanitiseAll(i),r="";if(i!==n){for(;e.components.schemas[n+r];)r=r?++r:2;e.components.schemas[n+r]=e.components.schemas[i],delete e.components.schemas[i]}x.schemas[i]=n+r,E(e.components.schemas[n+r],t)}t.refmap={},f(e,{payload:{options:t}},S),function(e,t){for(let n in t.refmap)l.jptr(e,n,{$ref:t.refmap[n]})}(e,t);for(let i in e.components.parameters){let n=g.sanitise(i);i!==n&&(e.components.parameters[n]&&k("Duplicate sanitised parameter name "+n,t),e.components.parameters[n]=e.components.parameters[i],delete e.components.parameters[i]),I(e.components.parameters[n],null,null,null,n,e,t)}for(let i in e.components.responses){let n=g.sanitise(i);i!==n&&(e.components.responses[n]&&k("Duplicate sanitised response name "+n,t),e.components.responses[n]=e.components.responses[i],delete e.components.responses[i]);let r=e.components.responses[n];if(j(r,0,null,e,t),r.headers)for(let e in r.headers)"status code"===e.toLowerCase()?t.patch?(t.patches++,delete r.headers[e]):k('(Patchable) "Status Code" is not a valid header',t):T(r.headers[e],t)}for(let i in e.components.requestBodies){let t=e.components.requestBodies[i],r=JSON.stringify(t),o=g.hash(r),s={};s.name=i,s.body=t,s.refs=[],n[o]=s}if(N(e.paths,"paths",t,n,e),e["x-ms-paths"]&&N(e["x-ms-paths"],"x-ms-paths",t,n,e),!t.debug)for(let i in e.components.parameters)e.components.parameters[i]["x-s2o-delete"]&&delete e.components.parameters[i];t.debug&&(e["x-s2o-consumes"]=e.consumes||[],e["x-s2o-produces"]=e.produces||[]),delete e.consumes,delete e.produces,delete e.schemes;let r=[];if(e.components.requestBodies={},!t.resolveInternal){let t=1;for(let i in n){let o=n[i];if(o.refs.length>1){let n="";for(o.name||(o.name="requestBody",n=t++);r.indexOf(o.name+n)>=0;)n=n?++n:2;o.name=o.name+n,r.push(o.name),e.components.requestBodies[o.name]=p(o.body);for(let t in o.refs){let n={};n.$ref="#/components/requestBodies/"+o.name,l.jptr(e,o.refs[t],n)}}}}e.components.responses&&0===Object.keys(e.components.responses).length&&delete e.components.responses,e.components.parameters&&0===Object.keys(e.components.parameters).length&&delete e.components.parameters,e.components.examples&&0===Object.keys(e.components.examples).length&&delete e.components.examples,e.components.requestBodies&&0===Object.keys(e.components.requestBodies).length&&delete e.components.requestBodies,e.components.securitySchemes&&0===Object.keys(e.components.securitySchemes).length&&delete e.components.securitySchemes,e.components.headers&&0===Object.keys(e.components.headers).length&&delete e.components.headers,e.components.schemas&&0===Object.keys(e.components.schemas).length&&delete e.components.schemas,e.components&&0===Object.keys(e.components).length&&delete e.components})(t.openapi,t),t.direct?n(t.openapi):n(t)})).catch((function(e){console.warn(e),r(e)}))})))}function F(e,t,n){return o(n,new Promise((function(n,r){let i=null,o=null;try{i=JSON.parse(e),t.text=JSON.stringify(i,null,2)}catch(n){o=n;try{i=a.parse(e,{schema:"core",prettyErrors:!0}),t.sourceYaml=!0,t.text=e}catch(e){o=e}}i?D(i,t).then((e=>n(e))).catch((e=>r(e))):r(new w(o?o.message:"Could not parse string"))})))}e.exports={S2OError:w,targetVersion:b,convert:D,convertObj:D,convertUrl:function(e,t,n){return o(n,new Promise((function(n,r){t.origin=!0,t.source||(t.source=e),t.verbose&&console.warn("GET "+e),t.fetch||(t.fetch=s);const i=Object.assign({},t.fetchOptions,{agent:t.agent});t.fetch(e,i).then((function(t){if(200!==t.status)throw new w(`Received status code ${t.status}: ${e}`);return t.text()})).then((function(e){F(e,t).then((e=>n(e))).catch((e=>r(e)))})).catch((function(e){r(e)}))})))},convertStr:F,convertFile:function(e,t,n){return o(n,new Promise((function(n,i){r.readFile(e,t.encoding||"utf8",(function(r,o){r?i(r):(t.sourceFile=e,F(o,t).then((e=>n(e))).catch((e=>i(e))))}))})))},convertStream:function(e,t,n){return o(n,new Promise((function(n,r){let i="";e.on("data",(function(e){i+=e})).on("end",(function(){F(i,t).then((e=>n(e))).catch((e=>r(e)))}))})))}}},711:function(e,t,n){"use strict";const r=n(177);e.exports={statusCodes:Object.assign({},{default:"Default response","1XX":"Informational",103:"Early hints","2XX":"Successful","3XX":"Redirection","4XX":"Client Error","5XX":"Server Error","7XX":"Developer Error"},r.STATUS_CODES)}},980:function(e,t,n){var r=n(314),i=["add","done","toJS","fromExternalJS","load","dispose","search","Worker"];e.exports=function(){var e=new Worker(URL.createObjectURL(new Blob(['/*! For license information please see 0a6ad30060afff00cb34.worker.js.LICENSE.txt */\n!function(){var e={336:function(e,t,r){var n,i;!function(){var s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,P,b,T,O,I,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.9",R.utils={},R.utils.warn=(s=this,function(e){s.console&&console.warn&&console.warn(e)}),R.utils.asString=function(e){return null==e?"":e.toString()},R.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),n=0;n0){var u=R.utils.clone(t)||{};u.position=[o,a],u.index=i.length,i.push(new R.Token(r.slice(o,s),u))}o=s+1}}return i},R.tokenizer.separator=/[\\s\\-]+/,R.Pipeline=function(){this._stack=[]},R.Pipeline.registeredFunctions=Object.create(null),R.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&R.utils.warn("Overwriting existing registered function: "+t),e.label=t,R.Pipeline.registeredFunctions[e.label]=e},R.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||R.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\\n",e)},R.Pipeline.load=function(e){var t=new R.Pipeline;return e.forEach((function(e){var r=R.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},R.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){R.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},R.Pipeline.prototype.after=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},R.Pipeline.prototype.before=function(e,t){R.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},R.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},R.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=i),s!=e);)n=r-t,i=t+Math.floor(n/2),s=this.elements[2*i];return s==e||s>e?2*i:sa?l+=2:o==a&&(t+=r[u+1]*n[l+1],u+=2,l+=2);return t},R.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},R.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var s,o=i.str.charAt(0);o in i.node.edges?s=i.node.edges[o]:(s=new R.TokenSet,i.node.edges[o]=s),1==i.str.length&&(s.final=!0),n.push({node:s,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var a=i.node.edges["*"];else a=new R.TokenSet,i.node.edges["*"]=a;if(0==i.str.length&&(a.final=!0),n.push({node:a,editsRemaining:i.editsRemaining-1,str:i.str}),i.str.length>1&&n.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),i.str.length>=1){if("*"in i.node.edges)var u=i.node.edges["*"];else u=new R.TokenSet,i.node.edges["*"]=u;1==i.str.length&&(u.final=!0),n.push({node:u,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(i.str.length>1){var l,c=i.str.charAt(0),h=i.str.charAt(1);h in i.node.edges?l=i.node.edges[h]:(l=new R.TokenSet,i.node.edges[h]=l),1==i.str.length&&(l.final=!0),n.push({node:l,editsRemaining:i.editsRemaining-1,str:c+i.str.slice(2)})}}}return r},R.TokenSet.fromString=function(e){for(var t=new R.TokenSet,r=t,n=0,i=e.length;n=e;t--){var r=this.uncheckedNodes[t],n=r.child.toString();n in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[n]:(r.child._str=n,this.minimizedNodes[n]=r.child),this.uncheckedNodes.pop()}},R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query((function(t){new R.QueryParser(e,t).parse()}))},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),r=Object.create(null),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var r=e[this._ref],n=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var i=0;i=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value \'"+t.str+"\'"),new R.QueryParseError(r,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator\'"+t.str+"\'";throw new R.QueryParseError(r,t.start,t.end)}var n=e.peekLexeme();if(null==n)throw r="expecting term or field, found nothing",new R.QueryParseError(r,t.start,t.end);switch(n.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:throw r="expecting term or field, found \'"+n.type+"\'",new R.QueryParseError(r,n.start,n.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"\'"+e+"\'"})).join(", "),n="unrecognised field \'"+t.str+"\', possible fields: "+r;throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i)throw n="expecting term, found nothing",new R.QueryParseError(n,t.start,t.end);if(i.type===R.QueryLexer.TERM)return R.QueryParser.parseTerm;throw n="expecting term, found \'"+i.type+"\'",new R.QueryParseError(n,i.start,i.end)}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var n="Unexpected lexeme type \'"+r.type+"\'";throw new R.QueryParseError(n,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n="edit distance must be numeric";throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.editDistance=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n="Unexpected lexeme type \'"+i.type+"\'",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var n="boost must be numeric";throw new R.QueryParseError(n,t.start,t.end)}e.currentClause.boost=r;var i=e.peekLexeme();if(null!=i)switch(i.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:throw n="Unexpected lexeme type \'"+i.type+"\'",new R.QueryParseError(n,i.start,i.end)}else e.nextClause()}},void 0===(i="function"==typeof(n=function(){return R})?n.call(t,r,t,e):n)||(e.exports=i)}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};!function(){"use strict";r.d(n,{add:function(){return l},dispose:function(){return p},done:function(){return c},fromExternalJS:function(){return d},load:function(){return f},search:function(){return y},toJS:function(){return h}});var e=r(336),t=(e,t,r)=>new Promise(((n,i)=>{var s=e=>{try{a(r.next(e))}catch(e){i(e)}},o=e=>{try{a(r.throw(e))}catch(e){i(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(s,o);a((r=r.apply(e,t)).next())}));let i,s,o,a=[];function u(){i=new e.Builder,i.field("title"),i.field("description"),i.ref("ref"),i.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),o=new Promise((e=>{s=e}))}function l(e,t,r){const n=a.push(r)-1,s={title:e.toLowerCase(),description:t.toLowerCase(),ref:n};i.add(s)}function c(){return t(this,null,(function*(){s(i.build())}))}function h(){return t(this,null,(function*(){return{store:a,index:(yield o).toJSON()}}))}function d(e,r){return t(this,null,(function*(){try{if(importScripts(e),!self[r])throw new Error("Broken index file format");f(self[r])}catch(e){console.error("Failed to load search index: "+e.message)}}))}function f(r){return t(this,null,(function*(){a=r.store,s(e.Index.load(r.index))}))}function p(){return t(this,null,(function*(){a=[],u()}))}function y(r,n=0){return t(this,null,(function*(){if(0===r.trim().length)return[];let t=(yield o).query((t=>{r.trim().toLowerCase().split(/\\s+/).forEach((r=>{if(1===r.length)return;const n=(t=>{const r=e.trimmer(new e.Token(t,{}));return"*"+e.stemmer(r)+"*"})(r);t.term(n,{})}))}));return n>0&&(t=t.slice(0,n)),t.map((e=>({meta:a[e.ref],score:e.score})))}))}e.tokenizer.separator=/\\s+/,u(),addEventListener("message",(function(e){var t,r=e.data,i=r.type,s=r.method,o=r.id,a=r.params;"RPC"===i&&s&&((t=n[s])?Promise.resolve().then((function(){return t.apply(n,a)})):Promise.reject("No such method")).then((function(e){postMessage({type:"RPC",id:o,result:e})})).catch((function(e){var t={message:e};e.stack&&(t.message=e.message,t.stack=e.stack,t.name=e.name),postMessage({type:"RPC",id:o,error:t})}))})),postMessage({type:"RPC",method:"ready"})}()}();\n//# sourceMappingURL=0a6ad30060afff00cb34.worker.js.map'])),{name:"[fullhash].worker.js"});return r(e,i),e}},314:function(e){e.exports=function(e,t){var n=0,r={};e.addEventListener("message",(function(t){var n=t.data;if("RPC"===n.type)if(n.id){var i=r[n.id];i&&(delete r[n.id],n.error?i[1](Object.assign(Error(n.error.message),n.error)):i[0](n.result))}else{var o=document.createEvent("Event");o.initEvent(n.method,!1,!1),o.data=n.params,e.dispatchEvent(o)}})),t.forEach((function(t){e[t]=function(){var i=arguments;return new Promise((function(o,s){var a=++n;r[a]=[o,s],e.postMessage({type:"RPC",id:a,method:t,params:[].slice.call(i)})}))}}))}},766:function(e){"use strict";e.exports=n(40472)},376:function(e){"use strict";e.exports=n(4445)},322:function(e){"use strict";e.exports=n(5114)},66:function(e){"use strict";e.exports=n(55006)},416:function(e){"use strict";e.exports=void 0},177:function(){},109:function(e){"use strict";e.exports={i8:"7.0.6"}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={id:n,exports:{}};return e[n](o,o.exports,r),o.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;var i={};return function(){"use strict";r.r(i),r.d(i,{AUTH_TYPES:function(){return Jl},ApiContentWrap:function(){return qp},ApiInfo:function(){return uc},ApiInfoModel:function(){return Hn},ApiLogo:function(){return hc},AppStore:function(){return rc},ArraySchema:function(){return sl},BackgroundStub:function(){return Wp},BodyContent:function(){return nu},COMPONENT_REGEXP:function(){return Un},CallbackModel:function(){return pr},ClipboardService:function(){return $s},ContentItem:function(){return fp},ContentItems:function(){return dp},DiscriminatorDropdown:function(){return Ya},Dropdown:function(){return cs},DropdownLabel:function(){return ea},DropdownOrLabel:function(){return ys},DropdownWrapper:function(){return ta},ErrorBoundary:function(){return ie},Example:function(){return Ks},ExampleModel:function(){return Br},ExternalExample:function(){return Zs},FieldModel:function(){return Hr},GROUP_DEPTH:function(){return Qi},GroupModel:function(){return Mi},HistoryService:function(){return qt},IS_BROWSER:function(){return a},InvertedSimpleDropdown:function(){return na},JsonPointer:function(){return Oe},JsonViewer:function(){return Qs},LEGACY_REGEXP:function(){return zn},Loading:function(){return le},MDX_COMPONENT_REGEXP:function(){return Bn},Markdown:function(){return Rs},MarkdownRenderer:function(){return Wn},MarkerService:function(){return Ht},MediaContentModel:function(){return Zr},MediaTypeModel:function(){return Yr},MediaTypesSwitch:function(){return Qc},MenuBuilder:function(){return Yi},MenuItem:function(){return Ep},MenuItemLabel:function(){return Tc},MenuItemLi:function(){return Ac},MenuItemTitle:function(){return Cc},MenuItemUl:function(){return _c},MenuItems:function(){return Ip},MenuStore:function(){return Ji},MiddlePanel:function(){return oo},MimeLabel:function(){return Js},NoSampleLabel:function(){return ra},OLD_SECURITY_DEFINITIONS_JSX_NAME:function(){return ft},ObjectSchema:function(){return Ga},OneOfButton:function(){return gl},OneOfSchema:function(){return yl},OpenAPIParser:function(){return Er},Operation:function(){return ip},OperationBadge:function(){return Ec},OperationItem:function(){return gp},OperationMenuItemContent:function(){return Sp},OperationModel:function(){return mi},OptionsConsumer:function(){return de},OptionsContext:function(){return ue},OptionsProvider:function(){return pe},Parameters:function(){return eu},PayloadSamples:function(){return $u},Redoc:function(){return Jp},RedocAttribution:function(){return Ic},RedocNormalizedOptions:function(){return H},RedocStandalone:function(){return ed},RedocWrap:function(){return Up},RequestBodyModel:function(){return Jr},ResponseDetails:function(){return hu},ResponseHeaders:function(){return lu},ResponseModel:function(){return ci},ResponseSamples:function(){return Gu},ResponseTitle:function(){return ru},ResponseView:function(){return mu},ResponsesList:function(){return yu},RightPanel:function(){return ao},Row:function(){return co},SCHEMA_DEFINITION_JSX_NAME:function(){return ht},SECTION_ATTR:function(){return Zi},SECURITY_DEFINITIONS_JSX_NAME:function(){return dt},SECURITY_SCHEMES_SECTION_PREFIX:function(){return mt},Schema:function(){return Rl},SchemaDefinition:function(){return $l},SchemaModel:function(){return Mr},ScrollService:function(){return ro},SearchBox:function(){return Zp},SearchStore:function(){return io},Section:function(){return so},SectionItem:function(){return mp},SecurityDefs:function(){return ec},SecuritySchemeModel:function(){return Si},SecuritySchemesModel:function(){return _i},SideMenu:function(){return jp},SideNavStyleEnum:function(){return L},SimpleDropdown:function(){return us},SourceCode:function(){return Ys},SourceCodeWithCopy:function(){return Gs},SpecStore:function(){return ji},StickyResponsiveSidebar:function(){return Bp},StoreBuilder:function(){return xo},StoreConsumer:function(){return bo},StoreContext:function(){return yo},StoreProvider:function(){return vo},StyledMarkdownBlock:function(){return xs},ThemeProvider:function(){return J},Throttle:function(){return St},alphabeticallyByProp:function(){return Ft},appendToMdHeading:function(){return v},argValueToBoolean:function(){return W},buildComponentComment:function(){return qn},concatRefStacks:function(){return Or},convertSwagger2OpenAPI:function(){return ve},createGlobalStyle:function(){return K},createStore:function(){return nc},css:function(){return X},debugTime:function(){return _t},debugTimeEnd:function(){return At},detectType:function(){return Ue},escapeHTMLAttrChars:function(){return T},expandDefaultServerVariables:function(){return ut},extensionsHook:function(){return ne},extractExtensions:function(){return bt},flattenByProp:function(){return m},getBasePath:function(){return S},getContentWithLegacyExamples:function(){return wt},getDefinitionName:function(){return nt},getOperationSummary:function(){return ze},getSerializedValue:function(){return Ze},getStatusCodeType:function(){return Me},highlight:function(){return Et},history:function(){return Wt},html2Str:function(){return c},humanizeConstraints:function(){return ot},humanizeNumberRange:function(){return it},isAbsoluteUrl:function(){return O},isArray:function(){return I},isBoolean:function(){return P},isFormUrlEncoded:function(){return Ve},isJsonLike:function(){return We},isNamedDefinition:function(){return tt},isNumeric:function(){return y},isObject:function(){return x},isOperationName:function(){return Fe},isPayloadSample:function(){return fi},isPrimitiveType:function(){return qe},isRedocExtension:function(){return vt},isStatusCode:function(){return $e},keyframes:function(){return Z},langFromMime:function(){return Je},loadAndBundleSpec:function(){return ye},mapLang:function(){return Ot},mapValues:function(){return h},mapWithLast:function(){return f},media:function(){return ee},memoize:function(){return Dt},menuItemDepth:function(){return Rc},mergeObjects:function(){return b},mergeParams:function(){return lt},mergeSimilarMediaTypes:function(){return ct},normalizeServers:function(){return pt},pluralizeType:function(){return xt},pushRef:function(){return kr},querySelector:function(){return l},removeQueryStringAndHash:function(){return A},resolveUrl:function(){return E},safeSlugify:function(){return k},scrollIntoViewIfNeeded:function(){return u},serializeParameterValue:function(){return Ke},serializeParameterValueWithMime:function(){return Xe},setSecuritySchemePrefix:function(){return gt},shortenHTTPVerb:function(){return yt},sortByField:function(){return at},sortByRequired:function(){return st},stripTrailingSlash:function(){return g},styled:function(){return te},titleize:function(){return _},unescapeHTMLChars:function(){return C},urlFormEncodePayload:function(){return Ge},useStore:function(){return wo}});var e=n(67294),t=n(61303);const o={spacing:{unit:5,sectionHorizontal:({spacing:e})=>8*e.unit,sectionVertical:({spacing:e})=>8*e.unit},breakpoints:{small:"50rem",medium:"75rem",large:"105rem"},colors:{tonalOffset:.2,primary:{main:"#32329f",light:({colors:e})=>(0,t.lighten)(e.tonalOffset,e.primary.main),dark:({colors:e})=>(0,t.darken)(e.tonalOffset,e.primary.main),contrastText:({colors:e})=>(0,t.readableColor)(e.primary.main)},success:{main:"#1d8127",light:({colors:e})=>(0,t.lighten)(2*e.tonalOffset,e.success.main),dark:({colors:e})=>(0,t.darken)(e.tonalOffset,e.success.main),contrastText:({colors:e})=>(0,t.readableColor)(e.success.main)},warning:{main:"#ffa500",light:({colors:e})=>(0,t.lighten)(e.tonalOffset,e.warning.main),dark:({colors:e})=>(0,t.darken)(e.tonalOffset,e.warning.main),contrastText:"#ffffff"},error:{main:"#d41f1c",light:({colors:e})=>(0,t.lighten)(e.tonalOffset,e.error.main),dark:({colors:e})=>(0,t.darken)(e.tonalOffset,e.error.main),contrastText:({colors:e})=>(0,t.readableColor)(e.error.main)},gray:{50:"#FAFAFA",100:"#F5F5F5"},text:{primary:"#333333",secondary:({colors:e})=>(0,t.lighten)(e.tonalOffset,e.text.primary)},border:{dark:"rgba(0,0,0, 0.1)",light:"#ffffff"},responses:{success:{color:({colors:e})=>e.success.main,backgroundColor:({colors:e})=>(0,t.transparentize)(.93,e.success.main),tabTextColor:({colors:e})=>e.responses.success.color},error:{color:({colors:e})=>e.error.main,backgroundColor:({colors:e})=>(0,t.transparentize)(.93,e.error.main),tabTextColor:({colors:e})=>e.responses.error.color},redirect:{color:({colors:e})=>e.warning.main,backgroundColor:({colors:e})=>(0,t.transparentize)(.9,e.responses.redirect.color),tabTextColor:({colors:e})=>e.responses.redirect.color},info:{color:"#87ceeb",backgroundColor:({colors:e})=>(0,t.transparentize)(.9,e.responses.info.color),tabTextColor:({colors:e})=>e.responses.info.color}},http:{get:"#2F8132",post:"#186FAF",put:"#95507c",options:"#947014",patch:"#bf581d",delete:"#cc3333",basic:"#707070",link:"#07818F",head:"#A23DAD"}},schema:{linesColor:e=>(0,t.lighten)(e.colors.tonalOffset,(0,t.desaturate)(e.colors.tonalOffset,e.colors.primary.main)),defaultDetailsWidth:"75%",typeNameColor:e=>e.colors.text.secondary,typeTitleColor:e=>e.schema.typeNameColor,requireLabelColor:e=>e.colors.error.main,labelsTextSize:"0.9em",nestingSpacing:"1em",nestedBackground:"#fafafa",arrow:{size:"1.1em",color:e=>e.colors.text.secondary}},typography:{fontSize:"14px",lineHeight:"1.5em",fontWeightRegular:"400",fontWeightBold:"600",fontWeightLight:"300",fontFamily:"Roboto, sans-serif",smoothing:"antialiased",optimizeSpeed:!0,headings:{fontFamily:"Montserrat, sans-serif",fontWeight:"400",lineHeight:"1.6em"},code:{fontSize:"13px",fontFamily:"Courier, monospace",lineHeight:({typography:e})=>e.lineHeight,fontWeight:({typography:e})=>e.fontWeightRegular,color:"#e53935",backgroundColor:"rgba(38, 50, 56, 0.05)",wrap:!1},links:{color:({colors:e})=>e.primary.main,visited:({typography:e})=>e.links.color,hover:({typography:e})=>(0,t.lighten)(.2,e.links.color),textDecoration:"auto",hoverTextDecoration:"auto"}},sidebar:{width:"260px",backgroundColor:"#fafafa",textColor:"#333333",activeTextColor:e=>e.sidebar.textColor!==o.sidebar.textColor?e.sidebar.textColor:e.colors.primary.main,groupItems:{activeBackgroundColor:e=>(0,t.darken)(.1,e.sidebar.backgroundColor),activeTextColor:e=>e.sidebar.activeTextColor,textTransform:"uppercase"},level1Items:{activeBackgroundColor:e=>(0,t.darken)(.05,e.sidebar.backgroundColor),activeTextColor:e=>e.sidebar.activeTextColor,textTransform:"none"},arrow:{size:"1.5em",color:e=>e.sidebar.textColor}},logo:{maxHeight:({sidebar:e})=>e.width,maxWidth:({sidebar:e})=>e.width,gutter:"2px"},rightPanel:{backgroundColor:"#263238",width:"40%",textColor:"#ffffff",servers:{overlay:{backgroundColor:"#fafafa",textColor:"#263238"},url:{backgroundColor:"#fff"}}},codeBlock:{backgroundColor:({rightPanel:e})=>(0,t.darken)(.1,e.backgroundColor)},fab:{backgroundColor:"#f2f2f2",color:"#0065FB"}};var s=o;const a="undefined"!=typeof window&&"HTMLElement"in window;function l(e){return"undefined"!=typeof document?document.querySelector(e):null}function c(e){return e.split(/<[^>]+>/).map((e=>e.trim())).filter((e=>e.length>0)).join(" ")}function u(e,t=!0){const n=e.parentNode;if(!n)return;const r=window.getComputedStyle(n,void 0),i=parseInt(r.getPropertyValue("border-top-width"),10),o=parseInt(r.getPropertyValue("border-left-width"),10),s=e.offsetTop-n.offsetTopn.scrollTop+n.clientHeight,l=e.offsetLeft-n.offsetLeftn.scrollLeft+n.clientWidth,u=s&&!a;(s||a)&&t&&(n.scrollTop=e.offsetTop-n.offsetTop-n.clientHeight/2-i+e.clientHeight/2),(l||c)&&t&&(n.scrollLeft=e.offsetLeft-n.offsetLeft-n.clientWidth/2-o+e.clientWidth/2),(s||a||l||c)&&!t&&e.scrollIntoView(u)}var p=n(31304),d=r.n(p);function f(e,t){const n=[];for(let r=0;r{for(const i of e)n.push(i),i[t]&&r(i[t])};return r(e),n}function g(e){return e.endsWith("/")?e.substring(0,e.length-1):e}function y(e){return!isNaN(parseFloat(e))&&isFinite(e)}function v(e,t,n){const r=new RegExp(`(^|\\n)#\\s?${t}\\s*\\n`,"i"),i=new RegExp(`((\\n|^)#\\s*${t}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(r.test(e))return e.replace(i,`$1\n\n${n}\n$4`);{const r=""===e||e.endsWith("\n\n")?"":e.endsWith("\n")?"\n":"\n\n";return`${e}${r}# ${t}\n\n${n}`}}const b=(e,...t)=>{if(!t.length)return e;const n=t.shift();return void 0===n?e:(w(e)&&w(n)&&Object.keys(n).forEach((t=>{w(n[t])?(e[t]||(e[t]={}),b(e[t],n[t])):e[t]=n[t]})),b(e,...t))},x=e=>null!==e&&"object"==typeof e,w=e=>x(e)&&!I(e);function k(e){return d()(e)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/\--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}function O(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}function E(e,t){let n;if(t.startsWith("//"))try{n=`${new URL(e).protocol||"https:"}${t}`}catch(e){n=`https:${t}`}else if(O(t))n=t;else if(t.startsWith("/"))try{const r=new URL(e);r.pathname=t,n=r.href}catch(e){n=t}else n=g(e)+"/"+t;return g(n)}function S(e){try{return R(e).pathname}catch(t){return e}}function _(e){return e.charAt(0).toUpperCase()+e.slice(1)}function A(e){try{const t=R(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}function R(e){return"undefined"==typeof URL?new(r(416).URL)(e):new URL(e)}function T(e){return e.replace(/["\\]/g,"\\$&")}function C(e){return e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&/g,"&").replace(/"/g,'"')}function I(e){return Array.isArray(e)}function P(e){return"boolean"==typeof e}const j={enum:"Enum",enumSingleValue:"Value",enumArray:"Items",default:"Default",deprecated:"Deprecated",example:"Example",examples:"Examples",recursive:"Recursive",arrayOf:"Array of ",webhook:"Event",const:"Value",noResultsFound:"No results found",download:"Download",downloadSpecification:"Download OpenAPI specification",responses:"Responses",callbackResponses:"Callback responses",requestSamples:"Request samples",responseSamples:"Response samples"};function N(e,t){const n=j[e];return void 0!==t?n[t]:n}var L=(e=>(e.SummaryOnly="summary-only",e.PathOnly="path-only",e.IdOnly="id-only",e))(L||{}),$=Object.defineProperty,M=Object.defineProperties,D=Object.getOwnPropertyDescriptors,F=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable,U=(e,t,n)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q=(e,t)=>{for(var n in t||(t={}))z.call(t,n)&&U(e,n,t[n]);if(F)for(var n of F(t))B.call(t,n)&&U(e,n,t[n]);return e};function W(e,t){return void 0===e?t||!1:"string"==typeof e?"false"!==e:e}function V(e){return"string"==typeof e?parseInt(e,10):"number"==typeof e?e:void 0}class H{static normalizeExpandResponses(e){if("all"===e)return"all";if("string"==typeof e){const t={};return e.split(",").forEach((e=>{t[e.trim()]=!0})),t}return void 0!==e&&console.warn(`expandResponses must be a string but received value "${e}" of type ${typeof e}`),{}}static normalizeHideHostname(e){return!!e}static normalizeScrollYOffset(e){if("string"==typeof e&&!y(e)){const t=l(e);t||console.warn("scrollYOffset value is a selector to non-existing element. Using offset 0 by default");const n=t&&t.getBoundingClientRect().bottom||0;return()=>n}return"number"==typeof e||y(e)?()=>"number"==typeof e?e:parseFloat(e):"function"==typeof e?()=>{const t=e();return"number"!=typeof t&&console.warn(`scrollYOffset should return number but returned value "${t}" of type ${typeof t}`),t}:(void 0!==e&&console.warn("Wrong value for scrollYOffset ReDoc option: should be string, number or function"),()=>0)}static normalizeShowExtensions(e){if(void 0===e)return!1;if(""===e)return!0;if("string"!=typeof e)return e;switch(e){case"true":return!0;case"false":return!1;default:return e.split(",").map((e=>e.trim()))}}static normalizeSideNavStyle(e){const t=L.SummaryOnly;if("string"!=typeof e)return t;switch(e){case t:return e;case L.PathOnly:return L.PathOnly;case L.IdOnly:return L.IdOnly;default:return t}}static normalizePayloadSampleIdx(e){return"number"==typeof e?Math.max(0,e):"string"==typeof e&&isFinite(e)?parseInt(e,10):0}static normalizeJsonSampleExpandLevel(e){return"all"===e?1/0:isNaN(Number(e))?2:Math.ceil(Number(e))}static normalizeGeneratedPayloadSamplesMaxDepth(e){return isNaN(Number(e))?10:Math.max(0,Number(e))}constructor(e,t={}){var n,r,i,o,a;const l=(e=q(q({},t),e)).theme&&e.theme.extensionsHook;var c,u;(null==(n=e.theme)?void 0:n.menu)&&!(null==(r=e.theme)?void 0:r.sidebar)&&(console.warn('Theme setting "menu" is deprecated. Rename to "sidebar"'),e.theme.sidebar=e.theme.menu),(null==(i=e.theme)?void 0:i.codeSample)&&!(null==(o=e.theme)?void 0:o.codeBlock)&&(console.warn('Theme setting "codeSample" is deprecated. Rename to "codeBlock"'),e.theme.codeBlock=e.theme.codeSample),this.theme=function(e){const t={};let n=0;const r=(i,o)=>{Object.keys(i).forEach((s=>{const a=(o?o+".":"")+s,l=i[s];"function"==typeof l?Object.defineProperty(i,s,{get(){if(!t[a]){if(n++,n>1e3)throw new Error(`Theme probably contains circular dependency at ${a}: ${l.toString()}`);t[a]=l(e)}return t[a]},enumerable:!0}):"object"==typeof l&&r(l,a)}))};return r(e,""),JSON.parse(JSON.stringify(e))}(b({},s,(c=q({},e.theme),M(c,D({extensionsHook:void 0}))))),this.theme.extensionsHook=l,u=e.labels,Object.assign(j,u),this.scrollYOffset=H.normalizeScrollYOffset(e.scrollYOffset),this.hideHostname=H.normalizeHideHostname(e.hideHostname),this.expandResponses=H.normalizeExpandResponses(e.expandResponses),this.requiredPropsFirst=W(e.requiredPropsFirst),this.sortPropsAlphabetically=W(e.sortPropsAlphabetically),this.sortEnumValuesAlphabetically=W(e.sortEnumValuesAlphabetically),this.sortOperationsAlphabetically=W(e.sortOperationsAlphabetically),this.sortTagsAlphabetically=W(e.sortTagsAlphabetically),this.nativeScrollbars=W(e.nativeScrollbars),this.pathInMiddlePanel=W(e.pathInMiddlePanel),this.untrustedSpec=W(e.untrustedSpec),this.hideDownloadButton=W(e.hideDownloadButton),this.downloadFileName=e.downloadFileName,this.downloadDefinitionUrl=e.downloadDefinitionUrl,this.disableSearch=W(e.disableSearch),this.onlyRequiredInSamples=W(e.onlyRequiredInSamples),this.showExtensions=H.normalizeShowExtensions(e.showExtensions),this.sideNavStyle=H.normalizeSideNavStyle(e.sideNavStyle),this.hideSingleRequestSampleTab=W(e.hideSingleRequestSampleTab),this.menuToggle=W(e.menuToggle,!0),this.jsonSampleExpandLevel=H.normalizeJsonSampleExpandLevel(e.jsonSampleExpandLevel),this.enumSkipQuotes=W(e.enumSkipQuotes),this.hideSchemaTitles=W(e.hideSchemaTitles),this.simpleOneOfTypeLabel=W(e.simpleOneOfTypeLabel),this.payloadSampleIdx=H.normalizePayloadSampleIdx(e.payloadSampleIdx),this.expandSingleSchemaField=W(e.expandSingleSchemaField),this.schemaExpansionLevel=function(e,t=0){return"all"===e?1/0:V(e)||t}(e.schemaExpansionLevel),this.showObjectSchemaExamples=W(e.showObjectSchemaExamples),this.showSecuritySchemeType=W(e.showSecuritySchemeType),this.hideSecuritySection=W(e.hideSecuritySection),this.unstable_ignoreMimeParameters=W(e.unstable_ignoreMimeParameters),this.allowedMdComponents=e.allowedMdComponents||{},this.expandDefaultServerVariables=W(e.expandDefaultServerVariables),this.maxDisplayedEnumValues=V(e.maxDisplayedEnumValues);const p=I(e.ignoreNamedSchemas)?e.ignoreNamedSchemas:null==(a=e.ignoreNamedSchemas)?void 0:a.split(",").map((e=>e.trim()));this.ignoreNamedSchemas=new Set(p),this.hideSchemaPattern=W(e.hideSchemaPattern),this.generatedPayloadSamplesMaxDepth=H.normalizeGeneratedPayloadSamplesMaxDepth(e.generatedPayloadSamplesMaxDepth),this.nonce=e.nonce,this.hideFab=W(e.hideFab),this.minCharacterLengthToInitSearch=V(e.minCharacterLengthToInitSearch)||3,this.showWebhookVerb=W(e.showWebhookVerb)}}var Q=n(19521),Y=r.n(Q);const{default:G,css:X,createGlobalStyle:K,keyframes:Z,ThemeProvider:J}=Q,ee={lessThan:(e,t,n)=>(...r)=>X` @media ${t?"print, ":""} screen and (max-width: ${t=>t.theme.breakpoints[e]}) ${n||""} { ${X(...r)}; @@ -1804,4 +1804,4 @@ cursor: pointer; font-style: normal; color: '#666'; -`;var Xp=Object.defineProperty,Kp=Object.getOwnPropertyDescriptor;class Zp extends e.PureComponent{constructor(e){super(e),this.activeItemRef=null,this.clear=()=>{this.setState({results:[],noResults:!1,term:"",activeItemIdx:-1}),this.props.marker.unmark()},this.handleKeyDown=e=>{if(27===e.keyCode&&this.clear(),40===e.keyCode&&(this.setState({activeItemIdx:Math.min(this.state.activeItemIdx+1,this.state.results.length-1)}),e.preventDefault()),38===e.keyCode&&(this.setState({activeItemIdx:Math.max(0,this.state.activeItemIdx-1)}),e.preventDefault()),13===e.keyCode){const e=this.state.results[this.state.activeItemIdx];if(e){const t=this.props.getItemById(e.meta);t&&this.props.onActivate(t)}}},this.search=e=>{const{minCharacterLengthToInitSearch:t}=this.context,n=e.target.value;n.lengththis.searchCallback(this.state.term)))},this.state={results:[],noResults:!1,term:"",activeItemIdx:-1}}clearResults(e){this.setState({results:[],noResults:!1,term:e}),this.props.marker.unmark()}setResults(e,t){this.setState({results:e,noResults:0===e.length}),this.props.marker.mark(t)}searchCallback(e){this.props.search.search(e).then((t=>{this.setResults(t,e)}))}render(){const{activeItemIdx:t}=this.state,n=this.state.results.filter((e=>this.props.getItemById(e.meta))).map((e=>({item:this.props.getItemById(e.meta),score:e.score}))).sort(((e,t)=>t.score-e.score));return e.createElement(Vp,{role:"search"},this.state.term&&e.createElement(Gp,{onClick:this.clear},"\xd7"),e.createElement(Qp,null),e.createElement(Hp,{value:this.state.term,onKeyDown:this.handleKeyDown,placeholder:"Search...","aria-label":"Search",type:"text",onChange:this.search}),n.length>0&&e.createElement(ss,{options:{wheelPropagation:!1}},e.createElement(Yp,{"data-role":"search:results"},n.map(((n,r)=>e.createElement(Ep,{item:Object.create(n.item,{active:{value:r===t}}),onActivate:this.props.onActivate,withoutChildren:!0,key:n.item.id,"data-role":"search:result"}))))),this.state.term&&this.state.noResults?e.createElement(Yp,{"data-role":"search:results"},N("noResultsFound")):null)}}Zp.contextType=ue,((e,t,n,r)=>{for(var i,o=Kp(t,n),s=e.length-1;s>=0;s--)(i=e[s])&&(o=i(t,n,o)||o);o&&Xp(t,n,o)})([be.bind,(0,be.debounce)(400)],Zp.prototype,"searchCallback");class Jp extends e.Component{componentDidMount(){this.props.store.onDidMount()}componentWillUnmount(){this.props.store.dispose()}render(){const{store:{spec:t,menu:n,options:r,search:i,marker:o}}=this.props,s=this.props.store;return e.createElement(J,{theme:r.theme},e.createElement(vo,{value:s},e.createElement(pe,{value:r},e.createElement(Up,{className:"redoc-wrap"},e.createElement(Bp,{menu:n,className:"menu-content"},e.createElement(hc,{info:t.info}),!r.disableSearch&&e.createElement(Zp,{search:i,marker:o,getItemById:n.getItemById,onActivate:n.activateAndScroll})||null,e.createElement(jp,{menu:n})),e.createElement(qp,{className:"api-content"},e.createElement(uc,{store:s}),e.createElement(dp,{items:n.items})),e.createElement(Wp,null)))))}}Jp.propTypes={store:ce.instanceOf(rc).isRequired};const ed=function(t){const{spec:n,specUrl:i,options:o={},onLoaded:s}=t,a=W(o.hideLoading,!1),l=new H(o);if(void 0!==l.nonce)try{r.nc=l.nonce}catch(e){}return e.createElement(ie,null,e.createElement(xo,{spec:n,specUrl:i,options:o,onLoaded:s},(({loading:t,store:n})=>t?a?null:e.createElement(le,{color:l.theme.colors.primary.main}):e.createElement(Jp,{store:n}))))}}(),i}()},9275:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.mapTypeToComponent=t.bundleDocument=t.bundle=t.OasVersion=void 0;const i=n(72307),o=n(19813),s=n(76294),a=n(481),l=n(6930),c=n(96406),u=n(28286),p=n(7681),d=n(19558),f=n(43739),h=n(25515),m=n(25242),g=n(86525),y=n(16876),v=n(5068),b=n(72888);var x;function w(e){return r(this,void 0,void 0,(function*(){const{document:t,config:n,customTypes:r,externalRefResolver:i,dereference:f=!1,skipRedoclyRegistryRefs:m=!1,removeUnusedComponents:g=!1,keepUrlRefs:y=!1}=e,w=d.detectOpenAPI(t.parsed),k=d.openAPIMajor(w),E=n.getRulesForOasVersion(k),S=u.normalizeTypes(n.extendTypes((null!=r?r:k===d.OasMajorVersion.Version3)?w===x.Version3_1?c.Oas3_1Types:a.Oas3Types:l.Oas2Types,w),n),_=h.initRules(E,n,"preprocessors",w),A=h.initRules(E,n,"decorators",w),R={problems:[],oasVersion:w,refTypes:new Map,visitorsData:{}};g&&A.push({severity:"error",ruleId:"remove-unused-components",visitor:k===d.OasMajorVersion.Version2?v.RemoveUnusedComponents({}):b.RemoveUnusedComponents({})});let T=yield o.resolveDocument({rootDocument:t,rootType:S.Root,externalRefResolver:i});_.length>0&&(p.walkDocument({document:t,rootType:S.Root,normalizedVisitors:s.normalizeVisitors(_,S),resolvedRefMap:T,ctx:R}),T=yield o.resolveDocument({rootDocument:t,rootType:S.Root,externalRefResolver:i}));const C=s.normalizeVisitors([{severity:"error",ruleId:"bundler",visitor:O(k,f,m,t,T,y)},...A],S);return p.walkDocument({document:t,rootType:S.Root,normalizedVisitors:C,resolvedRefMap:T,ctx:R}),{bundle:t,problems:R.problems.map((e=>n.addProblemToIgnore(e))),fileDependencies:i.getFiles(),rootType:S.Root,refTypes:R.refTypes,visitorsData:R.visitorsData}}))}function k(e,t){switch(t){case d.OasMajorVersion.Version3:switch(e){case"Schema":return"schemas";case"Parameter":return"parameters";case"Response":return"responses";case"Example":return"examples";case"RequestBody":return"requestBodies";case"Header":return"headers";case"SecuritySchema":return"securitySchemes";case"Link":return"links";case"Callback":return"callbacks";default:return null}case d.OasMajorVersion.Version2:switch(e){case"Schema":return"definitions";case"Parameter":return"parameters";case"Response":return"responses";default:return null}}}function O(e,t,n,r,s,a){let l,c;const u={ref:{leave(i,l,c){if(!c.location||void 0===c.node)return void m.reportUnresolvedRef(c,l.report,l.location);if(c.location.source===r.source&&c.location.source===l.location.source&&"scalar"!==l.type.name&&!t)return;if(n&&y.isRedoclyRegistryURL(i.$ref))return;if(a&&f.isAbsoluteUrl(i.$ref))return;const u=k(l.type.name,e);u?t?(h(u,c,l),p(i,c,l)):(i.$ref=h(u,c,l),function(e,t,n){const i=o.makeRefId(n.location.source.absoluteRef,e.$ref);s.set(i,{document:r,isRemote:!1,node:t.node,nodePointer:e.$ref,resolved:!0})}(i,c,l)):p(i,c,l)}},Root:{enter(t,n){c=n.location,e===d.OasMajorVersion.Version3?l=t.components=t.components||{}:e===d.OasMajorVersion.Version2&&(l=t)}}};function p(e,t,n){if(g.isPlainObject(t.node)){delete e.$ref;const n=Object.assign({},t.node,e);Object.assign(e,n)}else n.parent[n.key]=t.node}function h(t,n,r){l[t]=l[t]||{};const i=function(e,t,n){const[r,i]=[e.location.source.absoluteRef,e.location.pointer],o=l[t];let s="";const a=i.slice(2).split("/").filter(g.isTruthy);for(;a.length>0;)if(s=a.pop()+(s?`-${s}`:""),!o||!o[s]||v(o[s],e,n))return s;if(s=f.refBaseName(r)+(s?`_${s}`:""),!o[s]||v(o[s],e,n))return s;const c=s;let u=2;for(;o[s]&&!v(o[s],e,n);)s=`${c}-${u}`,u++;o[s]||n.report({message:`Two schemas are referenced with the same name but different content. Renamed ${c} to ${s}.`,location:n.location,forceSeverity:"warn"});return s}(n,t,r);return l[t][i]=n.node,e===d.OasMajorVersion.Version3?`#/components/${t}/${i}`:`#/${t}/${i}`}function v(e,t,n){var r;return!(!f.isRef(e)||(null===(r=n.resolve(e,c.absolutePointer).location)||void 0===r?void 0:r.absolutePointer)!==t.location.absolutePointer)||i(e,t.node)}return e===d.OasMajorVersion.Version3&&(u.DiscriminatorMapping={leave(n,r){for(const i of Object.keys(n)){const o=n[i],s=r.resolve({$ref:o});if(!s.location||void 0===s.node)return void m.reportUnresolvedRef(s,r.report,r.location.child(i));const a=k("Schema",e);t?h(a,s,r):n[i]=h(a,s,r)}}}),u}!function(e){e.Version2="oas2",e.Version3_0="oas3_0",e.Version3_1="oas3_1"}(x=t.OasVersion||(t.OasVersion={})),t.bundle=function(e){return r(this,void 0,void 0,(function*(){const{ref:t,doc:n,externalRefResolver:r=new o.BaseResolver(e.config.resolve),base:i=null}=e;if(!t&&!n)throw new Error("Document or reference is required.\n");const s=void 0!==n?n:yield r.resolveDocument(i,t,!0);if(s instanceof Error)throw s;return w(Object.assign(Object.assign({document:s},e),{config:e.config.styleguide,externalRefResolver:r}))}))},t.bundleDocument=w,t.mapTypeToComponent=k},1258:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Config=t.StyleguideConfig=t.AVAILABLE_REGIONS=t.DOMAINS=t.DEFAULT_REGION=t.IGNORE_FILE=void 0;const r=n(26242),i=n(26470),o=n(56447),s=n(86525),a=n(19558),l=n(72825),c=n(92071),u=n(43739);t.IGNORE_FILE=".redocly.lint-ignore.yaml";t.DEFAULT_REGION="us",t.DOMAINS=function(){const e={us:"redocly.com",eu:"eu.redocly.com"},t=l.env.REDOCLY_DOMAIN;return(null==t?void 0:t.endsWith(".redocly.host"))&&(e[t.split(".")[0]]=t),"redoc.online"===t&&(e[t]=t),e}(),t.AVAILABLE_REGIONS=Object.keys(t.DOMAINS);class p{constructor(e,n){this.rawConfig=e,this.configFile=n,this.ignore={},this._usedRules=new Set,this._usedVersions=new Set,this.plugins=e.plugins||[],this.doNotResolveExamples=!!e.doNotResolveExamples,this.recommendedFallback=e.recommendedFallback||!1,this.rules={[a.OasVersion.Version2]:Object.assign(Object.assign({},e.rules),e.oas2Rules),[a.OasVersion.Version3_0]:Object.assign(Object.assign({},e.rules),e.oas3_0Rules),[a.OasVersion.Version3_1]:Object.assign(Object.assign({},e.rules),e.oas3_1Rules)},this.preprocessors={[a.OasVersion.Version2]:Object.assign(Object.assign({},e.preprocessors),e.oas2Preprocessors),[a.OasVersion.Version3_0]:Object.assign(Object.assign({},e.preprocessors),e.oas3_0Preprocessors),[a.OasVersion.Version3_1]:Object.assign(Object.assign({},e.preprocessors),e.oas3_1Preprocessors)},this.decorators={[a.OasVersion.Version2]:Object.assign(Object.assign({},e.decorators),e.oas2Decorators),[a.OasVersion.Version3_0]:Object.assign(Object.assign({},e.decorators),e.oas3_0Decorators),[a.OasVersion.Version3_1]:Object.assign(Object.assign({},e.decorators),e.oas3_1Decorators)},this.extendPaths=e.extendPaths||[],this.pluginPaths=e.pluginPaths||[],this.resolveIgnore(function(e){return e?s.doesYamlFileExist(e)?i.join(i.dirname(e),t.IGNORE_FILE):i.join(e,t.IGNORE_FILE):l.isBrowser?void 0:i.join(process.cwd(),t.IGNORE_FILE)}(n))}resolveIgnore(e){if(e&&s.doesYamlFileExist(e)){this.ignore=o.parseYaml(r.readFileSync(e,"utf-8"))||{};for(const t of Object.keys(this.ignore)){this.ignore[u.isAbsoluteUrl(t)?t:i.resolve(i.dirname(e),t)]=this.ignore[t];for(const e of Object.keys(this.ignore[t]))this.ignore[t][e]=new Set(this.ignore[t][e]);u.isAbsoluteUrl(t)||delete this.ignore[t]}}}saveIgnore(){const e=this.configFile?i.dirname(this.configFile):process.cwd(),n=i.join(e,t.IGNORE_FILE),a={};for(const t of Object.keys(this.ignore)){const n=a[u.isAbsoluteUrl(t)?t:s.slash(i.relative(e,t))]=this.ignore[t];for(const e of Object.keys(n))n[e]=Array.from(n[e])}r.writeFileSync(n,"# This file instructs Redocly's linter to ignore the rules contained for specific parts of your API.\n# See https://redoc.ly/docs/cli/ for more information.\n"+o.stringifyYaml(a))}addIgnore(e){const t=this.ignore,n=e.location[0];if(void 0===n.pointer)return;const r=t[n.source.absoluteRef]=t[n.source.absoluteRef]||{};(r[e.ruleId]=r[e.ruleId]||new Set).add(n.pointer)}addProblemToIgnore(e){const t=e.location[0];if(void 0===t.pointer)return e;const n=(this.ignore[t.source.absoluteRef]||{})[e.ruleId],r=n&&n.has(t.pointer);return r?Object.assign(Object.assign({},e),{ignored:r}):e}extendTypes(e,t){let n=e;for(const r of this.plugins)if(void 0!==r.typeExtension)switch(t){case a.OasVersion.Version3_0:case a.OasVersion.Version3_1:if(!r.typeExtension.oas3)continue;n=r.typeExtension.oas3(n,t);break;case a.OasVersion.Version2:if(!r.typeExtension.oas2)continue;n=r.typeExtension.oas2(n,t);break;default:throw new Error("Not implemented")}return n}getRuleSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.rules[t][e]||"off";return"string"==typeof n?{severity:n}:Object.assign({severity:"error"},n)}getPreprocessorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.preprocessors[t][e]||"off";return"string"==typeof n?{severity:"on"===n?"error":n}:Object.assign({severity:"error"},n)}getDecoratorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.decorators[t][e]||"off";return"string"==typeof n?{severity:"on"===n?"error":n}:Object.assign({severity:"error"},n)}getUnusedRules(){const e=[],t=[],n=[];for(const r of Array.from(this._usedVersions))e.push(...Object.keys(this.rules[r]).filter((e=>!this._usedRules.has(e)))),t.push(...Object.keys(this.decorators[r]).filter((e=>!this._usedRules.has(e)))),n.push(...Object.keys(this.preprocessors[r]).filter((e=>!this._usedRules.has(e))));return{rules:e,preprocessors:n,decorators:t}}getRulesForOasVersion(e){switch(e){case a.OasMajorVersion.Version3:const e=[];return this.plugins.forEach((t=>{var n;return(null===(n=t.preprocessors)||void 0===n?void 0:n.oas3)&&e.push(t.preprocessors.oas3)})),this.plugins.forEach((t=>{var n;return(null===(n=t.rules)||void 0===n?void 0:n.oas3)&&e.push(t.rules.oas3)})),this.plugins.forEach((t=>{var n;return(null===(n=t.decorators)||void 0===n?void 0:n.oas3)&&e.push(t.decorators.oas3)})),e;case a.OasMajorVersion.Version2:const t=[];return this.plugins.forEach((e=>{var n;return(null===(n=e.preprocessors)||void 0===n?void 0:n.oas2)&&t.push(e.preprocessors.oas2)})),this.plugins.forEach((e=>{var n;return(null===(n=e.rules)||void 0===n?void 0:n.oas2)&&t.push(e.rules.oas2)})),this.plugins.forEach((e=>{var n;return(null===(n=e.decorators)||void 0===n?void 0:n.oas2)&&t.push(e.decorators.oas2)})),t}}skipRules(e){for(const t of e||[])for(const e of Object.values(a.OasVersion))this.rules[e][t]&&(this.rules[e][t]="off")}skipPreprocessors(e){for(const t of e||[])for(const e of Object.values(a.OasVersion))this.preprocessors[e][t]&&(this.preprocessors[e][t]="off")}skipDecorators(e){for(const t of e||[])for(const e of Object.values(a.OasVersion))this.decorators[e][t]&&(this.decorators[e][t]="off")}}t.StyleguideConfig=p;t.Config=class{constructor(e,t){this.rawConfig=e,this.configFile=t,this.apis=e.apis||{},this.styleguide=new p(e.styleguide||{},t),this.theme=e.theme||{},this.resolve=c.getResolveConfig(null==e?void 0:e.resolve),this.region=e.region,this.organization=e.organization,this.files=e.files||[],this.telemetry=e.telemetry}}},25515:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initRules=void 0;const r=n(86525);t.initRules=function(e,t,n,i){return e.flatMap((e=>Object.keys(e).map((r=>{const o=e[r],s="rules"===n?t.getRuleSettings(r,i):"preprocessors"===n?t.getPreprocessorSettings(r,i):t.getDecoratorSettings(r,i);if("off"===s.severity)return;const a=s.severity,l=o(s);return Array.isArray(l)?l.map((e=>({severity:a,ruleId:r,visitor:e}))):{severity:a,ruleId:r,visitor:l}})))).flatMap((e=>e)).filter(r.isDefined)}},92071:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);it[e]));n[e]&&null===t&&i.showWarningForDeprecatedField(e),n[e]&&t&&n[t]&&i.showErrorForDeprecatedField(e,t),n[e]&&r&&n[r]&&i.showErrorForDeprecatedField(e,t,r),(n[e]||o)&&i.showWarningForDeprecatedField(e,t,r)}t.parsePresetName=function(e){if(e.indexOf("/")>-1){const[t,n]=e.split("/");return{pluginId:t,configName:n}}return{pluginId:"",configName:e}},t.transformApiDefinitionsToApis=a,t.prefixRules=function(e,t){if(!t)return e;const n={};for(const r of Object.keys(e))n[`${t}/${r}`]=e[r];return n},t.mergeExtends=function(e){const t={rules:{},oas2Rules:{},oas3_0Rules:{},oas3_1Rules:{},preprocessors:{},oas2Preprocessors:{},oas3_0Preprocessors:{},oas3_1Preprocessors:{},decorators:{},oas2Decorators:{},oas3_0Decorators:{},oas3_1Decorators:{},plugins:[],pluginPaths:[],extendPaths:[]};for(const n of e){if(n.extends)throw new Error(`'extends' is not supported in shared configs yet: ${JSON.stringify(n,null,2)}.`);Object.assign(t.rules,n.rules),Object.assign(t.oas2Rules,n.oas2Rules),i.assignExisting(t.oas2Rules,n.rules||{}),Object.assign(t.oas3_0Rules,n.oas3_0Rules),i.assignExisting(t.oas3_0Rules,n.rules||{}),Object.assign(t.oas3_1Rules,n.oas3_1Rules),i.assignExisting(t.oas3_1Rules,n.rules||{}),Object.assign(t.preprocessors,n.preprocessors),Object.assign(t.oas2Preprocessors,n.oas2Preprocessors),i.assignExisting(t.oas2Preprocessors,n.preprocessors||{}),Object.assign(t.oas3_0Preprocessors,n.oas3_0Preprocessors),i.assignExisting(t.oas3_0Preprocessors,n.preprocessors||{}),Object.assign(t.oas3_1Preprocessors,n.oas3_1Preprocessors),i.assignExisting(t.oas3_1Preprocessors,n.preprocessors||{}),Object.assign(t.decorators,n.decorators),Object.assign(t.oas2Decorators,n.oas2Decorators),i.assignExisting(t.oas2Decorators,n.decorators||{}),Object.assign(t.oas3_0Decorators,n.oas3_0Decorators),i.assignExisting(t.oas3_0Decorators,n.decorators||{}),Object.assign(t.oas3_1Decorators,n.oas3_1Decorators),i.assignExisting(t.oas3_1Decorators,n.decorators||{}),t.plugins.push(...n.plugins||[]),t.pluginPaths.push(...n.pluginPaths||[]),t.extendPaths.push(...new Set(n.extendPaths))}return t},t.getMergedConfig=function(e,t){var n,r,s,a,l,c,u,p;const d=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.styleguide)||void 0===t?void 0:t.extendPaths})),null===(r=null===(n=e.rawConfig)||void 0===n?void 0:n.styleguide)||void 0===r?void 0:r.extendPaths].flat().filter(i.isTruthy),f=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.styleguide)||void 0===t?void 0:t.pluginPaths})),null===(a=null===(s=e.rawConfig)||void 0===s?void 0:s.styleguide)||void 0===a?void 0:a.pluginPaths].flat().filter(i.isTruthy);return t?new o.Config(Object.assign(Object.assign({},e.rawConfig),{styleguide:Object.assign(Object.assign({},e.apis[t]?e.apis[t].styleguide:e.rawConfig.styleguide),{extendPaths:d,pluginPaths:f}),theme:Object.assign(Object.assign({},e.rawConfig.theme),null===(l=e.apis[t])||void 0===l?void 0:l.theme),files:[...e.files,...null!==(p=null===(u=null===(c=e.apis)||void 0===c?void 0:c[t])||void 0===u?void 0:u.files)&&void 0!==p?p:[]]}),e.configFile):e},t.checkForDeprecatedFields=u,t.transformConfig=function(e){var t,n;const i=[["apiDefinitions","apis",void 0],["referenceDocs","openapi","theme"],["lint",void 0,void 0],["styleguide",void 0,void 0],["features.openapi","openapi","theme"]];for(const[r,s,a]of i)u(r,s,e,a);const{apis:o,apiDefinitions:p,referenceDocs:d,lint:f}=e,h=r(e,["apis","apiDefinitions","referenceDocs","lint"]),{styleguideConfig:m,rawConfigRest:g}=l(h),y=Object.assign({theme:{openapi:Object.assign(Object.assign(Object.assign({},d),e["features.openapi"]),null===(t=e.theme)||void 0===t?void 0:t.openapi),mockServer:Object.assign(Object.assign({},e["features.mockServer"]),null===(n=e.theme)||void 0===n?void 0:n.mockServer)},apis:c(o)||a(p),styleguide:m||f},g);return function(e){var t,n;let r=Object.assign({},null===(t=e.styleguide)||void 0===t?void 0:t.rules);for(const i of Object.values(e.apis||{}))r=Object.assign(Object.assign({},r),null===(n=null==i?void 0:i.styleguide)||void 0===n?void 0:n.rules);for(const i of Object.keys(r))i.startsWith("assert/")&&s.logger.warn(`\nThe 'assert/' syntax in ${i} is deprecated. Update your configuration to use 'rule/' instead. Examples and more information: https://redocly.com/docs/cli/rules/configurable-rules/\n`)}(y),y},t.getResolveConfig=function(e){var t,n;return{http:{headers:null!==(n=null===(t=null==e?void 0:e.http)||void 0===t?void 0:t.headers)&&void 0!==n?n:[],customFetch:void 0}}},t.getUniquePlugins=function(e){const t=new Set,n=[];for(const r of e)t.has(r.id)?r.id&&s.logger.warn(`Duplicate plugin id "${s.colorize.red(r.id)}".\n`):(n.push(r),t.add(r.id));return n}},72825:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.env=t.isBrowser=void 0,t.isBrowser="undefined"!=typeof window||"undefined"!=typeof self||"undefined"==typeof process,t.env=t.isBrowser?{}:{}||{}},56447:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringifyYaml=t.parseYaml=void 0;const r=n(93320),i=r.JSON_SCHEMA.extend({implicit:[r.types.merge],explicit:[r.types.binary,r.types.omap,r.types.pairs,r.types.set]});t.parseYaml=(e,t)=>r.load(e,Object.assign({schema:i},t));t.stringifyYaml=(e,t)=>r.dump(e,t)},73536:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.logger=t.colorize=t.colorOptions=void 0;const r=n(43044);var i=n(43044);Object.defineProperty(t,"colorOptions",{enumerable:!0,get:function(){return i.options}});const o=n(72825),s=n(86525);t.colorize=new Proxy(r,{get:(e,t)=>o.isBrowser?s.identity:e[t]});t.logger=new class{stderr(e){return process.stderr.write(e)}info(e){return o.isBrowser?console.log(e):this.stderr(e)}warn(e){return o.isBrowser?console.warn(e):this.stderr(t.colorize.yellow(e))}error(e){return o.isBrowser?console.error(e):this.stderr(t.colorize.red(e))}}},19558:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.openAPIMajor=t.detectOpenAPI=t.OasMajorVersion=t.OasVersion=void 0,function(e){e.Version2="oas2",e.Version3_0="oas3_0",e.Version3_1="oas3_1"}(n=t.OasVersion||(t.OasVersion={})),function(e){e.Version2="oas2",e.Version3="oas3"}(r=t.OasMajorVersion||(t.OasMajorVersion={})),t.detectOpenAPI=function(e){if("object"!=typeof e)throw new Error("Document must be JSON object, got "+typeof e);if(!e.openapi&&!e.swagger)throw new Error("This doesn\u2019t look like an OpenAPI document.\n");if(e.openapi&&"string"!=typeof e.openapi)throw new Error(`Invalid OpenAPI version: should be a string but got "${typeof e.openapi}"`);if(e.openapi&&e.openapi.startsWith("3.0"))return n.Version3_0;if(e.openapi&&e.openapi.startsWith("3.1"))return n.Version3_1;if(e.swagger&&"2.0"===e.swagger)return n.Version2;throw new Error(`Unsupported OpenAPI Version: ${e.openapi||e.swagger}`)},t.openAPIMajor=function(e){return e===n.Version2?r.Version2:r.Version3}},16876:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isRedoclyRegistryURL=t.RedoclyClient=void 0;const i=n(11314),o=n(26470),s=n(99018),a=n(88935),l=n(1258),c=n(72825),u=n(86525),p=n(73536),d=".redocly-config.json";t.RedoclyClient=class{constructor(e){this.accessTokens={},this.region=this.loadRegion(e),this.loadTokens(),this.domain=e?l.DOMAINS[e]:c.env.REDOCLY_DOMAIN||l.DOMAINS[l.DEFAULT_REGION],c.env.REDOCLY_DOMAIN=this.domain,this.registryApi=new a.RegistryApi(this.accessTokens,this.region)}loadRegion(e){if(e&&!l.DOMAINS[e])throw new Error(`Invalid argument: region in config file.\nGiven: ${p.colorize.green(e)}, choices: "us", "eu".`);return c.env.REDOCLY_DOMAIN?l.AVAILABLE_REGIONS.find((e=>l.DOMAINS[e]===c.env.REDOCLY_DOMAIN))||l.DEFAULT_REGION:e||l.DEFAULT_REGION}getRegion(){return this.region}hasTokens(){return u.isNotEmptyObject(this.accessTokens)}hasToken(){return!!this.accessTokens[this.region]}getAuthorizationHeader(){return r(this,void 0,void 0,(function*(){return this.accessTokens[this.region]}))}setAccessTokens(e){this.accessTokens=e}loadTokens(){const e=o.resolve(s.homedir(),d),t=this.readCredentialsFile(e);u.isNotEmptyObject(t)&&this.setAccessTokens(Object.assign(Object.assign({},t),t.token&&!t[this.region]&&{[this.region]:t.token})),c.env.REDOCLY_AUTHORIZATION&&this.setAccessTokens(Object.assign(Object.assign({},this.accessTokens),{[this.region]:c.env.REDOCLY_AUTHORIZATION}))}getAllTokens(){return Object.entries(this.accessTokens).filter((([e])=>l.AVAILABLE_REGIONS.includes(e))).map((([e,t])=>({region:e,token:t})))}getValidTokens(){return r(this,void 0,void 0,(function*(){const e=this.getAllTokens(),t=yield Promise.allSettled(e.map((({token:e,region:t})=>this.verifyToken(e,t))));return e.filter(((e,n)=>"fulfilled"===t[n].status)).map((({token:e,region:t})=>({token:e,region:t,valid:!0})))}))}getTokens(){return r(this,void 0,void 0,(function*(){return this.hasTokens()?yield this.getValidTokens():[]}))}isAuthorizedWithRedoclyByRegion(){return r(this,void 0,void 0,(function*(){if(!this.hasTokens())return!1;const e=this.accessTokens[this.region];if(!e)return!1;try{return yield this.verifyToken(e,this.region),!0}catch(t){return!1}}))}isAuthorizedWithRedocly(){return r(this,void 0,void 0,(function*(){return this.hasTokens()&&u.isNotEmptyObject(yield this.getValidTokens())}))}readCredentialsFile(e){return i.existsSync(e)?JSON.parse(i.readFileSync(e,"utf-8")):{}}verifyToken(e,t,n=!1){return r(this,void 0,void 0,(function*(){return this.registryApi.authStatus(e,t,n)}))}login(e,t=!1){return r(this,void 0,void 0,(function*(){const n=o.resolve(s.homedir(),d);try{yield this.verifyToken(e,this.region,t)}catch(a){throw new Error("Authorization failed. Please check if you entered a valid API key.")}const r=Object.assign(Object.assign({},this.readCredentialsFile(n)),{[this.region]:e,token:e});this.accessTokens=r,this.registryApi.setAccessTokens(r),i.writeFileSync(n,JSON.stringify(r,null,2))}))}logout(){const e=o.resolve(s.homedir(),d);i.existsSync(e)&&i.unlinkSync(e)}},t.isRedoclyRegistryURL=function(e){const t=c.env.REDOCLY_DOMAIN||l.DOMAINS[l.DEFAULT_REGION],n="redocly.com"===t?"redoc.ly":t;return!(!e.startsWith(`https://api.${t}/registry/`)&&!e.startsWith(`https://api.${n}/registry/`))}},88935:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegistryApi=void 0;const i=n(67251),o=n(1258),s=n(86525),a=n(70501).i8;t.RegistryApi=class{constructor(e,t){this.accessTokens=e,this.region=t}get accessToken(){return s.isNotEmptyObject(this.accessTokens)&&this.accessTokens[this.region]}getBaseUrl(e=o.DEFAULT_REGION){return`https://api.${o.DOMAINS[e]}/registry`}setAccessTokens(e){return this.accessTokens=e,this}request(e="",t={},n){var o,s;return r(this,void 0,void 0,(function*(){const r="undefined"!=typeof process&&(null===(o={})||void 0===o?void 0:o.REDOCLY_CLI_COMMAND)||"",l="undefined"!=typeof process&&(null===(s={})||void 0===s?void 0:s.REDOCLY_ENVIRONMENT)||"",c=Object.assign({},t.headers||{},{"x-redocly-cli-version":a,"user-agent":`redocly-cli / ${a} ${r} ${l}`});if(!c.hasOwnProperty("authorization"))throw new Error("Unauthorized");const u=yield i.default(`${this.getBaseUrl(n)}${e}`,Object.assign({},t,{headers:c}));if(401===u.status)throw new Error("Unauthorized");if(404===u.status){const e=yield u.json();throw new Error(e.code)}return u}))}authStatus(e,t,n=!1){return r(this,void 0,void 0,(function*(){try{const n=yield this.request("",{headers:{authorization:e}},t);return yield n.json()}catch(r){throw n&&console.log(r),r}}))}prepareFileUpload({organizationId:e,name:t,version:n,filesHash:i,filename:o,isUpsert:s}){return r(this,void 0,void 0,(function*(){const r=yield this.request(`/${e}/${t}/${n}/prepare-file-upload`,{method:"POST",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({filesHash:i,filename:o,isUpsert:s})},this.region);if(r.ok)return r.json();throw new Error("Could not prepare file upload")}))}pushApi({organizationId:e,name:t,version:n,rootFilePath:i,filePaths:o,branch:s,isUpsert:a,isPublic:l,batchId:c,batchSize:u}){return r(this,void 0,void 0,(function*(){if(!(yield this.request(`/${e}/${t}/${n}`,{method:"PUT",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({rootFilePath:i,filePaths:o,branch:s,isUpsert:a,isPublic:l,batchId:c,batchSize:u})},this.region)).ok)throw new Error("Could not push api")}))}}},43739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAnchor=t.isMappingRef=t.isAbsoluteUrl=t.refBaseName=t.pointerBaseName=t.parsePointer=t.parseRef=t.escapePointer=t.unescapePointer=t.Location=t.isRef=t.joinPointer=void 0;const r=n(86525);function i(e,t){return""===e&&(e="#/"),"/"===e[e.length-1]?e+t:e+"/"+t}t.joinPointer=i,t.isRef=function(e){return e&&"string"==typeof e.$ref};class o{constructor(e,t){this.source=e,this.pointer=t}child(e){return new o(this.source,i(this.pointer,(Array.isArray(e)?e:[e]).map(a).join("/")))}key(){return Object.assign(Object.assign({},this),{reportOnKey:!0})}get absolutePointer(){return this.source.absoluteRef+("#/"===this.pointer?"":this.pointer)}}function s(e){return decodeURIComponent(e.replace(/~1/g,"/").replace(/~0/g,"~"))}function a(e){return"number"==typeof e?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}t.Location=o,t.unescapePointer=s,t.escapePointer=a,t.parseRef=function(e){const[t,n]=e.split("#/");return{uri:t||null,pointer:n?n.split("/").map(s).filter(r.isTruthy):[]}},t.parsePointer=function(e){return e.substr(2).split("/").map(s)},t.pointerBaseName=function(e){const t=e.split("/");return t[t.length-1]},t.refBaseName=function(e){const t=e.split(/[\/\\]/);return t[t.length-1].replace(/\.[^.]+$/,"")},t.isAbsoluteUrl=function(e){return e.startsWith("http://")||e.startsWith("https://")},t.isMappingRef=function(e){return e.startsWith("#")||e.startsWith("https://")||e.startsWith("http://")||e.startsWith("./")||e.startsWith("../")||e.indexOf("/")>-1},t.isAnchor=function(e){return/^#[A-Za-z][A-Za-z0-9\-_:.]*$/.test(e)}},19813:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.resolveDocument=t.BaseResolver=t.makeDocumentFromString=t.makeRefId=t.YamlParseError=t.ResolveError=t.Source=void 0;const i=n(3408),o=n(26470),s=n(43739),a=n(28286),l=n(86525);class c{constructor(e,t,n){this.absoluteRef=e,this.body=t,this.mimeType=n}getAst(e){var t;return void 0===this._ast&&(this._ast=null!==(t=e(this.body,{filename:this.absoluteRef}))&&void 0!==t?t:void 0,this._ast&&0===this._ast.kind&&""===this._ast.value&&1!==this._ast.startPosition&&(this._ast.startPosition=1,this._ast.endPosition=1)),this._ast}getLines(){return void 0===this._lines&&(this._lines=this.body.split(/\r\n|[\n\r]/g)),this._lines}}t.Source=c;class u extends Error{constructor(e){super(e.message),this.originalError=e,Object.setPrototypeOf(this,u.prototype)}}t.ResolveError=u;const p=/\((\d+):(\d+)\)$/;class d extends Error{constructor(e,t){super(e.message.split("\n")[0]),this.originalError=e,this.source=t,Object.setPrototypeOf(this,d.prototype);const[,n,r]=this.message.match(p)||[];this.line=parseInt(n,10),this.col=parseInt(r,10)}}function f(e,t){return e+"::"+t}t.YamlParseError=d,t.makeRefId=f,t.makeDocumentFromString=function(e,t){const n=new c(t,e);try{return{source:n,parsed:l.parseYaml(e,{filename:t})}}catch(r){throw new d(r,n)}};function h(e,t){return{prev:e,node:t}}t.BaseResolver=class{constructor(e={http:{headers:[]}}){this.config=e,this.cache=new Map}getFiles(){return new Set(Array.from(this.cache.keys()))}resolveExternalRef(e,t){return s.isAbsoluteUrl(t)?t:e&&s.isAbsoluteUrl(e)?new URL(t,e).href:o.resolve(e?o.dirname(e):process.cwd(),t)}loadExternalRef(e){return r(this,void 0,void 0,(function*(){try{if(s.isAbsoluteUrl(e)){const{body:t,mimeType:n}=yield l.readFileFromUrl(e,this.config.http);return new c(e,t,n)}{if(i.lstatSync(e).isDirectory())throw new Error(`Expected a file but received a folder at ${e}`);const t=yield i.promises.readFile(e,"utf-8");return new c(e,t.replace(/\r\n/g,"\n"))}}catch(t){throw t.message=t.message.replace(", lstat",""),new u(t)}}))}parseDocument(e,t=!1){var n;const r=e.absoluteRef.substr(e.absoluteRef.lastIndexOf("."));if(![".json",".json",".yml",".yaml"].includes(r)&&!(null===(n=e.mimeType)||void 0===n?void 0:n.match(/(json|yaml|openapi)/))&&!t)return{source:e,parsed:e.body};try{return{source:e,parsed:l.parseYaml(e.body,{filename:e.absoluteRef})}}catch(i){throw new d(i,e)}}resolveDocument(e,t,n=!1){return r(this,void 0,void 0,(function*(){const r=this.resolveExternalRef(e,t),i=this.cache.get(r);if(i)return i;const o=this.loadExternalRef(r).then((e=>this.parseDocument(e,n)));return this.cache.set(r,o),o}))}};const m={name:"unknown",properties:{}},g={name:"scalar",properties:{}};t.resolveDocument=function(e){return r(this,void 0,void 0,(function*(){const{rootDocument:t,externalRefResolver:n,rootType:i}=e,o=new Map,c=new Set,u=[];let p;!function e(t,i,p,d){const y=i.source.absoluteRef,v=new Map;function b(t,n,r){if("object"!=typeof t||null===t)return;const o=`${n.name}::${r}`;if(c.has(o))return;c.add(o);const[l,p]=Object.entries(t).find((([e])=>"$anchor"===e))||[];if(p&&v.set(`#${p}`,t),Array.isArray(t)){const e=n.items;if(void 0===e&&n!==m&&n!==a.SpecExtension)return;for(let n=0;n{t.resolved&&e(t.node,t.document,t.nodePointer,n)}));u.push(r)}}}function x(e,t,i){return r(this,void 0,void 0,(function*(){if(function(e,t){for(;e;){if(e.node===t)return!0;e=e.prev}return!1}(i.prev,t))throw new Error("Self-referencing circular pointer");if(s.isAnchor(t.$ref)){yield l.nextTick();const n={resolved:!0,isRemote:!1,node:v.get(t.$ref),document:e,nodePointer:t.$ref},r=f(e.source.absoluteRef,t.$ref);return o.set(r,n),n}const{uri:r,pointer:a}=s.parseRef(t.$ref),c=null!==r;let u;try{u=c?yield n.resolveDocument(e.source.absoluteRef,r):e}catch(y){const n={resolved:!1,isRemote:c,document:void 0,error:y},r=f(e.source.absoluteRef,t.$ref);return o.set(r,n),n}let p={resolved:!0,document:u,isRemote:c,node:e.parsed,nodePointer:"#/"},d=u.parsed;const m=a;for(const e of m){if("object"!=typeof d){d=void 0;break}if(void 0!==d[e])d=d[e],p.nodePointer=s.joinPointer(p.nodePointer,s.escapePointer(e));else{if(!s.isRef(d)){d=void 0;break}if(p=yield x(u,d,h(i,d)),u=p.document||u,"object"!=typeof p.node){d=void 0;break}d=p.node[e],p.nodePointer=s.joinPointer(p.nodePointer,s.escapePointer(e))}}p.node=d,p.document=u;const g=f(e.source.absoluteRef,t.$ref);return p.document&&s.isRef(d)&&(p=yield x(p.document,d,h(i,d))),o.set(g,p),Object.assign({},p)}))}b(t,d,y+p)}(t.parsed,t,"#/",i);do{p=yield Promise.all(u)}while(u.length!==p.length);return o}))}},25242:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportUnresolvedRef=t.NoUnresolvedRefs=void 0;const r=n(19813);function i(e,t,n){var i;const o=e.error;o instanceof r.YamlParseError&&t({message:"Failed to parse: "+o.message,location:{source:o.source,pointer:void 0,start:{col:o.col,line:o.line}}});const s=null===(i=e.error)||void 0===i?void 0:i.message;t({location:n,message:"Can't resolve $ref"+(s?": "+s:"")})}t.NoUnresolvedRefs=()=>({ref:{leave(e,{report:t,location:n},r){void 0===r.node&&i(r,t,n)}},DiscriminatorMapping(e,{report:t,resolve:n,location:r}){for(const o of Object.keys(e)){const s=n({$ref:e[o]});if(void 0!==s.node)return;i(s,t,r.child(o))}}}),t.reportUnresolvedRef=i},5068:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;const r=n(86525);t.RemoveUnusedComponents=()=>{const e=new Map;function t(t,n,r){var i;e.set(t.absolutePointer,{used:(null===(i=e.get(t.absolutePointer))||void 0===i?void 0:i.used)||!1,componentType:n,name:r})}return{ref:{leave(t,{type:n,resolve:r,key:i}){if(["Schema","Parameter","Response","SecurityScheme"].includes(n.name)){const n=r(t);if(!n.location)return;e.set(n.location.absolutePointer,{used:!0,name:i.toString()})}}},Root:{leave(t,n){const i=n.getVisitorData();i.removedCount=0;const o=new Set;e.forEach((e=>{const{used:n,name:r,componentType:s}=e;!n&&s&&(o.add(s),delete t[s][r],i.removedCount++)}));for(const e of o)r.isEmptyObject(t[e])&&delete t[e]}},NamedSchemas:{Schema(e,{location:n,key:r}){e.allOf||t(n,"definitions",r.toString())}},NamedParameters:{Parameter(e,{location:n,key:r}){t(n,"parameters",r.toString())}},NamedResponses:{Response(e,{location:n,key:r}){t(n,"responses",r.toString())}},NamedSecuritySchemes:{SecurityScheme(e,{location:n,key:r}){t(n,"securityDefinitions",r.toString())}}}}},72888:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;const r=n(86525);t.RemoveUnusedComponents=()=>{const e=new Map;function t(t,n,r){var i;e.set(t.absolutePointer,{used:(null===(i=e.get(t.absolutePointer))||void 0===i?void 0:i.used)||!1,componentType:n,name:r})}return{ref:{leave(t,{type:n,resolve:r,key:i}){if(["Schema","Header","Parameter","Response","Example","RequestBody"].includes(n.name)){const n=r(t);if(!n.location)return;e.set(n.location.absolutePointer,{used:!0,name:i.toString()})}}},Root:{leave(t,n){const i=n.getVisitorData();i.removedCount=0,e.forEach((e=>{const{used:n,componentType:o,name:s}=e;if(!n&&o&&t.components){const e=t.components[o];delete e[s],i.removedCount++,r.isEmptyObject(e)&&delete t.components[o]}})),r.isEmptyObject(t.components)&&delete t.components}},NamedSchemas:{Schema(e,{location:n,key:r}){e.allOf||t(n,"schemas",r.toString())}},NamedParameters:{Parameter(e,{location:n,key:r}){t(n,"parameters",r.toString())}},NamedResponses:{Response(e,{location:n,key:r}){t(n,"responses",r.toString())}},NamedExamples:{Example(e,{location:n,key:r}){t(n,"examples",r.toString())}},NamedRequestBodies:{RequestBody(e,{location:n,key:r}){t(n,"requestBodies",r.toString())}},NamedHeaders:{Header(e,{location:n,key:r}){t(n,"headers",r.toString())}}}}},28286:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNamedType=t.normalizeTypes=t.SpecExtension=t.mapOf=t.listOf=void 0,t.listOf=function(e){return{name:`${e}List`,properties:{},items:e}},t.mapOf=function(e){return{name:`${e}Map`,properties:{},additionalProperties:()=>e}},t.SpecExtension={name:"SpecExtension",properties:{},additionalProperties:{resolvable:!0}},t.normalizeTypes=function(e,n={}){const r={};for(const t of Object.keys(e))r[t]=Object.assign(Object.assign({},e[t]),{name:t});for(const t of Object.values(r))i(t);return r.SpecExtension=t.SpecExtension,r;function i(e){if(e.additionalProperties&&(e.additionalProperties=o(e.additionalProperties)),e.items&&(e.items=o(e.items)),e.properties){const t={};for(const[r,i]of Object.entries(e.properties))t[r]=o(i),n.doNotResolveExamples&&i&&i.isExample&&(t[r]=Object.assign(Object.assign({},i),{resolvable:!1}));e.properties=t}}function o(e){if("string"==typeof e){if(!r[e])throw new Error(`Unknown type name found: ${e}`);return r[e]}return"function"==typeof e?(t,n)=>o(e(t,n)):e&&e.name?(i(e=Object.assign({},e)),e):e&&e.directResolveAs?Object.assign(Object.assign({},e),{directResolveAs:o(e.directResolveAs)}):e}},t.isNamedType=function(e){return"string"==typeof(null==e?void 0:e.name)}},6930:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas2Types=void 0;const r=n(28286),i=/^[0-9][0-9Xx]{2}$/,o={properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},s={properties:{name:{type:"string"},in:{type:"string",enum:["query","header","path","formData","body"]},description:{type:"string"},required:{type:"boolean"},schema:"Schema",type:{type:"string",enum:["string","number","integer","boolean","array","file"]},format:{type:"string"},allowEmptyValue:{type:"boolean"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"},"x-example":"Example","x-examples":"ExamplesMap"},required:e=>e&&e.in?"body"===e.in?["name","in","schema"]:"array"===e.type?["name","in","type","items"]:["name","in","type"]:["name","in"],extensionsPrefix:"x-"},a={properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"],extensionsPrefix:"x-"},l={properties:{default:"Response"},additionalProperties:(e,t)=>i.test(t)?"Response":void 0},c={properties:{description:{type:"string"},schema:"Schema",headers:r.mapOf("Header"),examples:"Examples","x-summary":{type:"string"}},required:["description"],extensionsPrefix:"x-"},u={properties:{description:{type:"string"},type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"],extensionsPrefix:"x-"},p={properties:{format:{type:"string"},title:{type:"string"},description:{type:"string"},default:null,multipleOf:{type:"number"},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"number"},minLength:{type:"number"},pattern:{type:"string"},maxItems:{type:"number"},minItems:{type:"number"},uniqueItems:{type:"boolean"},maxProperties:{type:"number"},minProperties:{type:"number"},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{type:"string",enum:["object","array","string","number","integer","boolean","null"]},items:e=>Array.isArray(e)?r.listOf("Schema"):"Schema",allOf:r.listOf("Schema"),properties:"SchemaProperties",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",discriminator:{type:"string"},readOnly:{type:"boolean"},xml:"Xml",externalDocs:"ExternalDocs",example:{isExample:!0},"x-tags":{type:"array",items:{type:"string"}},"x-nullable":{type:"boolean"},"x-extendedDiscriminator":{type:"string"},"x-additionalPropertiesName":{type:"string"},"x-explicitMappingOnly":{type:"boolean"},"x-enumDescriptions":"EnumDescriptions"},extensionsPrefix:"x-"},d={properties:{type:{enum:["basic","apiKey","oauth2"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header"]},flow:{enum:["implicit","password","application","accessCode"]},authorizationUrl:{type:"string"},tokenUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},"x-defaultClientId":{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","scopes"];case"application":case"password":return["type","flow","tokenUrl","scopes"];default:return["type","flow","scopes"]}default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"basic":return["type","description"];case"apiKey":return["type","name","in","description"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","description","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","description","scopes"];case"application":case"password":return["type","flow","tokenUrl","description","scopes"];default:return["type","flow","tokenUrl","authorizationUrl","description","scopes"]}default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas2Types={Root:{properties:{swagger:{type:"string"},info:"Info",host:{type:"string"},basePath:{type:"string"},schemes:{type:"array",items:{type:"string"}},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},paths:"Paths",definitions:"NamedSchemas",parameters:"NamedParameters",responses:"NamedResponses",securityDefinitions:"NamedSecuritySchemes",security:"SecurityRequirementList",tags:"TagList",externalDocs:"ExternalDocs","x-servers":"XServerList","x-tagGroups":"TagGroups","x-ignoredHeaderParameters":{type:"array",items:{type:"string"}}},required:["swagger","paths","info"],extensionsPrefix:"x-"},Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs","x-traitTag":{type:"boolean"},"x-displayName":{type:"string"}},required:["name"],extensionsPrefix:"x-"},TagList:r.listOf("Tag"),TagGroups:r.listOf("TagGroup"),TagGroup:{properties:{name:{type:"string"},tags:{type:"array",items:{type:"string"}}}},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"],extensionsPrefix:"x-"},Example:{properties:{value:{isExample:!0},summary:{type:"string"},description:{type:"string"},externalValue:{type:"string"}},extensionsPrefix:"x-"},ExamplesMap:r.mapOf("Example"),EnumDescriptions:{properties:{},additionalProperties:{type:"string"}},SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},SecurityRequirementList:r.listOf("SecurityRequirement"),Info:{properties:{title:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License",version:{type:"string"},"x-logo":"Logo"},required:["title","version"],extensionsPrefix:"x-"},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}},extensionsPrefix:"x-"},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"],extensionsPrefix:"x-"},Logo:{properties:{url:{type:"string"},altText:{type:"string"},backgroundColor:{type:"string"},href:{type:"string"}},extensionsPrefix:"x-"},Paths:o,PathItem:{properties:{$ref:{type:"string"},parameters:"ParameterList",get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation"},extensionsPrefix:"x-"},Parameter:s,ParameterItems:a,ParameterList:r.listOf("Parameter"),Operation:{properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},parameters:"ParameterList",responses:"Responses",schemes:{type:"array",items:{type:"string"}},deprecated:{type:"boolean"},security:"SecurityRequirementList","x-codeSamples":"XCodeSampleList","x-code-samples":"XCodeSampleList","x-hideTryItPanel":{type:"boolean"}},required:["responses"],extensionsPrefix:"x-"},Examples:{properties:{},additionalProperties:{isExample:!0}},Header:u,Responses:l,Response:c,Schema:p,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}},extensionsPrefix:"x-"},SchemaProperties:{properties:{},additionalProperties:"Schema"},NamedSchemas:r.mapOf("Schema"),NamedResponses:r.mapOf("Response"),NamedParameters:r.mapOf("Parameter"),NamedSecuritySchemes:r.mapOf("SecurityScheme"),SecurityScheme:d,XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}},XCodeSampleList:r.listOf("XCodeSample"),XServerList:r.listOf("XServer"),XServer:{properties:{url:{type:"string"},description:{type:"string"}},required:["url"]}}},481:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3Types=void 0;const r=n(28286),i=n(43739),o=/^[0-9][0-9Xx]{2}$/,s={properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},a={properties:{default:"Response"},additionalProperties:(e,t)=>o.test(t)?"Response":void 0},l={properties:{externalDocs:"ExternalDocs",discriminator:"Discriminator",title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{enum:["object","array","string","number","integer","boolean","null"]},allOf:r.listOf("Schema"),anyOf:r.listOf("Schema"),oneOf:r.listOf("Schema"),not:"Schema",properties:"SchemaProperties",items:e=>Array.isArray(e)?r.listOf("Schema"):"Schema",additionalItems:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},default:null,nullable:{type:"boolean"},readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",example:{isExample:!0},deprecated:{type:"boolean"},"x-tags":{type:"array",items:{type:"string"}},"x-additionalPropertiesName":{type:"string"},"x-explicitMappingOnly":{type:"boolean"}},extensionsPrefix:"x-"},c={properties:{},additionalProperties:e=>i.isMappingRef(e)?{type:"string",directResolveAs:"Schema"}:{type:"string"}},u={properties:{type:{enum:["apiKey","http","oauth2","openIdConnect"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"OAuth2Flows",openIdConnectUrl:{type:"string"},"x-defaultClientId":{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":return["type","flows","description"];case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas3Types={Root:{properties:{openapi:null,info:"Info",servers:"ServerList",security:"SecurityRequirementList",tags:"TagList",externalDocs:"ExternalDocs",paths:"Paths",components:"Components","x-webhooks":"WebhooksMap","x-tagGroups":"TagGroups","x-ignoredHeaderParameters":{type:"array",items:{type:"string"}}},required:["openapi","paths","info"],extensionsPrefix:"x-"},Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs","x-traitTag":{type:"boolean"},"x-displayName":{type:"string"}},required:["name"],extensionsPrefix:"x-"},TagList:r.listOf("Tag"),TagGroups:r.listOf("TagGroup"),TagGroup:{properties:{name:{type:"string"},tags:{type:"array",items:{type:"string"}}},extensionsPrefix:"x-"},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"],extensionsPrefix:"x-"},Server:{properties:{url:{type:"string"},description:{type:"string"},variables:"ServerVariablesMap"},required:["url"],extensionsPrefix:"x-"},ServerList:r.listOf("Server"),ServerVariable:{properties:{enum:{type:"array",items:{type:"string"}},default:{type:"string"},description:{type:"string"}},required:["default"],extensionsPrefix:"x-"},ServerVariablesMap:r.mapOf("ServerVariable"),SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},SecurityRequirementList:r.listOf("SecurityRequirement"),Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License","x-logo":"Logo"},required:["title","version"],extensionsPrefix:"x-"},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}},extensionsPrefix:"x-"},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"],extensionsPrefix:"x-"},Paths:s,PathItem:{properties:{$ref:{type:"string"},servers:"ServerList",parameters:"ParameterList",summary:{type:"string"},description:{type:"string"},get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation",trace:"Operation"},extensionsPrefix:"x-"},Parameter:{properties:{name:{type:"string"},in:{enum:["query","header","path","cookie"]},description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:"ExamplesMap",content:"MediaTypesMap"},required:["name","in"],requiredOneOf:["schema","content"],extensionsPrefix:"x-"},ParameterList:r.listOf("Parameter"),Operation:{properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:"ParameterList",security:"SecurityRequirementList",servers:"ServerList",requestBody:"RequestBody",responses:"Responses",deprecated:{type:"boolean"},callbacks:"CallbacksMap","x-codeSamples":"XCodeSampleList","x-code-samples":"XCodeSampleList","x-hideTryItPanel":{type:"boolean"}},required:["responses"],extensionsPrefix:"x-"},Callback:r.mapOf("PathItem"),CallbacksMap:r.mapOf("Callback"),RequestBody:{properties:{description:{type:"string"},required:{type:"boolean"},content:"MediaTypesMap"},required:["content"],extensionsPrefix:"x-"},MediaTypesMap:{properties:{},additionalProperties:"MediaType"},MediaType:{properties:{schema:"Schema",example:{isExample:!0},examples:"ExamplesMap",encoding:"EncodingMap"},extensionsPrefix:"x-"},Example:{properties:{value:{isExample:!0},summary:{type:"string"},description:{type:"string"},externalValue:{type:"string"}},extensionsPrefix:"x-"},ExamplesMap:r.mapOf("Example"),Encoding:{properties:{contentType:{type:"string"},headers:"HeadersMap",style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"}},extensionsPrefix:"x-"},EncodingMap:r.mapOf("Encoding"),EnumDescriptions:{properties:{},additionalProperties:{type:"string"}},Header:{properties:{description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:"ExamplesMap",content:"MediaTypesMap"},requiredOneOf:["schema","content"],extensionsPrefix:"x-"},HeadersMap:r.mapOf("Header"),Responses:a,Response:{properties:{description:{type:"string"},headers:"HeadersMap",content:"MediaTypesMap",links:"LinksMap","x-summary":{type:"string"}},required:["description"],extensionsPrefix:"x-"},Link:{properties:{operationRef:{type:"string"},operationId:{type:"string"},parameters:null,requestBody:null,description:{type:"string"},server:"Server"},extensionsPrefix:"x-"},Logo:{properties:{url:{type:"string"},altText:{type:"string"},backgroundColor:{type:"string"},href:{type:"string"}}},Schema:l,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}},extensionsPrefix:"x-"},SchemaProperties:{properties:{},additionalProperties:"Schema"},DiscriminatorMapping:c,Discriminator:{properties:{propertyName:{type:"string"},mapping:"DiscriminatorMapping"},required:["propertyName"],extensionsPrefix:"x-"},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks"},extensionsPrefix:"x-"},LinksMap:r.mapOf("Link"),NamedSchemas:r.mapOf("Schema"),NamedResponses:r.mapOf("Response"),NamedParameters:r.mapOf("Parameter"),NamedExamples:r.mapOf("Example"),NamedRequestBodies:r.mapOf("RequestBody"),NamedHeaders:r.mapOf("Header"),NamedSecuritySchemes:r.mapOf("SecurityScheme"),NamedLinks:r.mapOf("Link"),NamedCallbacks:r.mapOf("Callback"),ImplicitFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},authorizationUrl:{type:"string"}},required:["authorizationUrl","scopes"],extensionsPrefix:"x-"},PasswordFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"],extensionsPrefix:"x-"},ClientCredentials:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"],extensionsPrefix:"x-"},AuthorizationCode:{properties:{refreshUrl:{type:"string"},authorizationUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"},"x-usePkce":e=>"boolean"==typeof e?{type:"boolean"}:"XUsePkce"},required:["authorizationUrl","tokenUrl","scopes"],extensionsPrefix:"x-"},OAuth2Flows:{properties:{implicit:"ImplicitFlow",password:"PasswordFlow",clientCredentials:"ClientCredentials",authorizationCode:"AuthorizationCode"},extensionsPrefix:"x-"},SecurityScheme:u,XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}},XCodeSampleList:r.listOf("XCodeSample"),XUsePkce:{properties:{disableManualConfiguration:{type:"boolean"},hideClientSecretInput:{type:"boolean"}}},WebhooksMap:{properties:{},additionalProperties:()=>"PathItem"}}},96406:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3_1Types=void 0;const r=n(28286),i=n(481),o={properties:{$id:{type:"string"},$anchor:{type:"string"},id:{type:"string"},$schema:{type:"string"},definitions:"NamedSchemas",$defs:"NamedSchemas",$vocabulary:{type:"string"},externalDocs:"ExternalDocs",discriminator:"Discriminator",title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:e=>Array.isArray(e)?{type:"array",items:{enum:["object","array","string","number","integer","boolean","null"]}}:{enum:["object","array","string","number","integer","boolean","null"]},allOf:r.listOf("Schema"),anyOf:r.listOf("Schema"),oneOf:r.listOf("Schema"),not:"Schema",if:"Schema",then:"Schema",else:"Schema",dependentSchemas:r.listOf("Schema"),prefixItems:r.listOf("Schema"),contains:"Schema",minContains:{type:"integer",minimum:0},maxContains:{type:"integer",minimum:0},patternProperties:{type:"object"},propertyNames:"Schema",unevaluatedItems:"Schema",unevaluatedProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",summary:{type:"string"},properties:"SchemaProperties",items:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},contentEncoding:{type:"string"},contentMediaType:{type:"string"},default:null,readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",examples:{type:"array"},example:{isExample:!0},deprecated:{type:"boolean"},const:null,$comment:{type:"string"},"x-tags":{type:"array",items:{type:"string"}}},extensionsPrefix:"x-"},s={properties:{type:{enum:["apiKey","http","oauth2","openIdConnect","mutualTLS"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"OAuth2Flows",openIdConnectUrl:{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":switch(null==e?void 0:e.flows){case"implicit":return["type","flows","authorizationUrl","refreshUrl","description","scopes"];case"password":case"clientCredentials":return["type","flows","tokenUrl","refreshUrl","description","scopes"];default:return["type","flows","authorizationUrl","refreshUrl","tokenUrl","description","scopes"]}case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas3_1Types=Object.assign(Object.assign({},i.Oas3Types),{Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},summary:{type:"string"},contact:"Contact",license:"License","x-logo":"Logo"},required:["title","version"],extensionsPrefix:"x-"},Root:{properties:{openapi:null,info:"Info",servers:"ServerList",security:"SecurityRequirementList",tags:"TagList",externalDocs:"ExternalDocs",paths:"Paths",webhooks:"WebhooksMap",components:"Components",jsonSchemaDialect:{type:"string"}},required:["openapi","info"],requiredOneOf:["paths","components","webhooks"],extensionsPrefix:"x-"},Schema:o,License:{properties:{name:{type:"string"},url:{type:"string"},identifier:{type:"string"}},required:["name"],extensionsPrefix:"x-"},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks",pathItems:"NamedPathItems"},extensionsPrefix:"x-"},NamedPathItems:r.mapOf("PathItem"),SecurityScheme:s,Operation:{properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:"ParameterList",security:"SecurityRequirementList",servers:"ServerList",requestBody:"RequestBody",responses:"Responses",deprecated:{type:"boolean"},callbacks:"CallbacksMap","x-codeSamples":"XCodeSampleList","x-code-samples":"XCodeSampleList","x-hideTryItPanel":{type:"boolean"}},extensionsPrefix:"x-"}})},86525:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(t){o(t)}}function a(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.pickDefined=t.keysOf=t.identity=t.isTruthy=t.showErrorForDeprecatedField=t.showWarningForDeprecatedField=t.doesYamlFileExist=t.isCustomRuleId=t.getMatchingStatusCodeRange=t.assignExisting=t.isNotString=t.isString=t.isNotEmptyObject=t.slash=t.isPathParameter=t.yamlAndJsonSyncReader=t.readFileAsStringSync=t.isSingular=t.validateMimeTypeOAS3=t.validateMimeType=t.splitCamelCaseIntoWords=t.omitObjectProps=t.pickObjectProps=t.readFileFromUrl=t.isEmptyArray=t.isEmptyObject=t.isPlainObject=t.isDefined=t.loadYaml=t.popStack=t.pushStack=t.stringifyYaml=t.parseYaml=void 0;const i=n(3408),o=n(26470),s=n(1417),a=n(35126),l=n(23450),c=n(56447),u=n(72825),p=n(73536);var d=n(56447);function f(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function h(e,t){return t.match(/^https?:\/\//)||(e=e.replace(/^https?:\/\//,"")),s(e,t)}function m(e){return"string"==typeof e}function g(e){return!!e}function y(e,t){return`${void 0!==t?`${t}.`:""}${e}`}Object.defineProperty(t,"parseYaml",{enumerable:!0,get:function(){return d.parseYaml}}),Object.defineProperty(t,"stringifyYaml",{enumerable:!0,get:function(){return d.stringifyYaml}}),t.pushStack=function(e,t){return{prev:e,value:t}},t.popStack=function(e){var t;return null!==(t=null==e?void 0:e.prev)&&void 0!==t?t:null},t.loadYaml=function(e){return r(this,void 0,void 0,(function*(){const t=yield i.promises.readFile(e,"utf-8");return c.parseYaml(t)}))},t.isDefined=function(e){return void 0!==e},t.isPlainObject=f,t.isEmptyObject=function(e){return f(e)&&0===Object.keys(e).length},t.isEmptyArray=function(e){return Array.isArray(e)&&0===e.length},t.readFileFromUrl=function(e,t){return r(this,void 0,void 0,(function*(){const n={};for(const i of t.headers)h(e,i.matches)&&(n[i.name]=void 0!==i.envVariable?u.env[i.envVariable]||"":i.value);const r=yield(t.customFetch||a.default)(e,{headers:n});if(!r.ok)throw new Error(`Failed to load ${e}: ${r.status} ${r.statusText}`);return{body:yield r.text(),mimeType:r.headers.get("content-type")}}))},t.pickObjectProps=function(e,t){return Object.fromEntries(t.filter((t=>t in e)).map((t=>[t,e[t]])))},t.omitObjectProps=function(e,t){return Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e))))},t.splitCamelCaseIntoWords=function(e){const t=e.split(/(?:[-._])|([A-Z][a-z]+)/).filter(g).map((e=>e.toLocaleLowerCase())),n=e.split(/([A-Z]{2,})/).filter((e=>e&&e===e.toUpperCase())).map((e=>e.toLocaleLowerCase()));return new Set([...t,...n])},t.validateMimeType=function({type:e,value:t},{report:n,location:r},i){if(!i)throw new Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t[e])for(const o of t[e])i.includes(o)||n({message:`Mime type "${o}" is not allowed`,location:r.child(t[e].indexOf(o)).key()})},t.validateMimeTypeOAS3=function({type:e,value:t},{report:n,location:r},i){if(!i)throw new Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t.content)for(const o of Object.keys(t.content))i.includes(o)||n({message:`Mime type "${o}" is not allowed`,location:r.child("content").child(o).key()})},t.isSingular=function(e){return l.isSingular(e)},t.readFileAsStringSync=function(e){return i.readFileSync(e,"utf-8")},t.yamlAndJsonSyncReader=function(e){const t=i.readFileSync(e,"utf-8");return c.parseYaml(t)},t.isPathParameter=function(e){return e.startsWith("{")&&e.endsWith("}")},t.slash=function(e){return/^\\\\\?\\/.test(e)?e:e.replace(/\\/g,"/")},t.isNotEmptyObject=function(e){return!!e&&Object.keys(e).length>0},t.isString=m,t.isNotString=function(e){return!m(e)},t.assignExisting=function(e,t){for(const n of Object.keys(t))e.hasOwnProperty(n)&&(e[n]=t[n])},t.getMatchingStatusCodeRange=function(e){return`${e}`.replace(/^(\d)\d\d$/,((e,t)=>`${t}XX`))},t.isCustomRuleId=function(e){return e.includes("/")},t.doesYamlFileExist=function(e){return(".yaml"===o.extname(e)||".yml"===o.extname(e))&&i.hasOwnProperty("existsSync")&&i.existsSync(e)},t.showWarningForDeprecatedField=function(e,t,n){p.logger.warn(`The '${p.colorize.red(e)}' field is deprecated. ${t?`Use ${p.colorize.green(y(t,n))} instead. `:""}Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`)},t.showErrorForDeprecatedField=function(e,t,n){throw new Error(`Do not use '${e}' field. ${t?`Use '${y(t,n)}' instead. `:""}\n`)},t.isTruthy=g,t.identity=function(e){return e},t.keysOf=function(e){return e?Object.keys(e):[]},t.pickDefined=function(e){if(!e)return;const t={};for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t},t.nextTick=function(){new Promise((e=>{setTimeout(e)}))}},76294:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeVisitors=void 0;const r=n(28286),i={Root:"DefinitionRoot",ServerVariablesMap:"ServerVariableMap",Paths:["PathMap","PathsMap"],CallbacksMap:"CallbackMap",MediaTypesMap:"MediaTypeMap",ExamplesMap:"ExampleMap",EncodingMap:"EncodingsMap",HeadersMap:"HeaderMap",LinksMap:"LinkMap",OAuth2Flows:"SecuritySchemeFlows",Responses:"ResponsesMap"};t.normalizeVisitors=function(e,t){const n={any:{enter:[],leave:[]}};for(const r of Object.keys(t))n[r]={enter:[],leave:[]};n.ref={enter:[],leave:[]};for(const{ruleId:r,severity:i,visitor:l}of e)a({ruleId:r,severity:i},l,null);for(const r of Object.keys(n))n[r].enter.sort(((e,t)=>t.depth-e.depth)),n[r].leave.sort(((e,t)=>e.depth-t.depth));return n;function o(e,t,i,s,a=[]){if(a.includes(t))return;a=[...a,t];const l=new Set;for(const n of Object.values(t.properties))n!==i?"object"==typeof n&&null!==n&&n.name&&l.add(n):c(e,a);t.additionalProperties&&"function"!=typeof t.additionalProperties&&(t.additionalProperties===i?c(e,a):void 0!==t.additionalProperties.name&&l.add(t.additionalProperties)),t.items&&(t.items===i?c(e,a):void 0!==t.items.name&&l.add(t.items)),t.extensionsPrefix&&l.add(r.SpecExtension);for(const n of Array.from(l.values()))o(e,n,i,s,a);function c(e,t){for(const r of t.slice(1))n[r.name]=n[r.name]||{enter:[],leave:[]},n[r.name].enter.push(Object.assign(Object.assign({},e),{visit:()=>{},depth:0,context:{isSkippedLevel:!0,seen:new Set,parent:s}}))}}function s(e,t){if(Array.isArray(t)){const n=t.find((t=>e[t]))||void 0;return n&&e[n]}return e[t]}function a(e,r,l,c=0){const u=Object.keys(t);if(0===c)u.push("any"),u.push("ref");else{if(r.any)throw new Error("any() is allowed only on top level");if(r.ref)throw new Error("ref() is allowed only on top level")}for(const p of u){const u=r[p]||s(r,i[p]),d=n[p];if(!u)continue;let f,h,m;const g="object"==typeof u;if("ref"===p&&g&&u.skip)throw new Error("ref() visitor does not support skip");"function"==typeof u?f=u:g&&(f=u.enter,h=u.leave,m=u.skip);const y={activatedOn:null,type:t[p],parent:l,isSkippedLevel:!1};if("object"==typeof u&&a(e,u,y,c+1),l&&o(e,l.type,t[p],l),f||g){if(f&&"function"!=typeof f)throw new Error("DEV: should be function");d.enter.push(Object.assign(Object.assign({},e),{visit:f||(()=>{}),skip:m,depth:c,context:y}))}if(h){if("function"!=typeof h)throw new Error("DEV: should be function");d.leave.push(Object.assign(Object.assign({},e),{visit:h,depth:c,context:y}))}}}}},7681:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.walkDocument=void 0;const r=n(43739),i=n(86525),o=n(19813),s=n(28286);function a(e){var t,n;const r={};for(;e.parent;)(null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.location)&&(r[e.parent.type.name]=null===(n=e.parent.activatedOn)||void 0===n?void 0:n.value.location),e=e.parent;return r}t.walkDocument=function(e){const{document:t,rootType:n,normalizedVisitors:l,resolvedRefMap:c,ctx:u}=e,p={},d=new Set;!function e(t,n,f,h,m){var g,y,v,b,x,w,k,O,E,S,_;const A=(e,t=T.source.absoluteRef)=>{if(!r.isRef(e))return{location:f,node:e};const n=o.makeRefId(t,e.$ref),i=c.get(n);if(!i)return{location:void 0,node:void 0};const{resolved:s,node:a,document:l,nodePointer:u,error:p}=i;return{location:s?new r.Location(l.source,u):p instanceof o.YamlParseError?new r.Location(p.source,""):void 0,node:a,error:p}},R=f;let T=f;const{node:C,location:I,error:P}=A(t),j=new Set;if(r.isRef(t)){const e=l.ref.enter;for(const{visit:r,ruleId:i,severity:o,context:s}of e){j.add(s);r(t,{report:L.bind(void 0,i,o),resolve:A,rawNode:t,rawLocation:R,location:f,type:n,parent:h,key:m,parentLocations:{},oasVersion:u.oasVersion,getVisitorData:$.bind(void 0,i)},{node:C,location:I,error:P}),(null==I?void 0:I.source.absoluteRef)&&u.refTypes&&u.refTypes.set(null==I?void 0:I.source.absoluteRef,n)}}if(void 0!==C&&I&&"scalar"!==n.name){T=I;const o=null===(y=null===(g=p[n.name])||void 0===g?void 0:g.has)||void 0===y?void 0:y.call(g,C);let a=!1;const c=l.any.enter.concat((null===(v=l[n.name])||void 0===v?void 0:v.enter)||[]),u=[];for(const{context:e,visit:r,skip:s,ruleId:l,severity:p}of c){if(d.has(T.pointer))break;if(e.isSkippedLevel)!e.parent.activatedOn||e.parent.activatedOn.value.nextLevelTypeActivated||e.seen.has(t)||(e.seen.add(t),a=!0,u.push(e));else if(e.parent&&e.parent.activatedOn&&(null===(b=e.activatedOn)||void 0===b?void 0:b.value.withParentNode)!==e.parent.activatedOn.value.node&&(null===(x=e.parent.activatedOn.value.nextLevelTypeActivated)||void 0===x?void 0:x.value)!==n||!e.parent&&!o){u.push(e);const o={node:C,location:I,nextLevelTypeActivated:null,withParentNode:null===(k=null===(w=e.parent)||void 0===w?void 0:w.activatedOn)||void 0===k?void 0:k.value.node,skipped:null!==(S=(null===(E=null===(O=e.parent)||void 0===O?void 0:O.activatedOn)||void 0===E?void 0:E.value.skipped)||(null==s?void 0:s(C,m,{location:f,rawLocation:R,resolve:A,rawNode:t})))&&void 0!==S&&S};e.activatedOn=i.pushStack(e.activatedOn,o);let c=e.parent;for(;c;)c.activatedOn.value.nextLevelTypeActivated=i.pushStack(c.activatedOn.value.nextLevelTypeActivated,n),c=c.parent;o.skipped||(a=!0,j.add(e),N(r,C,t,e,l,p))}}if(a||!o)if(p[n.name]=p[n.name]||new Set,p[n.name].add(C),Array.isArray(C)){const t=n.items;if(void 0!==t)for(let n=0;n!i.includes(e)))):n.extensionsPrefix&&i.push(...Object.keys(C).filter((e=>e.startsWith(n.extensionsPrefix)))),r.isRef(t)&&i.push(...Object.keys(t).filter((e=>"$ref"!==e&&!i.includes(e))));for(const o of i){let i=C[o],a=I;void 0===i&&(i=t[o],a=f);let l=n.properties[o];void 0===l&&(l=n.additionalProperties),"function"==typeof l&&(l=l(i,o)),void 0===l&&n.extensionsPrefix&&o.startsWith(n.extensionsPrefix)&&(l=s.SpecExtension),!s.isNamedType(l)&&(null==l?void 0:l.directResolveAs)&&(l=l.directResolveAs,i={$ref:i}),l&&void 0===l.name&&!1!==l.resolvable&&(l={name:"scalar",properties:{}}),s.isNamedType(l)&&("scalar"!==l.name||r.isRef(i))&&e(i,l,a.child([o]),C,o)}}const h=l.any.leave,P=((null===(_=l[n.name])||void 0===_?void 0:_.leave)||[]).concat(h);for(const e of u.reverse())if(e.isSkippedLevel)e.seen.delete(C);else if(e.activatedOn=i.popStack(e.activatedOn),e.parent){let t=e.parent;for(;t;)t.activatedOn.value.nextLevelTypeActivated=i.popStack(t.activatedOn.value.nextLevelTypeActivated),t=t.parent}for(const{context:e,visit:n,ruleId:r,severity:i}of P)!e.isSkippedLevel&&j.has(e)&&N(n,C,t,e,r,i)}if(T=f,r.isRef(t)){const e=l.ref.leave;for(const{visit:r,ruleId:i,severity:o,context:s}of e)if(j.has(s)){r(t,{report:L.bind(void 0,i,o),resolve:A,rawNode:t,rawLocation:R,location:f,type:n,parent:h,key:m,parentLocations:{},oasVersion:u.oasVersion,getVisitorData:$.bind(void 0,i)},{node:C,location:I,error:P})}}function N(e,t,r,i,o,s){e(t,{report:L.bind(void 0,o,s),resolve:A,rawNode:r,location:T,rawLocation:R,type:n,parent:h,key:m,parentLocations:a(i),oasVersion:u.oasVersion,ignoreNextVisitorsOnNode:()=>{d.add(T.pointer)},getVisitorData:$.bind(void 0,o)},function(e){var t;const n={};for(;e.parent;)n[e.parent.type.name]=null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.node,e=e.parent;return n}(i),i)}function L(e,t,n){const r=(n.location?Array.isArray(n.location)?n.location:[n.location]:[Object.assign(Object.assign({},T),{reportOnKey:!1})]).map((e=>Object.assign(Object.assign(Object.assign({},T),{reportOnKey:!1}),e))),i=n.forceSeverity||t;"off"!==i&&u.problems.push(Object.assign(Object.assign({ruleId:n.ruleId||e,severity:i},n),{suggest:n.suggest||[],location:r}))}function $(e){return u.visitorsData[e]=u.visitorsData[e]||{},u.visitorsData[e]}}(t.parsed,n,new r.Location(t.source,"#/"),void 0,"")}},95985:(e,t,n)=>{var r=n(5623);e.exports=function(e){if(!e)return[];"{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2));return g(function(e){return e.split("\\\\").join(i).split("\\{").join(o).split("\\}").join(s).split("\\,").join(a).split("\\.").join(l)}(e),!0).map(u)};var i="\0SLASH"+Math.random()+"\0",o="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function u(e){return e.split(i).join("\\").split(o).join("{").split(s).join("}").split(a).join(",").split(l).join(".")}function p(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var i=n.pre,o=n.body,s=n.post,a=i.split(",");a[a.length-1]+="{"+o+"}";var l=p(s);return s.length&&(a[a.length-1]+=l.shift(),a.push.apply(a,l)),t.push.apply(t,a),t}function d(e){return"{"+e+"}"}function f(e){return/^-?0\d/.test(e)}function h(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],i=r("{","}",e);if(!i)return[e];var o=i.pre,a=i.post.length?g(i.post,!1):[""];if(/\$$/.test(i.pre))for(var l=0;l=0;if(!w&&!k)return i.post.match(/,.*\}/)?g(e=i.pre+"{"+i.body+s+i.post):[e];if(w)y=i.body.split(/\.\./);else if(1===(y=p(i.body)).length&&1===(y=g(y[0],!1).map(d)).length)return a.map((function(e){return i.pre+y[0]+e}));if(w){var O=c(y[0]),E=c(y[1]),S=Math.max(y[0].length,y[1].length),_=3==y.length?Math.abs(c(y[2])):1,A=h;E0){var P=new Array(I+1).join("0");C=T<0?"-"+P+C.slice(1):P+C}}v.push(C)}}else{v=[];for(var j=0;je.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),i=1;i/gm),X=g(/\${[\w\W]*}/gm),K=g(/^data-[\-\w.\u00B7-\uFFFF]/),Z=g(/^aria-[\-\w]+$/),J=g(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=g(/^(?:\w+script|data):/i),te=g(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=g(/^html$/i),re=function(){return"undefined"==typeof window?null:window},ie=function(t,n){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var o="dompurify"+(r?"#"+r:"");try{return t.createPolicy(o,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(s){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function oe(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re(),n=function(e){return oe(e)};if(n.version="2.4.5",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,o=t.document,s=t.DocumentFragment,a=t.HTMLTemplateElement,l=t.Node,c=t.Element,u=t.NodeFilter,p=t.NamedNodeMap,d=void 0===p?t.NamedNodeMap||t.MozNamedAttrMap:p,f=t.HTMLFormElement,h=t.DOMParser,g=t.trustedTypes,y=c.prototype,v=$(y,"cloneNode"),b=$(y,"nextSibling"),x=$(y,"childNodes"),P=$(y,"parentNode");if("function"==typeof a){var j=o.createElement("template");j.content&&j.content.ownerDocument&&(o=j.content.ownerDocument)}var se=ie(g,r),ae=se?se.createHTML(""):"",le=o,ce=le.implementation,ue=le.createNodeIterator,pe=le.createDocumentFragment,de=le.getElementsByTagName,fe=r.importNode,he={};try{he=L(o).documentMode?o.documentMode:{}}catch(jt){}var me={};n.isSupported="function"==typeof P&&ce&&void 0!==ce.createHTMLDocument&&9!==he;var ge,ye,ve=Y,be=G,xe=X,we=K,ke=Z,Oe=ee,Ee=te,Se=J,_e=null,Ae=N({},[].concat(i(M),i(D),i(F),i(B),i(q))),Re=null,Te=N({},[].concat(i(W),i(V),i(H),i(Q))),Ce=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ie=null,Pe=null,je=!0,Ne=!0,Le=!1,$e=!0,Me=!1,De=!1,Fe=!1,ze=!1,Be=!1,Ue=!1,qe=!1,We=!0,Ve=!1,He="user-content-",Qe=!0,Ye=!1,Ge={},Xe=null,Ke=N({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ze=null,Je=N({},["audio","video","img","source","image","track"]),et=null,tt=N({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",rt="http://www.w3.org/2000/svg",it="http://www.w3.org/1999/xhtml",ot=it,st=!1,at=null,lt=N({},[nt,rt,it],S),ct=["application/xhtml+xml","text/html"],ut="text/html",pt=null,dt=o.createElement("form"),ft=function(e){return e instanceof RegExp||e instanceof Function},ht=function(t){pt&&pt===t||(t&&"object"===e(t)||(t={}),t=L(t),ge=ge=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?ut:t.PARSER_MEDIA_TYPE,ye="application/xhtml+xml"===ge?S:E,_e="ALLOWED_TAGS"in t?N({},t.ALLOWED_TAGS,ye):Ae,Re="ALLOWED_ATTR"in t?N({},t.ALLOWED_ATTR,ye):Te,at="ALLOWED_NAMESPACES"in t?N({},t.ALLOWED_NAMESPACES,S):lt,et="ADD_URI_SAFE_ATTR"in t?N(L(tt),t.ADD_URI_SAFE_ATTR,ye):tt,Ze="ADD_DATA_URI_TAGS"in t?N(L(Je),t.ADD_DATA_URI_TAGS,ye):Je,Xe="FORBID_CONTENTS"in t?N({},t.FORBID_CONTENTS,ye):Ke,Ie="FORBID_TAGS"in t?N({},t.FORBID_TAGS,ye):{},Pe="FORBID_ATTR"in t?N({},t.FORBID_ATTR,ye):{},Ge="USE_PROFILES"in t&&t.USE_PROFILES,je=!1!==t.ALLOW_ARIA_ATTR,Ne=!1!==t.ALLOW_DATA_ATTR,Le=t.ALLOW_UNKNOWN_PROTOCOLS||!1,$e=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Me=t.SAFE_FOR_TEMPLATES||!1,De=t.WHOLE_DOCUMENT||!1,Be=t.RETURN_DOM||!1,Ue=t.RETURN_DOM_FRAGMENT||!1,qe=t.RETURN_TRUSTED_TYPE||!1,ze=t.FORCE_BODY||!1,We=!1!==t.SANITIZE_DOM,Ve=t.SANITIZE_NAMED_PROPS||!1,Qe=!1!==t.KEEP_CONTENT,Ye=t.IN_PLACE||!1,Se=t.ALLOWED_URI_REGEXP||Se,ot=t.NAMESPACE||it,Ce=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ce.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ce.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ce.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Me&&(Ne=!1),Ue&&(Be=!0),Ge&&(_e=N({},i(q)),Re=[],!0===Ge.html&&(N(_e,M),N(Re,W)),!0===Ge.svg&&(N(_e,D),N(Re,V),N(Re,Q)),!0===Ge.svgFilters&&(N(_e,F),N(Re,V),N(Re,Q)),!0===Ge.mathMl&&(N(_e,B),N(Re,H),N(Re,Q))),t.ADD_TAGS&&(_e===Ae&&(_e=L(_e)),N(_e,t.ADD_TAGS,ye)),t.ADD_ATTR&&(Re===Te&&(Re=L(Re)),N(Re,t.ADD_ATTR,ye)),t.ADD_URI_SAFE_ATTR&&N(et,t.ADD_URI_SAFE_ATTR,ye),t.FORBID_CONTENTS&&(Xe===Ke&&(Xe=L(Xe)),N(Xe,t.FORBID_CONTENTS,ye)),Qe&&(_e["#text"]=!0),De&&N(_e,["html","head","body"]),_e.table&&(N(_e,["tbody"]),delete Ie.tbody),m&&m(t),pt=t)},mt=N({},["mi","mo","mn","ms","mtext"]),gt=N({},["foreignobject","desc","title","annotation-xml"]),yt=N({},["title","style","font","a","script"]),vt=N({},D);N(vt,F),N(vt,z);var bt=N({},B);N(bt,U);var xt=function(e){var t=P(e);t&&t.tagName||(t={namespaceURI:ot,tagName:"template"});var n=E(e.tagName),r=E(t.tagName);return!!at[e.namespaceURI]&&(e.namespaceURI===rt?t.namespaceURI===it?"svg"===n:t.namespaceURI===nt?"svg"===n&&("annotation-xml"===r||mt[r]):Boolean(vt[n]):e.namespaceURI===nt?t.namespaceURI===it?"math"===n:t.namespaceURI===rt?"math"===n&>[r]:Boolean(bt[n]):e.namespaceURI===it?!(t.namespaceURI===rt&&!gt[r])&&!(t.namespaceURI===nt&&!mt[r])&&!bt[n]&&(yt[n]||!vt[n]):!("application/xhtml+xml"!==ge||!at[e.namespaceURI]))},wt=function(e){O(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(jt){try{e.outerHTML=ae}catch(jt){e.remove()}}},kt=function(e,t){try{O(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(jt){O(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Re[e])if(Be||Ue)try{wt(t)}catch(jt){}else try{t.setAttribute(e,"")}catch(jt){}},Ot=function(e){var t,n;if(ze)e=""+e;else{var r=_(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ge&&ot===it&&(e=''+e+"");var i=se?se.createHTML(e):e;if(ot===it)try{t=(new h).parseFromString(i,ge)}catch(jt){}if(!t||!t.documentElement){t=ce.createDocument(ot,"template",null);try{t.documentElement.innerHTML=st?ae:i}catch(jt){}}var s=t.body||t.documentElement;return e&&n&&s.insertBefore(o.createTextNode(n),s.childNodes[0]||null),ot===it?de.call(t,De?"html":"body")[0]:De?t.documentElement:s},Et=function(e){return ue.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},St=function(e){return e instanceof f&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},_t=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},At=function(e,t,r){me[e]&&w(me[e],(function(e){e.call(n,t,r,pt)}))},Rt=function(e){var t;if(At("beforeSanitizeElements",e,null),St(e))return wt(e),!0;if(C(/[\u0080-\uFFFF]/,e.nodeName))return wt(e),!0;var r=ye(e.nodeName);if(At("uponSanitizeElement",e,{tagName:r,allowedTags:_e}),e.hasChildNodes()&&!_t(e.firstElementChild)&&(!_t(e.content)||!_t(e.content.firstElementChild))&&C(/<[/\w]/g,e.innerHTML)&&C(/<[/\w]/g,e.textContent))return wt(e),!0;if("select"===r&&C(/