diff --git a/404.html b/404.html index a65340995..e2adee317 100644 --- a/404.html +++ b/404.html @@ -4,13 +4,13 @@ Page Not Found | Operational Recovery Cloud Archive (ORCA) - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- - + + \ No newline at end of file diff --git a/assets/js/03e1d4f7.4b97c932.js b/assets/js/03e1d4f7.4b97c932.js deleted file mode 100644 index 991a82f29..000000000 --- a/assets/js/03e1d4f7.4b97c932.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[9683],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>d});var n=o(7294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(o),m=r,d=c["".concat(s,".").concat(m)]||c[m]||g[m]||a;return o?n.createElement(d,i(i({ref:t},p),{},{components:o})):n.createElement(d,i({ref:t},p))}));function d(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=o(7462),r=(o(7294),o(3905)),a=o(4996);const i={id:"reingest-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to reingest data back to ORCA."},l=void 0,s={unversionedId:"operator/reingest-to-orca",id:"operator/reingest-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to reingest data back to ORCA.",source:"@site/docs/operator/reingest-to-orca.mdx",sourceDirName:"operator",slug:"/operator/reingest-to-orca",permalink:"/cumulus-orca/docs/operator/reingest-to-orca",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/reingest-to-orca.mdx",tags:[],version:"current",frontMatter:{id:"reingest-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to reingest data back to ORCA."},sidebar:"ops_guide",previous:{title:"Data Recovery",permalink:"/cumulus-orca/docs/operator/data-recovery"},next:{title:"Collection Configuration",permalink:"/cumulus-orca/docs/operator/collection-configuration"}},u={},p=[{value:"Submit Granules to be Copied to ORCA",id:"submit-granules-to-be-copied-to-orca",level:2},{value:"Monitor Executions and Job Status",id:"monitor-executions-and-job-status",level:2},{value:"Monitoring the Overall Job via the Operations Tab",id:"monitoring-the-overall-job-via-the-operations-tab",level:3},{value:"Monitoring Individual Granules Executions via the Executions Tab",id:"monitoring-individual-granules-executions-via-the-executions-tab",level:3}],c={toc:p},g="wrapper";function m(e){let{components:t,...o}=e;return(0,r.kt)(g,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The following operations procedure details how an operator would re-ingest data\ninto ORCA through the Cumulus Dashboard without running a full ingest pipeline.\nAt a high level, the following steps should be used to manually ingest data into\nORCA."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Use the Cumulus Dashboard Granule Bulk Operations functionality to run the\n",(0,r.kt)("strong",{parentName:"li"},"OrcaCopyToArchiveWorkflow")," step function against the granules that need to\nbe ingested into ORCA."),(0,r.kt)("li",{parentName:"ol"},"Monitor the execution status of the job and workflows.")),(0,r.kt)("p",null,"The sections below go into further detail on how to accomplish the high level\nsteps above."),(0,r.kt)("h2",{id:"submit-granules-to-be-copied-to-orca"},"Submit Granules to be Copied to ORCA"),(0,r.kt)("p",null,"The following steps will guide the operator through submitting a bulk operation\nto copy data to ORCA."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"On the ",(0,r.kt)("strong",{parentName:"p"},"Granules")," tab of the Cumulus Dashboard, click on the ",(0,r.kt)("strong",{parentName:"p"},"Granule Actions"),"\nbutton. The button is highlighted in figure 1 below."),(0,r.kt)("img",{alt:"Selecting Granule Actions on the Granules tab on Cumulus dashboard",src:(0,a.Z)("img/restore-orca-granule-tab.png")}),(0,r.kt)("p",{parentName:"li"}," ",(0,r.kt)("strong",{parentName:"p"},"Figure 1. Selecting Granule Actions to Perform Bulk Operations"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Under ",(0,r.kt)("strong",{parentName:"p"},"Granule Actions")," click on the ",(0,r.kt)("strong",{parentName:"p"},"Run Bulk Granules")," button highlighted\nbelow in figure 2."),(0,r.kt)("img",{alt:"Selecting the Run Bulk Granules Button under Granule Actions",src:(0,a.Z)("img/restore-orca-run-bulk-granules.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 2. Select the Run Bulk Granules Button")))),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"In the bulk operations pop up click on the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Operations")," button as seen\nbelow in figure 3."),(0,r.kt)("img",{alt:"Selecting the Bulk Operations Button",src:(0,a.Z)("img/restore-orca-run-bulk-operations.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 3. Select the Bulk Operations Button"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Fill out the details in the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Operations")," form utilizing any of the bulk\noperations methods to provide the list of granules to act upon."),(0,r.kt)("admonition",{parentName:"li",title:"Workflow Name",type:"important"},(0,r.kt)("p",{parentName:"admonition"}," Make sure that the workflow name value is set to ",(0,r.kt)("strong",{parentName:"p"},"OrcaCopyToArchiveWorkflow"),"\nas seen below in the figure."),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "WorkflowName": "OrcaCopyToArchiveWorkflow",\n "index": "",\n "query": "",\n "ids": [],\n "meta": {}\n}\n'))),(0,r.kt)("p",{parentName:"li"},"Figure 4 below shows using the ",(0,r.kt)("em",{parentName:"p"},"ids")," key to list granules to act upon.\nOnce the form is filled out, click the ",(0,r.kt)("strong",{parentName:"p"},"Run Bulk Operations")," button."),(0,r.kt)("img",{alt:"Filling out the Bulk Operations Form.",src:(0,a.Z)("img/restore-orca-bulk-operations-form.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 4. Filling out the Bulk Operations Form"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Save the Job ID value displayed in the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Granule Operations")," pop up\nwindow as seen below in figure 5. The ID will be used used for monitoring.\nClick on the ",(0,r.kt)("strong",{parentName:"p"},"Go To Operations")," button to begin monitoring the job."),(0,r.kt)("img",{alt:"Saving the Job ID for monitoring.",src:(0,a.Z)("img/restore-orca-bulk-operations-id.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 5. Saving the Job ID")))),(0,r.kt)("h2",{id:"monitor-executions-and-job-status"},"Monitor Executions and Job Status"),(0,r.kt)("p",null,"Monitoring the Bulk Granule Operations Job and ",(0,r.kt)("em",{parentName:"p"},"OrcaCopyToArchiveWorkflow"),"\nworkflow can be done through the ",(0,r.kt)("em",{parentName:"p"},"Operations")," and ",(0,r.kt)("em",{parentName:"p"},"Executions")," tabs. The Job ID\nobtained from step 5 in the ",(0,r.kt)("a",{parentName:"p",href:"#submit-granules-to-be-copied-to-orca"},"Submit Granules to be Copied to ORCA"),"\nsection above will be needed for monitoring. The sections below go into more details."),(0,r.kt)("h3",{id:"monitoring-the-overall-job-via-the-operations-tab"},"Monitoring the Overall Job via the Operations Tab"),(0,r.kt)("p",null,"Using the obtained Job ID, the operations can be filtered. The page will provide\ninformation on the overall bulk granule operations job and the status. This page\ndoes not contain any further drill down, but an operator can view the ",(0,r.kt)("em",{parentName:"p"},"Executions"),"\ntab for additional information. Figure 6 below shows the status of a job\nsubmitted in the example used in the above figures."),(0,r.kt)("img",{alt:"",src:(0,a.Z)("img/restore-orca-operations-view.png")}),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Figure 6. Monitoring the Operations Tab")),(0,r.kt)("h3",{id:"monitoring-individual-granules-executions-via-the-executions-tab"},"Monitoring Individual Granules Executions via the Executions Tab"),(0,r.kt)("p",null,"Using the obtained Job ID (",(0,r.kt)("em",{parentName:"p"},"asyncOperationsId"),"), the executions can be filtered.\nThe page will provide the operator with information on each specific execution of the\n",(0,r.kt)("em",{parentName:"p"},"OrcaCopyToArchiveWorkflow")," workflow. There is one execution per granule. The\nexecution can be drilled down further to look at failures and logs. Figure 7\nbelow shows the status of executions based on a Job ID."),(0,r.kt)("img",{alt:"",src:(0,a.Z)("img/restore-orca-executions-view.png")}),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Figure 7. Monitoring the Executions Tab")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/15f782ab.e357f70a.js b/assets/js/15f782ab.13748697.js similarity index 86% rename from assets/js/15f782ab.e357f70a.js rename to assets/js/15f782ab.13748697.js index e80a06341..84d1ae4fa 100644 --- a/assets/js/15f782ab.e357f70a.js +++ b/assets/js/15f782ab.13748697.js @@ -1 +1 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2815],{3905:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>m});var r=o(7294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function c(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=r.createContext({}),l=function(e){var t=r.useContext(u),o=t;return e&&(o="function"==typeof e?e(t):c(c({},t),e)),o},s=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=a(e,["components","mdxType","originalType","parentName"]),p=l(o),d=n,m=p["".concat(u,".").concat(d)]||p[d]||f[d]||i;return o?r.createElement(m,c(c({ref:t},s),{},{components:o})):r.createElement(m,c({ref:t},s))}));function m(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,c=new Array(i);c[0]=d;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[p]="string"==typeof e?e:n,c[1]=a;for(var l=2;l{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>f,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=o(7462),n=(o(7294),o(3905));const i={id:"collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard."},c=void 0,a={unversionedId:"operator/collection-configuration",id:"operator/collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard.",source:"@site/docs/operator/collection-configuration.md",sourceDirName:"operator",slug:"/operator/collection-configuration",permalink:"/cumulus-orca/docs/operator/collection-configuration",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/collection-configuration.md",tags:[],version:"current",frontMatter:{id:"collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard."},sidebar:"ops_guide",previous:{title:"Re-Ingesting Data to ORCA",permalink:"/cumulus-orca/docs/operator/reingest-to-orca"},next:{title:"S3 Storage Classes in Orca",permalink:"/cumulus-orca/docs/operator/storage-classes"}},u={},l=[],s={toc:l},p="wrapper";function f(e){let{components:t,...o}=e;return(0,n.kt)(p,(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"This document in under construction.\nSee ",(0,n.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus#collection-configuration"},"Deploying ORCA with Cumulus")," for overview."))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2815],{3905:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>m});var r=o(7294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function c(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var u=r.createContext({}),l=function(e){var t=r.useContext(u),o=t;return e&&(o="function"==typeof e?e(t):c(c({},t),e)),o},s=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,i=e.originalType,u=e.parentName,s=a(e,["components","mdxType","originalType","parentName"]),p=l(o),d=n,m=p["".concat(u,".").concat(d)]||p[d]||f[d]||i;return o?r.createElement(m,c(c({ref:t},s),{},{components:o})):r.createElement(m,c({ref:t},s))}));function m(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=o.length,c=new Array(i);c[0]=d;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a[p]="string"==typeof e?e:n,c[1]=a;for(var l=2;l{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>f,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=o(7462),n=(o(7294),o(3905));const i={id:"collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard."},c=void 0,a={unversionedId:"operator/collection-configuration",id:"operator/collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard.",source:"@site/docs/operator/collection-configuration.md",sourceDirName:"operator",slug:"/operator/collection-configuration",permalink:"/cumulus-orca/docs/operator/collection-configuration",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/collection-configuration.md",tags:[],version:"current",frontMatter:{id:"collection-configuration",title:"Collection Configuration",description:"Provides documentation for Operators to configure a collection using the Cumulus dashboard."},sidebar:"ops_guide",previous:{title:"Re-Ingesting Data to ORCA",permalink:"/cumulus-orca/docs/operator/restore-to-orca"},next:{title:"S3 Storage Classes in Orca",permalink:"/cumulus-orca/docs/operator/storage-classes"}},u={},l=[],s={toc:l},p="wrapper";function f(e){let{components:t,...o}=e;return(0,n.kt)(p,(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"This document in under construction.\nSee ",(0,n.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus#collection-configuration"},"Deploying ORCA with Cumulus")," for overview."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/516c4cd8.3906ee3a.js b/assets/js/516c4cd8.3906ee3a.js deleted file mode 100644 index 80fcd3bd8..000000000 --- a/assets/js/516c4cd8.3906ee3a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2449],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=l(n),d=r,h=p["".concat(s,".").concat(d)]||p[d]||m[d]||o;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:r,i[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));const o={id:"deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions."},i=void 0,c={unversionedId:"developer/deployment-guide/deployment-s3-bucket",id:"developer/deployment-guide/deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions.",source:"@site/docs/developer/deployment-guide/creating-orca-archive-bucket.md",sourceDirName:"developer/deployment-guide",slug:"/developer/deployment-guide/deployment-s3-bucket",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/deployment-guide/creating-orca-archive-bucket.md",tags:[],version:"current",frontMatter:{id:"deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions."},sidebar:"dev_guide",previous:{title:"Creating a Deployment Environment",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment"},next:{title:"Generating S3 credentials",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials"}},s={},l=[{value:"Create the ORCA Archive and Report Buckets",id:"create-the-orca-archive-and-report-buckets",level:2},{value:"Provide Cross Account (OU) Access",id:"provide-cross-account-ou-access",level:2},{value:"Via AWS CloudFormation Template",id:"via-aws-cloudformation-template",level:3},{value:"Via AWS GUI",id:"via-aws-gui",level:3},{value:"Archive Bucket:",id:"archive-bucket",level:5},{value:"Reports Bucket:",id:"reports-bucket",level:5},{value:"Bucket policy for load balancer server access logging:",id:"bucket-policy-for-load-balancer-server-access-logging",level:5}],u={toc:l},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"ORCA maintains a cloud ready backup of science and ancillary data\nin one of various ",(0,r.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/operator/storage-classes"},"storage classes"),"\nin ",(0,r.kt)("a",{parentName:"p",href:"https://aws.amazon.com/s3/"},"S3"),"\nfor the long term. The ORCA archive bucket can live in any NGAP Organizational\nUnit (OU)."),(0,r.kt)("admonition",{title:"Archive Bucket OU Placement",type:"important"},(0,r.kt)("p",{parentName:"admonition"},"Best practice is to place the ORCA archive bucket in your Disaster Recovery OU.\nThis is done to better separate the costs associated with the cloud ready backup\nfrom primary Cumulus holdings and ingest and archive activity. See the\n",(0,r.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/about/architecture/architecture-intro"},"ORCA Architecture Introduction documentation"),"\nfor more information.")),(0,r.kt)("p",null,"The sections below go into further detail on creating the ORCA archive bucket."),(0,r.kt)("h2",{id:"create-the-orca-archive-and-report-buckets"},"Create the ORCA Archive and Report Buckets"),(0,r.kt)("p",null,"Prior to creating the S3 buckets, make sure the deployment environment is created\nper the ",(0,r.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment"},"Creating the Deployment Environment"),"\ndocumentation."),(0,r.kt)("p",null,"To create the ORCA buckets run the AWS CLI command below twice, once for your archive bucket and once for your report bucket.\nReplace the ","[","place holder text","]"," with proper values for your deployment."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'aws s3api create-bucket \\\n --bucket [orca bucket name] \\\n --profile [AWS OU profile] \\\n --region us-west-2 \\\n --create-bucket-configuration "LocationConstraint=us-west-2"\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"[","AWS OU profile","]")," - This is the AWS profile name to use to connect to the proper OU where the bucket will be created."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"[","orca bucket name","]")," - This is the name of your bucket. Example: ",(0,r.kt)("inlineCode",{parentName:"li"},"PREFIX-orca-archive")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"PREFIX-orca-reports"),(0,r.kt)("admonition",{parentName:"li",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Due to limits on report names, the maximum length of a non-report bucket's name is 54 characters.")))),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"--region us-west-2")," and ",(0,r.kt)("inlineCode",{parentName:"p"},'--create-bucket-configuration "LocationConstraint=us-west-2"'),"\nlines are only necessary if you are creating your bucket outside of ",(0,r.kt)("strong",{parentName:"p"},"us-east-1"),".")),(0,r.kt)("p",null,"For more information on creating an S3 bucket, see the\n",(0,r.kt)("a",{parentName:"p",href:"http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html"},'AWS "Creating a Bucket" documentation'),"\nand the ",(0,r.kt)("a",{parentName:"p",href:"https://nasa.github.io/cumulus/docs/deployment/create_bucket"},'Cumulus "Creating an S3 Bucket" documentation'),"."),(0,r.kt)("h2",{id:"provide-cross-account-ou-access"},"Provide Cross Account (OU) Access"),(0,r.kt)("p",null,"Per best practice, the ORCA archive bucket will be created in the Disaster\nRecovery OU and the additional ORCA components will be created in the Cumulus OU.\nIn order for the components in the Cumulus OU to interact with the ORCA archive\nbucket in the Cumulus OU, cross account bucket access privileges are needed. This\nsection details the steps needed to request the cross account bucket access."),(0,r.kt)("admonition",{title:"Deploying ORCA with Objects in Different OUs",type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"If you are following best practice and have created your ORCA archive bucket in\nthe Disaster Recovery OU, you must have cross account bucket access permissions\ncreated and enabled before deploying the ORCA code. If you do not, your deployment\nwill return with the following error."),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre"},"module.orca.module.orca_lambdas.aws_s3_bucket_notification.copy_lambda_trigger: Creating...\n\nError: Error putting S3 notification configuration: AccessDenied: Access Denied\n status code: 403, request id: 2E31C2ACD124B50B, host id: 0JrRBUioe/gT......\n"))),(0,r.kt)("h3",{id:"via-aws-cloudformation-template"},"Via AWS CloudFormation Template"),(0,r.kt)("p",null,"The AWS Cloudformation template for creating the ORCA DR buckets can be found ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/modules/dr_buckets_cloudformation/dr-buckets.yaml"},"here"),". Make sure you have AWS CLI installed before deploying this template."),(0,r.kt)("p",null,"From your terminal, run the following command by replacing the variables ",(0,r.kt)("inlineCode",{parentName:"p"},"")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"")," first:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'aws cloudformation deploy --stack-name -orca-bucket-stack --template-file dr-buckets.yaml --parameter-overrides "PREFIX"="" "CumulusAccountID"=""\n\n')),(0,r.kt)("p",null,"This will create archive and reports buckets with the necessary bucket policies giving the Cumulus Account permission to write data to the archive bucket."),(0,r.kt)("h3",{id:"via-aws-gui"},"Via AWS GUI"),(0,r.kt)("p",null,'For each of the buckets listed below\ngo to AWS, open the bucket in question, click "Permissions",\nthen under "Bucket policy" click "Edit".\nThe policy given, once modified, can be pasted into this form.'),(0,r.kt)("h5",{id:"archive-bucket"},"Archive Bucket:"),(0,r.kt)("p",null,"The policy shown below can be used with some minor\nmodifications, which will be detailed below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Sid": "Cross Account Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action":[\n "s3:GetObject*",\n "S3:GetObjectTagging",\n "S3:PutObjectTagging",\n "s3:RestoreObject",\n "s3:GetBucket*",\n "s3:ListBucket",\n "s3:PutBucketNotification",\n "s3:GetInventoryConfiguration",\n "s3:PutInventoryConfiguration",\n "s3:ListBucketVersions"\n ],\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-archive",\n "arn:aws:s3:::PREFIX-orca-archive/*"\n ]\n },\n {\n "Sid": "Cross Account Write Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action": "s3:PutObject*",\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-archive/*"\n ],\n "Condition": {\n "StringEquals": {\n "s3:x-amz-acl": "bucket-owner-full-control",\n "s3:x-amz-storage-class": [\n "GLACIER",\n "DEEP_ARCHIVE"\n ]\n }\n }\n }\n ]\n}\n')),(0,r.kt)("p",null,"The Principal value is the AWS root user for your Cumulus application that will\naccess the ORCA archive bucket. The value for this can be retrieved by\nperforming the following."),(0,r.kt)("p",null,"First, change your connection to the Cumulus account/OU rather than the Disaster Recovery account/OU.\nThen, using your AWS CLI client run the following command to get the account number:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'aws sts get-caller-identity\n\n{\n "UserId": "ABCWXYZ123...",\n "Account": "90912...",\n "Arn": "arn:aws:iam::90912...:user/NGAPShApplicationDeveloper-someone-123"\n}\n')),(0,r.kt)("p",null,"Replace the number in ",(0,r.kt)("inlineCode",{parentName:"p"},"arn:aws:iam::012345678912:root")," with the value of your non-DR account number."),(0,r.kt)("p",null,"The Resource value is the bucket and bucket paths that the Cumulus application\ncan access. Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name\nof the Orca archive bucket created in the previous section."),(0,r.kt)("h5",{id:"reports-bucket"},"Reports Bucket:"),(0,r.kt)("p",null,"The policy shown below can be used with some minor\nmodifications, which will be detailed below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Sid": "Cross Account Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action": [\n "s3:GetObject*",\n "s3:GetBucket*",\n "s3:ListBucket",\n "s3:PutObject",\n "s3:PutObjectAcl",\n "s3:PutBucketNotification"\n ],\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-reports",\n "arn:aws:s3:::PREFIX-orca-reports/*"\n ]\n },\n {\n "Sid": "Inventory-PREFIX-orca-archive-reports",\n "Effect": "Allow",\n "Principal": {\n "Service": "s3.amazonaws.com"\n },\n "Action": "s3:PutObject",\n "Resource": "arn:aws:s3:::PREFIX-orca-reports/*",\n "Condition": {\n "StringEquals": {\n "s3:x-amz-acl": "bucket-owner-full-control",\n "aws:SourceAccount": "000000000000"\n },\n "ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::PREFIX-orca-archive"]\n }\n }\n }\n ]\n}\n')),(0,r.kt)("p",null,"The Principal value is the AWS root user for your Cumulus application that will\naccess the ORCA reports bucket.\nSee the Archive Bucket instructions for assistance getting this value."),(0,r.kt)("p",null,"Replace the number in ",(0,r.kt)("inlineCode",{parentName:"p"},"arn:aws:iam::012345678912:root")," with the value of your non-DR account number.\nSee the Archive Bucket instructions for assistance getting this value."),(0,r.kt)("p",null,"Replace the number ",(0,r.kt)("inlineCode",{parentName:"p"},"000000000000")," with your DR account number."),(0,r.kt)("p",null,"The Resource value is the bucket and bucket paths that the Cumulus application\ncan access. Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-reports")," with the name\nof the Orca reports bucket created in the previous section."),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name of your ",(0,r.kt)("a",{parentName:"p",href:"#archive-bucket"},"ORCA archive bucket"),".\nIf you have multiple ORCA buckets, expand the ",(0,r.kt)("inlineCode",{parentName:"p"},"SourceArn")," array with the following format:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME"]\n}\n')),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name of your ",(0,r.kt)("a",{parentName:"p",href:"#archive-bucket"},"ORCA archive bucket"),".\nIf you have multiple ORCA buckets, expand the ",(0,r.kt)("inlineCode",{parentName:"p"},"SourceArn")," array with the following format:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME"]\n}\n')),(0,r.kt)("h5",{id:"bucket-policy-for-load-balancer-server-access-logging"},"Bucket policy for load balancer server access logging:"),(0,r.kt)("p",null,"You must add the following S3 bucket policy to your ",(0,r.kt)("inlineCode",{parentName:"p"},"system_bucket"),", which will likely be named ",(0,r.kt)("inlineCode",{parentName:"p"},"-internal"),", to give the load balancer access to write logs to the S3 bucket. Otherwise, the deployment will throw an ",(0,r.kt)("inlineCode",{parentName:"p"},"Access Denied")," error. If successful, a test log message will be posted to the bucket under the provided prefix."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam:::root"\n },\n "Action": "s3:PutObject",\n "Resource": "arn:aws:s3:::/-lb-gql-a-logs/AWSLogs//*"\n }\n ]\n}\n')),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," with the ID of the AWS account for Elastic Load Balancing for your Region which can be found ",(0,r.kt)("a",{parentName:"p",href:"https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy"},"here"),". If you do not know your region name, it can be found ",(0,r.kt)("a",{parentName:"p",href:"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html"},"here"),"."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Note that ",(0,r.kt)("inlineCode",{parentName:"p"},"")," is different from your AWS account ID.")),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," with your ",(0,r.kt)("inlineCode",{parentName:"p"},"system-bucket")," name."),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," with your prefix."),(0,r.kt)("p",null,"Replace ",(0,r.kt)("inlineCode",{parentName:"p"},"")," with your Cumulus OU account number."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/516c4cd8.824326c3.js b/assets/js/516c4cd8.824326c3.js new file mode 100644 index 000000000..2f6495177 --- /dev/null +++ b/assets/js/516c4cd8.824326c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[2449],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=l(n),m=o,h=p["".concat(s,".").concat(m)]||p[m]||d[m]||r;return n?a.createElement(h,i(i({ref:t},u),{},{components:n})):a.createElement(h,i({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var a=n(7462),o=(n(7294),n(3905));const r={id:"deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions."},i=void 0,c={unversionedId:"developer/deployment-guide/deployment-s3-bucket",id:"developer/deployment-guide/deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions.",source:"@site/docs/developer/deployment-guide/creating-orca-archive-bucket.md",sourceDirName:"developer/deployment-guide",slug:"/developer/deployment-guide/deployment-s3-bucket",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/developer/deployment-guide/creating-orca-archive-bucket.md",tags:[],version:"current",frontMatter:{id:"deployment-s3-bucket",title:"Creating the Archive Bucket",description:"Provides developer with information on archive storage solutions."},sidebar:"dev_guide",previous:{title:"Creating a Deployment Environment",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment"},next:{title:"Generating S3 credentials",permalink:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials"}},s={},l=[{value:"Create the ORCA Archive and Report Buckets",id:"create-the-orca-archive-and-report-buckets",level:2},{value:"Provide Cross Account (OU) Access",id:"provide-cross-account-ou-access",level:2},{value:"Via NGAP form",id:"via-ngap-form",level:3},{value:"Project Name",id:"project-name",level:4},{value:"Account Type:",id:"account-type",level:4},{value:"Business Justification:",id:"business-justification",level:4},{value:"Bucket Names(s):",id:"bucket-namess",level:4},{value:"Policy:",id:"policy",level:4},{value:"Via AWS CloudFormation Template",id:"via-aws-cloudformation-template",level:3},{value:"Via AWS GUI",id:"via-aws-gui",level:3},{value:"Archive Bucket:",id:"archive-bucket",level:5},{value:"Reports Bucket:",id:"reports-bucket",level:5},{value:"Bucket policy for load balancer server access logging:",id:"bucket-policy-for-load-balancer-server-access-logging",level:5}],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"ORCA maintains a cloud ready backup of science and ancillary data\nin one of various ",(0,o.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/operator/storage-classes"},"storage classes"),"\nin ",(0,o.kt)("a",{parentName:"p",href:"https://aws.amazon.com/s3/"},"S3"),"\nfor the long term. The ORCA archive bucket can live in any NGAP Organizational\nUnit (OU)."),(0,o.kt)("admonition",{title:"Archive Bucket OU Placement",type:"important"},(0,o.kt)("p",{parentName:"admonition"},"Best practice is to place the ORCA archive bucket in your Disaster Recovery OU.\nThis is done to better separate the costs associated with the cloud ready backup\nfrom primary Cumulus holdings and ingest and archive activity. See the\n",(0,o.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/about/architecture/architecture-intro"},"ORCA Architecture Introduction documentation"),"\nfor more information.")),(0,o.kt)("p",null,"The sections below go into further detail on creating the ORCA archive bucket."),(0,o.kt)("h2",{id:"create-the-orca-archive-and-report-buckets"},"Create the ORCA Archive and Report Buckets"),(0,o.kt)("p",null,"Prior to creating the S3 buckets, make sure the deployment environment is created\nper the ",(0,o.kt)("a",{parentName:"p",href:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment"},"Creating the Deployment Environment"),"\ndocumentation."),(0,o.kt)("p",null,"To create the ORCA buckets run the AWS CLI command below twice, once for your archive bucket and once for your report bucket.\nReplace the ","[","place holder text","]"," with proper values for your deployment."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'aws s3api create-bucket \\\n --bucket [orca bucket name] \\\n --profile [AWS OU profile] \\\n --region us-west-2 \\\n --create-bucket-configuration "LocationConstraint=us-west-2"\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"[","AWS OU profile","]")," - This is the AWS profile name to use to connect to the proper OU where the bucket will be created."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"[","orca bucket name","]")," - This is the name of your bucket. Example: ",(0,o.kt)("inlineCode",{parentName:"li"},"PREFIX-orca-archive")," and ",(0,o.kt)("inlineCode",{parentName:"li"},"PREFIX-orca-reports"),(0,o.kt)("admonition",{parentName:"li",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Due to limits on report names, the maximum length of a non-report bucket's name is 54 characters.")))),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The ",(0,o.kt)("inlineCode",{parentName:"p"},"--region us-west-2")," and ",(0,o.kt)("inlineCode",{parentName:"p"},'--create-bucket-configuration "LocationConstraint=us-west-2"'),"\nlines are only necessary if you are creating your bucket outside of ",(0,o.kt)("strong",{parentName:"p"},"us-east-1"),".")),(0,o.kt)("p",null,"For more information on creating an S3 bucket, see the\n",(0,o.kt)("a",{parentName:"p",href:"http://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html"},'AWS "Creating a Bucket" documentation'),"\nand the ",(0,o.kt)("a",{parentName:"p",href:"https://nasa.github.io/cumulus/docs/deployment/create_bucket"},'Cumulus "Creating an S3 Bucket" documentation'),"."),(0,o.kt)("h2",{id:"provide-cross-account-ou-access"},"Provide Cross Account (OU) Access"),(0,o.kt)("p",null,"Per best practice, the ORCA archive bucket will be created in the Disaster\nRecovery OU and the additional ORCA components will be created in the Cumulus OU.\nIn order for the components in the Cumulus OU to interact with the ORCA archive\nbucket in the Cumulus OU, cross account bucket access privileges are needed. This\nsection details the steps needed to request the cross account bucket access."),(0,o.kt)("admonition",{title:"Deploying ORCA with Objects in Different OUs",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"If you are following best practice and have created your ORCA archive bucket in\nthe Disaster Recovery OU, you must have cross account bucket access permissions\ncreated and enabled before deploying the ORCA code. If you do not, your deployment\nwill return with the following error."),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre"},"module.orca.module.orca_lambdas.aws_s3_bucket_notification.copy_lambda_trigger: Creating...\n\nError: Error putting S3 notification configuration: AccessDenied: Access Denied\n status code: 403, request id: 2E31C2ACD124B50B, host id: 0JrRBUioe/gT......\n"))),(0,o.kt)("h3",{id:"via-ngap-form"},"Via NGAP form"),(0,o.kt)("p",null,"If your accounts are both within EDC, you may skip to ",(0,o.kt)("a",{parentName:"p",href:"#via-aws-gui"},"the primary method"),".\nOtherwise, create a NASD ticket for cross account bucket access.\nThis is a turn key request to NGAP. The link to create a ticket is available\n",(0,o.kt)("a",{parentName:"p",href:"https://bugs.earthdata.nasa.gov/servicedesk/customer/portal/7/create/85"},"here"),"."),(0,o.kt)("p",null,"The sections below provide information on the data needed\nfor each of the fields and where to look for information."),(0,o.kt)("h4",{id:"project-name"},"Project Name"),(0,o.kt)("p",null,"This is the name of the Disaster Recover OU where the ORCA archive bucket resides.\nThe project name can be found in your ",(0,o.kt)("a",{parentName:"p",href:"http://cloud.earthdata.nasa.gov/"},"Cloud Tamer"),"\naccount and is usually in the format of ","[","project name","]","-app-","[","application name","]","-","[","environment","]","-","[","4 digit number","]",".\nFor example, an ORCA disaster recovery OU project name may look like the following\norca-app-dr-sandbox-1234."),(0,o.kt)("h4",{id:"account-type"},"Account Type:"),(0,o.kt)("p",null,"This is the OU environment the bucket resides in. Typical values for this field\nare Sandbox, SIT, UAT, and Production."),(0,o.kt)("h4",{id:"business-justification"},"Business Justification:"),(0,o.kt)("p",null,"This is the business justification for the cross account bucket access. Below is\nan example of a justification."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"The ORCA Cumulus application in the Cumulus Sandbox OU needs to read/write to\nthe ORCA DR account S3 buckets in order to create an operational archive copy of\nORCA data and recover data back to the primary Cumulus data holdings in case\nof a failure. Note that only ",(0,o.kt)("inlineCode",{parentName:"p"},"GLACIER")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"DEEP_ARCHIVE")," storage types are allowed for objects written to the bucket. This cross account access will allow the Cumulus application to\nseamlessly perform these functions and provide operators with the capability to\ntest and verify disaster recovery scenarios.")),(0,o.kt)("h4",{id:"bucket-namess"},"Bucket Names(s):"),(0,o.kt)("p",null,"This is the name of the ORCA archive bucket created in the Disaster Recover OU.\nBelow is an example name of an ORCA archive bucket and ORCA report bucket."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"PREFIX-orca-archive\nPREFIX-orca-reports")),(0,o.kt)("h4",{id:"policy"},"Policy:"),(0,o.kt)("p",null,"The policy section is the JSON policy requested for the ORCA archive bucket in\nthe Disaster Recovery OU.\nSee ",(0,o.kt)("a",{parentName:"p",href:"#via-aws-gui"},"the section below")," for policy document examples."),(0,o.kt)("h3",{id:"via-aws-cloudformation-template"},"Via AWS CloudFormation Template"),(0,o.kt)("p",null,"The AWS Cloudformation template for creating the ORCA DR buckets can be found ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/modules/dr_buckets_cloudformation/dr-buckets.yaml"},"here"),". Make sure you have AWS CLI installed before deploying this template."),(0,o.kt)("p",null,"From your terminal, run the following command by replacing the variables ",(0,o.kt)("inlineCode",{parentName:"p"},"")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"")," first:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},'aws cloudformation deploy --stack-name -orca-bucket-stack --template-file dr-buckets.yaml --parameter-overrides "PREFIX"="" "CumulusAccountID"=""\n\n')),(0,o.kt)("p",null,"This will create archive and reports buckets with the necessary bucket policies giving the Cumulus Account permission to write data to the archive bucket."),(0,o.kt)("h3",{id:"via-aws-gui"},"Via AWS GUI"),(0,o.kt)("p",null,'For each of the buckets listed below\ngo to AWS, open the bucket in question, click "Permissions",\nthen under "Bucket policy" click "Edit".\nThe policy given, once modified, can be pasted into this form.'),(0,o.kt)("h5",{id:"archive-bucket"},"Archive Bucket:"),(0,o.kt)("p",null,"The policy shown below can be used with some minor\nmodifications, which will be detailed below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Sid": "Cross Account Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action":[\n "s3:GetObject*",\n "S3:GetObjectTagging",\n "S3:PutObjectTagging",\n "s3:RestoreObject",\n "s3:GetBucket*",\n "s3:ListBucket",\n "s3:PutBucketNotification",\n "s3:GetInventoryConfiguration",\n "s3:PutInventoryConfiguration",\n "s3:ListBucketVersions"\n ],\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-archive",\n "arn:aws:s3:::PREFIX-orca-archive/*"\n ]\n },\n {\n "Sid": "Cross Account Write Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action": "s3:PutObject*",\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-archive/*"\n ],\n "Condition": {\n "StringEquals": {\n "s3:x-amz-acl": "bucket-owner-full-control",\n "s3:x-amz-storage-class": [\n "GLACIER",\n "DEEP_ARCHIVE"\n ]\n }\n }\n }\n ]\n}\n')),(0,o.kt)("p",null,"The Principal value is the AWS root user for your Cumulus application that will\naccess the ORCA archive bucket. The value for this can be retrieved by\nperforming the following."),(0,o.kt)("p",null,"First, change your connection to the Cumulus account/OU rather than the Disaster Recovery account/OU.\nThen, using your AWS CLI client run the following command to get the account number:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'aws sts get-caller-identity\n\n{\n "UserId": "ABCWXYZ123...",\n "Account": "90912...",\n "Arn": "arn:aws:iam::90912...:user/NGAPShApplicationDeveloper-someone-123"\n}\n')),(0,o.kt)("p",null,"Replace the number in ",(0,o.kt)("inlineCode",{parentName:"p"},"arn:aws:iam::012345678912:root")," with the value of your non-DR account number."),(0,o.kt)("p",null,"The Resource value is the bucket and bucket paths that the Cumulus application\ncan access. Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name\nof the Orca archive bucket created in the previous section."),(0,o.kt)("h5",{id:"reports-bucket"},"Reports Bucket:"),(0,o.kt)("p",null,"The policy shown below can be used with some minor\nmodifications, which will be detailed below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Sid": "Cross Account Access",\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam::012345678912:root"\n },\n "Action": [\n "s3:GetObject*",\n "s3:GetBucket*",\n "s3:ListBucket",\n "s3:PutObject",\n "s3:PutObjectAcl",\n "s3:PutBucketNotification"\n ],\n "Resource": [\n "arn:aws:s3:::PREFIX-orca-reports",\n "arn:aws:s3:::PREFIX-orca-reports/*"\n ]\n },\n {\n "Sid": "Inventory-PREFIX-orca-archive-reports",\n "Effect": "Allow",\n "Principal": {\n "Service": "s3.amazonaws.com"\n },\n "Action": "s3:PutObject",\n "Resource": "arn:aws:s3:::PREFIX-orca-reports/*",\n "Condition": {\n "StringEquals": {\n "s3:x-amz-acl": "bucket-owner-full-control",\n "aws:SourceAccount": "000000000000"\n },\n "ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::PREFIX-orca-archive"]\n }\n }\n }\n ]\n}\n')),(0,o.kt)("p",null,"The Principal value is the AWS root user for your Cumulus application that will\naccess the ORCA reports bucket.\nSee the Archive Bucket instructions for assistance getting this value."),(0,o.kt)("p",null,"Replace the number in ",(0,o.kt)("inlineCode",{parentName:"p"},"arn:aws:iam::012345678912:root")," with the value of your non-DR account number.\nSee the Archive Bucket instructions for assistance getting this value."),(0,o.kt)("p",null,"Replace the number ",(0,o.kt)("inlineCode",{parentName:"p"},"000000000000")," with your DR account number."),(0,o.kt)("p",null,"The Resource value is the bucket and bucket paths that the Cumulus application\ncan access. Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-reports")," with the name\nof the Orca reports bucket created in the previous section."),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name of your ",(0,o.kt)("a",{parentName:"p",href:"#archive-bucket"},"ORCA archive bucket"),".\nIf you have multiple ORCA buckets, expand the ",(0,o.kt)("inlineCode",{parentName:"p"},"SourceArn")," array with the following format:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME"]\n}\n')),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"PREFIX-orca-archive")," with the name of your ",(0,o.kt)("a",{parentName:"p",href:"#archive-bucket"},"ORCA archive bucket"),".\nIf you have multiple ORCA buckets, expand the ",(0,o.kt)("inlineCode",{parentName:"p"},"SourceArn")," array with the following format:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"ArnLike": {\n "aws:SourceArn": ["arn:aws:s3:::BUCKET-NAME", "arn:aws:s3:::BUCKET-NAME"]\n}\n')),(0,o.kt)("h5",{id:"bucket-policy-for-load-balancer-server-access-logging"},"Bucket policy for load balancer server access logging:"),(0,o.kt)("p",null,"You must add the following S3 bucket policy to your ",(0,o.kt)("inlineCode",{parentName:"p"},"system_bucket"),", which will likely be named ",(0,o.kt)("inlineCode",{parentName:"p"},"-internal"),", to give the load balancer access to write logs to the S3 bucket. Otherwise, the deployment will throw an ",(0,o.kt)("inlineCode",{parentName:"p"},"Access Denied")," error. If successful, a test log message will be posted to the bucket under the provided prefix."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Effect": "Allow",\n "Principal": {\n "AWS": "arn:aws:iam:::root"\n },\n "Action": "s3:PutObject",\n "Resource": "arn:aws:s3:::/-lb-gql-a-logs/AWSLogs//*"\n }\n ]\n}\n')),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"")," with the ID of the AWS account for Elastic Load Balancing for your Region which can be found ",(0,o.kt)("a",{parentName:"p",href:"https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy"},"here"),". If you do not know your region name, it can be found ",(0,o.kt)("a",{parentName:"p",href:"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html"},"here"),"."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Note that ",(0,o.kt)("inlineCode",{parentName:"p"},"")," is different from your AWS account ID.")),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"")," with your ",(0,o.kt)("inlineCode",{parentName:"p"},"system-bucket")," name."),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"")," with your prefix."),(0,o.kt)("p",null,"Replace ",(0,o.kt)("inlineCode",{parentName:"p"},"")," with your Cumulus OU account number."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67141c36.0ba6cfa2.js b/assets/js/67141c36.0ba6cfa2.js deleted file mode 100644 index d6b4a2ddb..000000000 --- a/assets/js/67141c36.0ba6cfa2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[1510,2083],{4836:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(7462),r=(a(7294),a(3905)),o=a(4079),i=a(4996);const l={id:"data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data."},s=void 0,c={unversionedId:"operator/data-recovery",id:"operator/data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data.",source:"@site/docs/operator/data-recovery.md",sourceDirName:"operator",slug:"/operator/data-recovery",permalink:"/cumulus-orca/docs/operator/data-recovery",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/data-recovery.md",tags:[],version:"current",frontMatter:{id:"data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data."},sidebar:"ops_guide",previous:{title:"Operator Introduction",permalink:"/cumulus-orca/docs/operator/operator-intro"},next:{title:"Re-Ingesting Data to ORCA",permalink:"/cumulus-orca/docs/operator/reingest-to-orca"}},p={},u=[{value:"Recovery via Cumulus Dashboard",id:"recovery-via-cumulus-dashboard",level:2},{value:"Manual recovery via step function workflow",id:"manual-recovery-via-step-function-workflow",level:2},{value:"Recovery workflow input and output examples",id:"recovery-workflow-input-and-output-examples",level:3},{value:"Recovery workflow configurable parameters",id:"recovery-workflow-configurable-parameters",level:3}],m={toc:u},d="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{type:"important"},(0,r.kt)("p",{parentName:"admonition"},"As of ORCA v8.1 the Cumulus Message Adapter is no longer used. Users will need to deploy the recovery adapter before the recovery can be ran. Reference ",(0,r.kt)("a",{parentName:"p",href:"https://nasa.github.io/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus#modify-the-recovery-workflow"},"Deployment with Cumulus"))),(0,r.kt)("h2",{id:"recovery-via-cumulus-dashboard"},"Recovery via Cumulus Dashboard"),(0,r.kt)("p",null,"Recovery processes are kicked off manually by an operator through the Cumulus Dashboard.\nThe dashboard calls an API which kicks off a recovery workflow.\nRecovery is an asynchronous operation since data\nrequested from GLACIER can take 4 hours or more to reconstitute,\nand DEEP_ARCHIVE can take 12 hours.\nSince it is asynchronous, the recovery container\nrelies on a database to maintain the status of the request and event\ndriven triggers to restore the data once it has been reconstituted\nfrom archive into an S3 bucket. Currently, data is copied back to the\nCumulus S3 primary data bucket which is the default bucket. The operator\nhas the option to override the default bucket with another restore bucket if desired.\nDetermining the status of the recovery job is done manually by querying the database\ndirectly or by checking the status on the dashboard."),(0,r.kt)("p",null,"A screenshot of the Cumulus dashboard used for recovering granules is shown below."),(0,r.kt)(o.default,{imageSource:(0,i.Z)("img/Cumulus-Dashboard-Recovery-Workflow.png"),imageAlt:"Cumulus Dashboard used for recovery",zoomInPic:(0,i.Z)("img/zoom-in.svg"),zoomOutPic:(0,i.Z)("img/zoom-out.svg"),resetPic:(0,i.Z)("img/zoom-pan-reset.svg"),mdxType:"MyImage"}),(0,r.kt)("p",null,"On the dashboard home page, click on ",(0,r.kt)("inlineCode",{parentName:"p"},"Granules")," option and add the granule to recover.\nThen click on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Options")," button and select ",(0,r.kt)("inlineCode",{parentName:"p"},"Execute"),". From the dropdown menu,\nselect ",(0,r.kt)("inlineCode",{parentName:"p"},"OrcaRecoveryWorkflow")," and hit ",(0,r.kt)("inlineCode",{parentName:"p"},"Confirm"),". This will execute the recovery process.\nThere are several configurable parameters that can be set up while running the workflow and are explained in\nthe section ",(0,r.kt)("a",{parentName:"p",href:"#recovery-workflow-configurable-parameters"},"below"),"."),(0,r.kt)("h2",{id:"manual-recovery-via-step-function-workflow"},"Manual recovery via step function workflow"),(0,r.kt)("p",null,"An operator can also run the recovery by running the ",(0,r.kt)("inlineCode",{parentName:"p"},"Recovery Workflow")," in step function. "),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"The operator should have access to AWS console to manually run the workflow which is not ideal.")),(0,r.kt)("h3",{id:"recovery-workflow-input-and-output-examples"},"Recovery workflow input and output examples"),(0,r.kt)("p",null,"The following is an input event example that an operator might set up while running the recovery workflow."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "payload": {\n "granules": [\n {\n "collectionId": "1234",\n "granuleId": "integrationGranuleId",\n "version": "integrationGranuleVersion",\n "files": [\n {\n "fileName": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "bucket": "test-orca-primary"\n }\n ]\n }\n ]\n },\n "meta": {\n "buckets": {\n "protected": {\n "name": "test-protected",\n "type": "protected"\n },\n "internal": {\n "name": "test-internal",\n "type": "internal"\n },\n "private": {\n "name": "test-private",\n "type": "private"\n },\n "public": {\n "name": "test-public",\n "type": "public"\n },\n "orca_default": {\n "name": "test-orca-primary",\n "type": "orca"\n }\n },\n "collection": {\n "meta": {\n "orca": {\n "excludedFileExtensions": [\n ".xml"\n ],\n "defaultBucketOverride": "test-orca-primary",\n "defaultRecoveryTypeOverride": "Standard"\n },\n "s3MultipartChunksizeMb": 200\n },\n "files": [\n {\n "regex": ".*.tar.gz",\n "sampleFileName": "blah.tar.gz",\n "bucket": "public"\n }\n ]\n }\n },\n "cumulus_meta": {\n "system_bucket": "test-internal",\n "asyncOperationId": "1234"\n }\n}\n')),(0,r.kt)("p",null,"The following is the corresponding output that the workflow will return if successful."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'\n{\n "granules": [\n {\n "collectionId": "integrationCollectionId",\n "granuleId": "integrationGranuleId",\n "version": "integrationGranuleVersion",\n "files": [\n {\n "fileName": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "bucket": "test-orca-primary"\n }\n ],\n "keys": [\n {\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "destBucket": "test-public"\n }\n ],\n "recoverFiles": [\n {\n "success": true,\n "filename": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "keyPath": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "restoreDestination": "test-public",\n "s3MultipartChunksizeMb": 200,\n "statusId": 1,\n "requestTime": "2022-11-16T17:29:19.008088+00:00",\n "lastUpdate": "2022-11-16T17:29:19.008088+00:00",\n "completionTime": "2022-11-16T17:29:19.008088+00:00"\n }\n ]\n }\n ],\n "asyncOperationId": "1234"\n}\n\n')),(0,r.kt)("h3",{id:"recovery-workflow-configurable-parameters"},"Recovery workflow configurable parameters"),(0,r.kt)("p",null,"The following are the parameters needed for recovery workflow:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"buckets- AWS S3 bucket mapping used for Cumulus and ORCA configuration. Contains the following properties:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"name (Required)- Name of the S3 bucket."),(0,r.kt)("li",{parentName:"ul"},"type (Optional)- the type of bucket - i.e. internal, public, private, protected. ")),(0,r.kt)("p",{parentName:"li"},"It can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "buckets.$": "$.meta.buckets"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"buckets": {\n "protected": {\n "name": "test-protected",\n "type": "protected"\n },\n "internal": {\n "name": "test-internal",\n "type": "internal"\n },\n "private": {\n "name": "test-private",\n "type": "private"\n },\n "public": {\n "name": "test-public",\n "type": "public"\n }\n}\n\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"fileBucketMaps- A list of dictionaries that contains details of the configured storage bucket and file regex. Contains the following properties:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"regex (Required)- The regex that matches the file extension type."),(0,r.kt)("li",{parentName:"ul"},"bucket (Required))- The name of the key that points to the correct S3 bucket. Examples include public, private, protected, etc."),(0,r.kt)("li",{parentName:"ul"},"sampleFileName (Optional)- name of a sample file having extension.")),(0,r.kt)("p",{parentName:"li"},"It can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "fileBucketMaps.$": "$.meta.collection.files"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"fileBucketMaps": [\n {\n "regex": ".*.h5$",\n "sampleFileName": "L0A_HR_RAW_product_0010-of-0420.h5",\n "bucket": "protected"\n },\n {\n "regex": ".*.cmr.xml$",\n "sampleFileName": "L0A_HR_RAW_product_0010-of-0420.cmr.xml",\n "bucket": "protected"\n }\n]\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"excludedFileExtensions (Optional)- A list of file extensions to ignore when copying files.\nIt can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "excludedFileExtensions.$": "$.meta.collection.meta.orca.excludedFileExtensions"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "orca": {\n "excludedFileExtensions": [\n ".xml"\n ]\n }\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"defaultRecoveryTypeOverride (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-optional-variables"},"orca_default_recovery_type")," via a change in the collections configuration under ",(0,r.kt)("inlineCode",{parentName:"p"},"meta")," tag as shown below. "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},' "config": {\n "defaultRecoveryTypeOverride": "{$.event.meta.collection.meta.orca.defaultRecoveryTypeOverride}"\n }\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},' "collection": {\n "meta":{\n "orca": {\n "defaultRecoveryTypeOverride": "Standard"\n }\n }\n }\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"defaultBucketOverride (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-required-variables"},"orca_default_bucket")," to copy recovered files to."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "defaultBucketOverride": "{$.meta.collection.meta.orca.defaultBucketOverride}"\n }\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "orca": {\n "defaultBucketOverride": "orca-bucket"\n }\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"s3MultipartChunksizeMb (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-optional-variables"},"default_multipart_chunksize_mb")," from TF. Defaults to 250."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "s3MultipartChunksizeMb": 300\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"asyncOperationId (Optional)- The unique identifier used for tracking requests. If not present, it will be generated."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "asyncOperationId": "{$.cumulus_meta.asyncOperationId}"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"cumulus_meta": {\n "asyncOperationId": "1234"\n}\n')))),(0,r.kt)("p",null,"For full definition of the parameters, see the following schema."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nasa/cumulus-orca/blob/master/tasks/request_from_archive/schemas/config.json"},"request_from_archive schema")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nasa/cumulus-orca/blob/master/tasks/extract_filepaths_for_granule/schemas/config.json"},"extract_filepath_from_granule schema"))))}k.isMDXComponent=!0},4079:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(7462),r=a(7294),o=a(3905),i=a(6126);const l={},s=void 0,c={unversionedId:"templates/pan-zoom-image",id:"templates/pan-zoom-image",title:"pan-zoom-image",description:"The image below can be panned and zoomed using your mouse or the provided buttons.",source:"@site/docs/templates/pan-zoom-image.mdx",sourceDirName:"templates",slug:"/templates/pan-zoom-image",permalink:"/cumulus-orca/docs/templates/pan-zoom-image",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/templates/pan-zoom-image.mdx",tags:[],version:"current",frontMatter:{}},p={},u=[],m={toc:u},d="wrapper";function k(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"Interactive Image",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The image below can be panned and zoomed using your mouse or the provided buttons.\nTo reset the image to the original size on the page click ",(0,o.kt)("img",{width:"12px",height:"12px",src:a.resetPic,alt:"Reset Image"}),".\nIf you wish to view the full image on a separate page, click this ",(0,o.kt)("a",{href:a.imageSource,target:"_blank",rel:"noopener noreferrer"},"link"),".")),(0,o.kt)(i.d$,{defaultScale:1,mdxType:"TransformWrapper"},(e=>{let{zoomIn:t,zoomOut:n,resetTransform:l,...s}=e;return(0,o.kt)(r.Fragment,null,(0,o.kt)("div",{className:"tools"},(0,o.kt)("button",{onClick:()=>t()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.zoomInPic,alt:"Zoom In"})),(0,o.kt)("button",{onClick:()=>n()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.zoomOutPic,alt:"Zoom Out"})),(0,o.kt)("button",{onClick:()=>l()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.resetPic,alt:"Reset Image"}))),(0,o.kt)(i.Uv,{mdxType:"TransformComponent"},(0,o.kt)("img",{src:a.imageSource,alt:a.imageAlt})))})))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/67141c36.f9168cf0.js b/assets/js/67141c36.f9168cf0.js new file mode 100644 index 000000000..d5a70b854 --- /dev/null +++ b/assets/js/67141c36.f9168cf0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[1510,2083],{4836:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(7462),r=(a(7294),a(3905)),o=a(4079),i=a(4996);const l={id:"data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data."},s=void 0,c={unversionedId:"operator/data-recovery",id:"operator/data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data.",source:"@site/docs/operator/data-recovery.md",sourceDirName:"operator",slug:"/operator/data-recovery",permalink:"/cumulus-orca/docs/operator/data-recovery",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/data-recovery.md",tags:[],version:"current",frontMatter:{id:"data-recovery",title:"Data Recovery",description:"Provides documentation for Operators to recover missing data."},sidebar:"ops_guide",previous:{title:"Operator Introduction",permalink:"/cumulus-orca/docs/operator/operator-intro"},next:{title:"Re-Ingesting Data to ORCA",permalink:"/cumulus-orca/docs/operator/restore-to-orca"}},p={},u=[{value:"Recovery via Cumulus Dashboard",id:"recovery-via-cumulus-dashboard",level:2},{value:"Manual recovery via step function workflow",id:"manual-recovery-via-step-function-workflow",level:2},{value:"Recovery workflow input and output examples",id:"recovery-workflow-input-and-output-examples",level:3},{value:"Recovery workflow configurable parameters",id:"recovery-workflow-configurable-parameters",level:3}],m={toc:u},d="wrapper";function k(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"recovery-via-cumulus-dashboard"},"Recovery via Cumulus Dashboard"),(0,r.kt)("p",null,"Recovery processes are kicked off manually by an operator through the Cumulus Dashboard.\nThe dashboard calls an API which kicks off a recovery workflow.\nRecovery is an asynchronous operation since data\nrequested from GLACIER can take 4 hours or more to reconstitute,\nand DEEP_ARCHIVE can take 12 hours.\nSince it is asynchronous, the recovery container\nrelies on a database to maintain the status of the request and event\ndriven triggers to restore the data once it has been reconstituted\nfrom archive into an S3 bucket. Currently, data is copied back to the\nCumulus S3 primary data bucket which is the default bucket. The operator\nhas the option to override the default bucket with another restore bucket if desired.\nDetermining the status of the recovery job is done manually by querying the database\ndirectly or by checking the status on the dashboard."),(0,r.kt)("p",null,"A screenshot of the Cumulus dashboard used for recovering granules is shown below."),(0,r.kt)(o.default,{imageSource:(0,i.Z)("img/Cumulus-Dashboard-Recovery-Workflow.png"),imageAlt:"Cumulus Dashboard used for recovery",zoomInPic:(0,i.Z)("img/zoom-in.svg"),zoomOutPic:(0,i.Z)("img/zoom-out.svg"),resetPic:(0,i.Z)("img/zoom-pan-reset.svg"),mdxType:"MyImage"}),(0,r.kt)("p",null,"On the dashboard home page, click on ",(0,r.kt)("inlineCode",{parentName:"p"},"Granules")," option and add the granule to recover.\nThen click on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Options")," button and select ",(0,r.kt)("inlineCode",{parentName:"p"},"Execute"),". From the dropdown menu,\nselect ",(0,r.kt)("inlineCode",{parentName:"p"},"OrcaRecoveryWorkflow")," and hit ",(0,r.kt)("inlineCode",{parentName:"p"},"Confirm"),". This will execute the recovery process.\nThere are several configurable parameters that can be set up while running the workflow and are explained in\nthe section ",(0,r.kt)("a",{parentName:"p",href:"#recovery-workflow-configurable-parameters"},"below"),"."),(0,r.kt)("h2",{id:"manual-recovery-via-step-function-workflow"},"Manual recovery via step function workflow"),(0,r.kt)("p",null,"An operator can also run the recovery by running the ",(0,r.kt)("inlineCode",{parentName:"p"},"Recovery Workflow")," in step function. "),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"The operator should have access to AWS console to manually run the workflow which is not ideal.")),(0,r.kt)("h3",{id:"recovery-workflow-input-and-output-examples"},"Recovery workflow input and output examples"),(0,r.kt)("p",null,"The following is an input event example that an operator might set up while running the recovery workflow."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "payload": {\n "granules": [\n {\n "granuleId": "integrationGranuleId",\n "version": "integrationGranuleVersion",\n "files": [\n {\n "fileName": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "bucket": "test-orca-primary"\n }\n ]\n }\n ]\n },\n "meta": {\n "buckets": {\n "protected": {\n "name": "test-protected",\n "type": "protected"\n },\n "internal": {\n "name": "test-internal",\n "type": "internal"\n },\n "private": {\n "name": "test-private",\n "type": "private"\n },\n "public": {\n "name": "test-public",\n "type": "public"\n },\n "orca_default": {\n "name": "test-orca-primary",\n "type": "orca"\n }\n },\n "collection": {\n "meta": {\n "orca": {\n "excludedFileExtensions": [\n ".xml"\n ],\n "defaultBucketOverride": "test-orca-primary",\n "defaultRecoveryTypeOverride": "Standard"\n },\n "s3MultipartChunksizeMb": 200\n },\n "files": [\n {\n "regex": ".*.tar.gz",\n "sampleFileName": "blah.tar.gz",\n "bucket": "public"\n }\n ]\n }\n },\n "cumulus_meta": {\n "system_bucket": "test-internal",\n "asyncOperationId": "1234"\n }\n}\n')),(0,r.kt)("p",null,"The following is the corresponding output that the workflow will return if successful."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'\n{\n "granules": [\n {\n "granuleId": "integrationGranuleId",\n "version": "integrationGranuleVersion",\n "files": [\n {\n "fileName": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "bucket": "test-orca-primary"\n }\n ],\n "keys": [\n {\n "key": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "destBucket": "test-public"\n }\n ],\n "recoverFiles": [\n {\n "success": true,\n "filename": "MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "keyPath": "MOD09GQ/006/MOD09GQ.A2017025.h21v00.006.2017034065104.hdf",\n "restoreDestination": "test-public",\n "s3MultipartChunksizeMb": 200,\n "statusId": 1,\n "requestTime": "2022-11-16T17:29:19.008088+00:00",\n "lastUpdate": "2022-11-16T17:29:19.008088+00:00",\n "completionTime": "2022-11-16T17:29:19.008088+00:00"\n }\n ]\n }\n ],\n "asyncOperationId": "1234"\n}\n\n')),(0,r.kt)("h3",{id:"recovery-workflow-configurable-parameters"},"Recovery workflow configurable parameters"),(0,r.kt)("p",null,"The following are the parameters needed for recovery workflow:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"buckets- AWS S3 bucket mapping used for Cumulus and ORCA configuration. Contains the following properties:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"name (Required)- Name of the S3 bucket."),(0,r.kt)("li",{parentName:"ul"},"type (Optional)- the type of bucket - i.e. internal, public, private, protected. ")),(0,r.kt)("p",{parentName:"li"},"It can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "buckets.$": "$.meta.buckets"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"buckets": {\n "protected": {\n "name": "test-protected",\n "type": "protected"\n },\n "internal": {\n "name": "test-internal",\n "type": "internal"\n },\n "private": {\n "name": "test-private",\n "type": "private"\n },\n "public": {\n "name": "test-public",\n "type": "public"\n }\n}\n\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"fileBucketMaps- A list of dictionaries that contains details of the configured storage bucket and file regex. Contains the following properties:"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"regex (Required)- The regex that matches the file extension type."),(0,r.kt)("li",{parentName:"ul"},"bucket (Required))- The name of the key that points to the correct S3 bucket. Examples include public, private, protected, etc."),(0,r.kt)("li",{parentName:"ul"},"sampleFileName (Optional)- name of a sample file having extension.")),(0,r.kt)("p",{parentName:"li"},"It can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "fileBucketMaps.$": "$.meta.collection.files"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"fileBucketMaps": [\n {\n "regex": ".*.h5$",\n "sampleFileName": "L0A_HR_RAW_product_0010-of-0420.h5",\n "bucket": "protected"\n },\n {\n "regex": ".*.cmr.xml$",\n "sampleFileName": "L0A_HR_RAW_product_0010-of-0420.cmr.xml",\n "bucket": "protected"\n }\n]\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"excludedFileExtensions (Optional)- A list of file extensions to ignore when copying files.\nIt can be set up using the following configuration."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "excludedFileExtensions.$": "$.meta.collection.meta.orca.excludedFileExtensions"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "orca": {\n "excludedFileExtensions": [\n ".xml"\n ]\n }\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"defaultRecoveryTypeOverride (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-optional-variables"},"orca_default_recovery_type")," via a change in the collections configuration under ",(0,r.kt)("inlineCode",{parentName:"p"},"meta")," tag as shown below. "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},' "config": {\n "defaultRecoveryTypeOverride": "{$.event.meta.collection.meta.orca.defaultRecoveryTypeOverride}"\n }\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},' "collection": {\n "meta":{\n "orca": {\n "defaultRecoveryTypeOverride": "Standard"\n }\n }\n }\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"defaultBucketOverride (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-required-variables"},"orca_default_bucket")," to copy recovered files to."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "defaultBucketOverride": "{$.meta.collection.meta.orca.defaultBucketOverride}"\n }\n')),(0,r.kt)("p",{parentName:"li"},"Example: "),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "orca": {\n "defaultBucketOverride": "orca-bucket"\n }\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"s3MultipartChunksizeMb (Optional)- Overrides the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/nasa/cumulus-orca/blob/master/website/docs/developer/deployment-guide/deployment-with-cumulus.md#orca-optional-variables"},"default_multipart_chunksize_mb")," from TF. Defaults to 250."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "s3MultipartChunksizeMb": "{$.meta.collection.meta.s3MultipartChunksizeMb}"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"collection": {\n "meta": {\n "s3MultipartChunksizeMb": 300\n }\n}\n'))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"asyncOperationId (Optional)- The unique identifier used for tracking requests. If not present, it will be generated."),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"config": {\n "asyncOperationId": "{$.cumulus_meta.asyncOperationId}"\n}\n')),(0,r.kt)("p",{parentName:"li"},"Example:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"cumulus_meta": {\n "asyncOperationId": "1234"\n}\n')))),(0,r.kt)("p",null,"For full definition of the parameters, see the following schema."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nasa/cumulus-orca/blob/master/tasks/request_from_archive/schemas/config.json"},"request_from_archive schema")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/nasa/cumulus-orca/blob/master/tasks/extract_filepaths_for_granule/schemas/config.json"},"extract_filepath_from_granule schema"))))}k.isMDXComponent=!0},4079:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>s,default:()=>k,frontMatter:()=>l,metadata:()=>c,toc:()=>u});var n=a(7462),r=a(7294),o=a(3905),i=a(6126);const l={},s=void 0,c={unversionedId:"templates/pan-zoom-image",id:"templates/pan-zoom-image",title:"pan-zoom-image",description:"The image below can be panned and zoomed using your mouse or the provided buttons.",source:"@site/docs/templates/pan-zoom-image.mdx",sourceDirName:"templates",slug:"/templates/pan-zoom-image",permalink:"/cumulus-orca/docs/templates/pan-zoom-image",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/templates/pan-zoom-image.mdx",tags:[],version:"current",frontMatter:{}},p={},u=[],m={toc:u},d="wrapper";function k(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{title:"Interactive Image",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The image below can be panned and zoomed using your mouse or the provided buttons.\nTo reset the image to the original size on the page click ",(0,o.kt)("img",{width:"12px",height:"12px",src:a.resetPic,alt:"Reset Image"}),".\nIf you wish to view the full image on a separate page, click this ",(0,o.kt)("a",{href:a.imageSource,target:"_blank",rel:"noopener noreferrer"},"link"),".")),(0,o.kt)(i.d$,{defaultScale:1,mdxType:"TransformWrapper"},(e=>{let{zoomIn:t,zoomOut:n,resetTransform:l,...s}=e;return(0,o.kt)(r.Fragment,null,(0,o.kt)("div",{className:"tools"},(0,o.kt)("button",{onClick:()=>t()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.zoomInPic,alt:"Zoom In"})),(0,o.kt)("button",{onClick:()=>n()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.zoomOutPic,alt:"Zoom Out"})),(0,o.kt)("button",{onClick:()=>l()},(0,o.kt)("img",{width:"15px",height:"15px",src:a.resetPic,alt:"Reset Image"}))),(0,o.kt)(i.Uv,{mdxType:"TransformComponent"},(0,o.kt)("img",{src:a.imageSource,alt:a.imageAlt})))})))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.ca64ad6a.js b/assets/js/935f2afb.ca64ad6a.js deleted file mode 100644 index 1278f64a1..000000000 --- a/assets/js/935f2afb.ca64ad6a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"about_orca":[{"type":"category","label":"Introduction","items":[{"type":"link","label":"Introduction to ORCA","href":"/cumulus-orca/docs/about/introduction/orca-intro","docId":"about/introduction/orca-intro"},{"type":"link","label":"Navigating the ORCA Documents","href":"/cumulus-orca/docs/about/introduction/intro-navigating","docId":"about/introduction/intro-navigating"},{"type":"link","label":"Contributing to ORCA","href":"/cumulus-orca/docs/about/introduction/intro-contributing","docId":"about/introduction/intro-contributing"},{"type":"link","label":"Glossary","href":"/cumulus-orca/docs/about/introduction/intro-glossary","docId":"about/introduction/intro-glossary"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Architecture","items":[{"type":"link","label":"ORCA Architecture Introduction","href":"/cumulus-orca/docs/about/architecture/architecture-intro","docId":"about/architecture/architecture-intro"},{"type":"link","label":"Software System Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-software-system","docId":"about/architecture/architecture-software-system"},{"type":"link","label":"Archive Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-archive-container","docId":"about/architecture/architecture-archive-container"},{"type":"link","label":"Recover Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-recover-container","docId":"about/architecture/architecture-recover-container"},{"type":"link","label":"API Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-api-container","docId":"about/architecture/architecture-api-container"},{"type":"link","label":"Database Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-database-container","docId":"about/architecture/architecture-database-container"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ORCA Team","items":[{"type":"link","label":"ORCA Team","href":"/cumulus-orca/docs/about/team","docId":"about/team"}],"collapsed":true,"collapsible":true}],"dev_guide":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Developer Quick Start Guide","href":"/cumulus-orca/docs/developer/quickstart/developer-intro","docId":"developer/quickstart/developer-intro"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Development Guide","items":[{"type":"category","label":"Developing Code","items":[{"type":"link","label":"Code Introduction","href":"/cumulus-orca/docs/developer/development-guide/code/contrib-code-intro","docId":"developer/development-guide/code/contrib-code-intro"},{"type":"link","label":"Setting Up a Dev Environment","href":"/cumulus-orca/docs/developer/development-guide/code/setup-dev-env","docId":"developer/development-guide/code/setup-dev-env"},{"type":"link","label":"Best Practices","href":"/cumulus-orca/docs/developer/development-guide/code/best-practices","docId":"developer/development-guide/code/best-practices"},{"type":"link","label":"Clean Architecture","href":"/cumulus-orca/docs/developer/development-guide/code/clean-architecture","docId":"developer/development-guide/code/clean-architecture"},{"type":"link","label":"versioning-releases","href":"/cumulus-orca/docs/developer/development-guide/code/versioning-releases","docId":"developer/development-guide/code/versioning-releases"},{"type":"link","label":"Running Pylint Against Your Code","href":"/cumulus-orca/docs/developer/development-guide/code/linting","docId":"developer/development-guide/code/linting"},{"type":"link","label":"Local Debugging with AWS Resources","href":"/cumulus-orca/docs/developer/development-guide/code/local-debugging","docId":"developer/development-guide/code/local-debugging"},{"type":"link","label":"Unit Tests","href":"/cumulus-orca/docs/developer/development-guide/code/unit-tests","docId":"developer/development-guide/code/unit-tests"},{"type":"link","label":"Integration Tests","href":"/cumulus-orca/docs/developer/development-guide/code/integration-tests","docId":"developer/development-guide/code/integration-tests"},{"type":"link","label":"Postgres Tests","href":"/cumulus-orca/docs/developer/development-guide/code/postgres-tests","docId":"developer/development-guide/code/postgres-tests"},{"type":"link","label":"ORCA Logs","href":"/cumulus-orca/docs/developer/development-guide/code/orca-logging","docId":"developer/development-guide/code/orca-logging"},{"type":"link","label":"Parallel Scripting","href":"/cumulus-orca/docs/developer/development-guide/code/parallel-scripting","docId":"developer/development-guide/code/parallel-scripting"},{"type":"link","label":"Postgres Paging","href":"/cumulus-orca/docs/developer/development-guide/code/postgres-tips","docId":"developer/development-guide/code/postgres-tips"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developing Documentation","items":[{"type":"link","label":"Documentation Introduction","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-intro","docId":"developer/development-guide/documentation/contrib-documentation-intro"},{"type":"link","label":"Development Environment","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-env","docId":"developer/development-guide/documentation/contrib-documentation-env"},{"type":"link","label":"Adding New Content","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-add","docId":"developer/development-guide/documentation/contrib-documentation-add"},{"type":"link","label":"Documentation Templates","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-templates","docId":"developer/development-guide/documentation/contrib-documentation-templates"},{"type":"link","label":"Task Documentation","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-tasks","docId":"developer/development-guide/documentation/contrib-documentation-tasks"},{"type":"link","label":"Documentation Style Guide","href":"/cumulus-orca/docs/developer/development-guide/documentation/documentation-style-guide","docId":"developer/development-guide/documentation/documentation-style-guide"},{"type":"link","label":"Deploying Documentation","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-deploy","docId":"developer/development-guide/documentation/contrib-documentation-deploy"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deployment Guide","items":[{"type":"link","label":"Deployment Information","href":"/cumulus-orca/docs/developer/deployment-guide/deployment","docId":"developer/deployment-guide/deployment"},{"type":"link","label":"Creating a Deployment Environment","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-environment","docId":"developer/deployment-guide/deployment-environment"},{"type":"link","label":"Creating the Archive Bucket","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket","docId":"developer/deployment-guide/deployment-s3-bucket"},{"type":"link","label":"Generating S3 credentials","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials","docId":"developer/deployment-guide/deployment-s3-credentials"},{"type":"link","label":"Deploying ORCA with Cumulus","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus","docId":"developer/deployment-guide/deployment-with-cumulus"},{"type":"link","label":"Upgrading ORCA","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca","docId":"developer/deployment-guide/deployment-upgrading-orca"},{"type":"link","label":"Recovery Workflow","href":"/cumulus-orca/docs/developer/deployment-guide/recovery-workflow","docId":"developer/deployment-guide/recovery-workflow"},{"type":"link","label":"Testing Deployment","href":"/cumulus-orca/docs/developer/deployment-guide/testing_deployment","docId":"developer/deployment-guide/testing_deployment"},{"type":"link","label":"Deploy from Windows","href":"/cumulus-orca/docs/developer/deployment-guide/deploying-from-windows","docId":"developer/deployment-guide/deploying-from-windows"}],"collapsed":true,"collapsible":true},{"type":"category","label":"API Reference","items":[{"type":"link","label":"ORCA API Reference","href":"/cumulus-orca/docs/developer/api/","docId":"developer/api/orca-api"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Research","items":[{"type":"link","label":"Introduction to ORCA Research","href":"/cumulus-orca/docs/developer/research/research-intro","docId":"developer/research/research-intro"},{"type":"link","label":"Localstack Research Notes","href":"/cumulus-orca/docs/developer/research/research-localstack","docId":"developer/research/research-localstack"},{"type":"link","label":"API Gateway Research Notes","href":"/cumulus-orca/docs/developer/research/research-APIGateway","docId":"developer/research/research-APIGateway"},{"type":"link","label":"ORCA Reconciliation","href":"/cumulus-orca/docs/developer/research/research-reconciliation","docId":"developer/research/research-reconciliation"},{"type":"link","label":"Aurora Serverless Research Notes","href":"/cumulus-orca/docs/developer/research/research-AuroraServerless","docId":"developer/research/research-AuroraServerless"},{"type":"link","label":"GraphQL Research Notes","href":"/cumulus-orca/docs/developer/research/research-graphql","docId":"developer/research/research-graphql"},{"type":"link","label":"Multipart Chunksize Research Notes","href":"/cumulus-orca/docs/developer/research/research-multipart-chunksize","docId":"developer/research/research-multipart-chunksize"},{"type":"link","label":"Bamboo specs Research Notes","href":"/cumulus-orca/docs/developer/research/research-bamboo","docId":"developer/research/research-bamboo"},{"type":"link","label":"Research Notes on ORCA delete functionality.","href":"/cumulus-orca/docs/developer/research/research-orca-delete-functionality","docId":"developer/research/research-orca-delete-functionality"},{"type":"link","label":"Research Notes on running integration tests in bamboo CI/CD","href":"/cumulus-orca/docs/developer/research/research-bamboo-integration-tests","docId":"developer/research/research-bamboo-integration-tests"},{"type":"link","label":"Using Lambda functions as container research Notes","href":"/cumulus-orca/docs/developer/research/research-lambda-container","docId":"developer/research/research-lambda-container"},{"type":"link","label":"Notes on pushing and deploying docker images.","href":"/cumulus-orca/docs/developer/research/research-pushing-docker-image","docId":"developer/research/research-pushing-docker-image"},{"type":"link","label":"S3 Future Direction/Best Practices","href":"/cumulus-orca/docs/developer/research/research-s3-bucket-best-practices","docId":"developer/research/research-s3-bucket-best-practices"},{"type":"link","label":"Deep Archive Storage Migration Research Notes","href":"/cumulus-orca/docs/developer/research/research-deep-archive-migration","docId":"developer/research/research-deep-archive-migration"},{"type":"link","label":"Logging Libraries Research Notes","href":"/cumulus-orca/docs/developer/research/research-logging-libraries","docId":"developer/research/research-logging-libraries"}],"collapsed":true,"collapsible":true}],"ops_guide":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Operator Introduction","href":"/cumulus-orca/docs/operator/operator-intro","docId":"operator/operator-intro"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Operations","items":[{"type":"link","label":"Data Recovery","href":"/cumulus-orca/docs/operator/data-recovery","docId":"operator/data-recovery"},{"type":"link","label":"Re-Ingesting Data to ORCA","href":"/cumulus-orca/docs/operator/reingest-to-orca","docId":"operator/reingest-to-orca"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Configuration","items":[{"type":"link","label":"Collection Configuration","href":"/cumulus-orca/docs/operator/collection-configuration","docId":"operator/collection-configuration"},{"type":"link","label":"S3 Storage Classes in Orca","href":"/cumulus-orca/docs/operator/storage-classes","docId":"operator/storage-classes"}],"collapsed":true,"collapsible":true}]},"docs":{"about/architecture/architecture-api-container":{"id":"about/architecture/architecture-api-container","title":"API Container Architecture","description":"High level overview of ORCA API Interface container architecture.","sidebar":"about_orca"},"about/architecture/architecture-archive-container":{"id":"about/architecture/architecture-archive-container","title":"Archive Container Architecture","description":"High level overview of ORCA archive data container architecture.","sidebar":"about_orca"},"about/architecture/architecture-database-container":{"id":"about/architecture/architecture-database-container","title":"Database Container Architecture","description":"ORCA database schema information.","sidebar":"about_orca"},"about/architecture/architecture-intro":{"id":"about/architecture/architecture-intro","title":"ORCA Architecture Introduction","description":"High level overview of ORCA architecture.","sidebar":"about_orca"},"about/architecture/architecture-recover-container":{"id":"about/architecture/architecture-recover-container","title":"Recover Container Architecture","description":"High level overview of ORCA recover container architecture.","sidebar":"about_orca"},"about/architecture/architecture-software-system":{"id":"about/architecture/architecture-software-system","title":"Software System Architecture","description":"High level overview of ORCA software system architecture.","sidebar":"about_orca"},"about/architecture/ORCA-Architecture":{"id":"about/architecture/ORCA-Architecture","title":"ORCA-Architecture","description":"Template Revision: 7.0 EN (based on asciidoc), January 2017"},"about/introduction/intro-contributing":{"id":"about/introduction/intro-contributing","title":"Contributing to ORCA","description":"Provides high level information on contributing to the ORCA project.","sidebar":"about_orca"},"about/introduction/intro-glossary":{"id":"about/introduction/intro-glossary","title":"Glossary","description":"Glossary of terms used in ORCA","sidebar":"about_orca"},"about/introduction/intro-navigating":{"id":"about/introduction/intro-navigating","title":"Navigating the ORCA Documents","description":"Provides tips and tricks to navigate the ORCA documentation.","sidebar":"about_orca"},"about/introduction/orca-intro":{"id":"about/introduction/orca-intro","title":"Introduction to ORCA","description":"Initial document describing what ORCA is and resources available.","sidebar":"about_orca"},"about/team":{"id":"about/team","title":"ORCA Team","description":"ORCA Team Listing","sidebar":"about_orca"},"developer/api/orca-api":{"id":"developer/api/orca-api","title":"ORCA API Reference","description":"ORCA API reference for developers that provides API documentation and interactions.","sidebar":"dev_guide"},"developer/deployment-guide/deploying-from-windows":{"id":"developer/deployment-guide/deploying-from-windows","title":"Deploy from Windows","description":"A concrete set of instructions on deploying from Windows to create a test environment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment":{"id":"developer/deployment-guide/deployment","title":"Deployment Information","description":"Provides developer information for ORCA code deployment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-environment":{"id":"developer/deployment-guide/deployment-environment","title":"Creating a Deployment Environment","description":"Provides developer with information on setting up deployment environment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-s3-bucket":{"id":"developer/deployment-guide/deployment-s3-bucket","title":"Creating the Archive Bucket","description":"Provides developer with information on archive storage solutions.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-s3-credentials":{"id":"developer/deployment-guide/deployment-s3-credentials","title":"Generating S3 credentials","description":"Provides developer with information on archive storage solutions.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-upgrading-orca":{"id":"developer/deployment-guide/deployment-upgrading-orca","title":"Upgrading ORCA","description":"Provides developer with information on upgrading ORCA.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-with-cumulus":{"id":"developer/deployment-guide/deployment-with-cumulus","title":"Deploying ORCA with Cumulus","description":"Provides developer information for ORCA code deployment with Cumulus.","sidebar":"dev_guide"},"developer/deployment-guide/recovery-workflow":{"id":"developer/deployment-guide/recovery-workflow","title":"Recovery Workflow","description":"Provides developers with the steps of how data are recovered.","sidebar":"dev_guide"},"developer/deployment-guide/testing_deployment":{"id":"developer/deployment-guide/testing_deployment","title":"Testing Deployment","description":"Provides information on testing ORCA code deployment.","sidebar":"dev_guide"},"developer/development-guide/code/best-practices":{"id":"developer/development-guide/code/best-practices","title":"Best Practices","description":"Best practices for coding in ORCA.","sidebar":"dev_guide"},"developer/development-guide/code/clean-architecture":{"id":"developer/development-guide/code/clean-architecture","title":"Clean Architecture","description":"Overview of Clean Architecture for ORCA","sidebar":"dev_guide"},"developer/development-guide/code/contrib-code-intro":{"id":"developer/development-guide/code/contrib-code-intro","title":"Code Introduction","description":"Provides basic information on ORCA code including layout, standards, and other information.","sidebar":"dev_guide"},"developer/development-guide/code/integration-tests":{"id":"developer/development-guide/code/integration-tests","title":"Integration Tests","description":"Instructions on Developing and Running Integration Tests","sidebar":"dev_guide"},"developer/development-guide/code/linting":{"id":"developer/development-guide/code/linting","title":"Running Pylint Against Your Code","description":"Instructions on running PyLint.","sidebar":"dev_guide"},"developer/development-guide/code/local-debugging":{"id":"developer/development-guide/code/local-debugging","title":"Local Debugging with AWS Resources","description":"Instructions on Running Code Locally Against AWS Resources","sidebar":"dev_guide"},"developer/development-guide/code/orca-logging":{"id":"developer/development-guide/code/orca-logging","title":"ORCA Logs","description":"Provides developer with information on ORCA logging levels and Cloudwatch logs delivery.","sidebar":"dev_guide"},"developer/development-guide/code/parallel-scripting":{"id":"developer/development-guide/code/parallel-scripting","title":"Parallel Scripting","description":"Instructions on running multiple functions in a script in Parallel.","sidebar":"dev_guide"},"developer/development-guide/code/postgres-tests":{"id":"developer/development-guide/code/postgres-tests","title":"Postgres Tests","description":"Instructions on running \'postgres\' tests.","sidebar":"dev_guide"},"developer/development-guide/code/postgres-tips":{"id":"developer/development-guide/code/postgres-tips","title":"Postgres Paging","description":"Tips on writing efficient Postgres queries.","sidebar":"dev_guide"},"developer/development-guide/code/setup-dev-env":{"id":"developer/development-guide/code/setup-dev-env","title":"Setting Up a Dev Environment","description":"Instructions on creating an environment for working with lambdas.","sidebar":"dev_guide"},"developer/development-guide/code/unit-tests":{"id":"developer/development-guide/code/unit-tests","title":"Unit Tests","description":"Instructions on running unit tests.","sidebar":"dev_guide"},"developer/development-guide/code/versioning-releases":{"id":"developer/development-guide/code/versioning-releases","title":"versioning-releases","description":"---","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-add":{"id":"developer/development-guide/documentation/contrib-documentation-add","title":"Adding New Content","description":"Add a New Documentation Page","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-deploy":{"id":"developer/development-guide/documentation/contrib-documentation-deploy","title":"Deploying Documentation","description":"The following sections provide information to ORCA users to create automated or","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-env":{"id":"developer/development-guide/documentation/contrib-documentation-env","title":"Development Environment","description":"Editing and updating the website only requires a text editor and git but, in","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-intro":{"id":"developer/development-guide/documentation/contrib-documentation-intro","title":"Documentation Introduction","description":"ORCA project documentation is hosted on NASA\'s GitHub Pages.","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-tasks":{"id":"developer/development-guide/documentation/contrib-documentation-tasks","title":"Task Documentation","description":"Task documentation is created as part of the build process. Information on","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-templates":{"id":"developer/development-guide/documentation/contrib-documentation-templates","title":"Documentation Templates","description":"ORCA utilizes templates to easily manage documentation objects so that they","sidebar":"dev_guide"},"developer/development-guide/documentation/documentation-style-guide":{"id":"developer/development-guide/documentation/documentation-style-guide","title":"Documentation Style Guide","description":"Provide markdown guidance for ORCA documentation.","sidebar":"dev_guide"},"developer/quickstart/developer-intro":{"id":"developer/quickstart/developer-intro","title":"Developer Quick Start Guide","description":"One page Quick Start Guide for ORCA deployment.","sidebar":"dev_guide"},"developer/research/research-APIGateway":{"id":"developer/research/research-APIGateway","title":"API Gateway Research Notes","description":"Research Notes on API Gateway.","sidebar":"dev_guide"},"developer/research/research-AuroraServerless":{"id":"developer/research/research-AuroraServerless","title":"Aurora Serverless Research Notes","description":"Research Notes on Aurora Serverless.","sidebar":"dev_guide"},"developer/research/research-bamboo":{"id":"developer/research/research-bamboo","title":"Bamboo specs Research Notes","description":"Research Notes on Bamboo CI/CD.","sidebar":"dev_guide"},"developer/research/research-bamboo-integration-tests":{"id":"developer/research/research-bamboo-integration-tests","title":"Research Notes on running integration tests in bamboo CI/CD","description":"Research Notes on deploying Cumulus and ORCA in bamboo CI/CD and running integration tests.","sidebar":"dev_guide"},"developer/research/research-deep-archive-migration":{"id":"developer/research/research-deep-archive-migration","title":"Deep Archive Storage Migration Research Notes","description":"Research notes on deep archive migration.","sidebar":"dev_guide"},"developer/research/research-graphql":{"id":"developer/research/research-graphql","title":"GraphQL Research Notes","description":"Research Notes on GraphQL.","sidebar":"dev_guide"},"developer/research/research-intro":{"id":"developer/research/research-intro","title":"Introduction to ORCA Research","description":"ORCA Research introductory information.","sidebar":"dev_guide"},"developer/research/research-lambda-container":{"id":"developer/research/research-lambda-container","title":"Using Lambda functions as container research Notes","description":"Research Notes on Containerizing Lambdas","sidebar":"dev_guide"},"developer/research/research-localstack":{"id":"developer/research/research-localstack","title":"Localstack Research Notes","description":"Research Notes on Localstack.","sidebar":"dev_guide"},"developer/research/research-logging-libraries":{"id":"developer/research/research-logging-libraries","title":"Logging Libraries Research Notes","description":"Research notes on some potential logging libraries.","sidebar":"dev_guide"},"developer/research/research-multipart-chunksize":{"id":"developer/research/research-multipart-chunksize","title":"Multipart Chunksize Research Notes","description":"Research Notes on Modifying Multipart-Chunksize for copy_to_archive.","sidebar":"dev_guide"},"developer/research/research-orca-delete-functionality":{"id":"developer/research/research-orca-delete-functionality","title":"Research Notes on ORCA delete functionality.","description":"Research Notes on implementing delete functionality for ORCA.","sidebar":"dev_guide"},"developer/research/research-pushing-docker-image":{"id":"developer/research/research-pushing-docker-image","title":"Notes on pushing and deploying docker images.","description":"Research notes on pushing Docker images for end users","sidebar":"dev_guide"},"developer/research/research-reconciliation":{"id":"developer/research/research-reconciliation","title":"ORCA Reconciliation","description":"Initial notes, design and ideas related to ORCA Reconciliation with Cumulus","sidebar":"dev_guide"},"developer/research/research-s3-bucket-best-practices":{"id":"developer/research/research-s3-bucket-best-practices","title":"S3 Future Direction/Best Practices","description":"Research notes on S3 best practices and some directions to take development.","sidebar":"dev_guide"},"operator/collection-configuration":{"id":"operator/collection-configuration","title":"Collection Configuration","description":"Provides documentation for Operators to configure a collection using the Cumulus dashboard.","sidebar":"ops_guide"},"operator/data-recovery":{"id":"operator/data-recovery","title":"Data Recovery","description":"Provides documentation for Operators to recover missing data.","sidebar":"ops_guide"},"operator/operator-intro":{"id":"operator/operator-intro","title":"Operator Introduction","description":"Provides ORCA documentation for Operators and Data Managers.","sidebar":"ops_guide"},"operator/reingest-to-orca":{"id":"operator/reingest-to-orca","title":"Re-Ingesting Data to ORCA","description":"Provides documentation for Operators to reingest data back to ORCA.","sidebar":"ops_guide"},"operator/storage-classes":{"id":"operator/storage-classes","title":"S3 Storage Classes in Orca","description":"Provides a brief overview on S3 storage classes available in Orca.","sidebar":"ops_guide"},"templates/pan-zoom-image":{"id":"templates/pan-zoom-image","title":"pan-zoom-image","description":"The image below can be panned and zoomed using your mouse or the provided buttons."}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.d19a2e21.js b/assets/js/935f2afb.d19a2e21.js new file mode 100644 index 000000000..e25231595 --- /dev/null +++ b/assets/js/935f2afb.d19a2e21.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"about_orca":[{"type":"category","label":"Introduction","items":[{"type":"link","label":"Introduction to ORCA","href":"/cumulus-orca/docs/about/introduction/orca-intro","docId":"about/introduction/orca-intro"},{"type":"link","label":"Navigating the ORCA Documents","href":"/cumulus-orca/docs/about/introduction/intro-navigating","docId":"about/introduction/intro-navigating"},{"type":"link","label":"Contributing to ORCA","href":"/cumulus-orca/docs/about/introduction/intro-contributing","docId":"about/introduction/intro-contributing"},{"type":"link","label":"Glossary","href":"/cumulus-orca/docs/about/introduction/intro-glossary","docId":"about/introduction/intro-glossary"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Architecture","items":[{"type":"link","label":"ORCA Architecture Introduction","href":"/cumulus-orca/docs/about/architecture/architecture-intro","docId":"about/architecture/architecture-intro"},{"type":"link","label":"Software System Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-software-system","docId":"about/architecture/architecture-software-system"},{"type":"link","label":"Archive Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-archive-container","docId":"about/architecture/architecture-archive-container"},{"type":"link","label":"Recover Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-recover-container","docId":"about/architecture/architecture-recover-container"},{"type":"link","label":"API Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-api-container","docId":"about/architecture/architecture-api-container"},{"type":"link","label":"Database Container Architecture","href":"/cumulus-orca/docs/about/architecture/architecture-database-container","docId":"about/architecture/architecture-database-container"}],"collapsed":true,"collapsible":true},{"type":"category","label":"ORCA Team","items":[{"type":"link","label":"ORCA Team","href":"/cumulus-orca/docs/about/team","docId":"about/team"}],"collapsed":true,"collapsible":true}],"dev_guide":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Developer Quick Start Guide","href":"/cumulus-orca/docs/developer/quickstart/developer-intro","docId":"developer/quickstart/developer-intro"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Development Guide","items":[{"type":"category","label":"Developing Code","items":[{"type":"link","label":"Code Introduction","href":"/cumulus-orca/docs/developer/development-guide/code/contrib-code-intro","docId":"developer/development-guide/code/contrib-code-intro"},{"type":"link","label":"Setting Up a Dev Environment","href":"/cumulus-orca/docs/developer/development-guide/code/setup-dev-env","docId":"developer/development-guide/code/setup-dev-env"},{"type":"link","label":"Best Practices","href":"/cumulus-orca/docs/developer/development-guide/code/best-practices","docId":"developer/development-guide/code/best-practices"},{"type":"link","label":"Clean Architecture","href":"/cumulus-orca/docs/developer/development-guide/code/clean-architecture","docId":"developer/development-guide/code/clean-architecture"},{"type":"link","label":"versioning-releases","href":"/cumulus-orca/docs/developer/development-guide/code/versioning-releases","docId":"developer/development-guide/code/versioning-releases"},{"type":"link","label":"Running Pylint Against Your Code","href":"/cumulus-orca/docs/developer/development-guide/code/linting","docId":"developer/development-guide/code/linting"},{"type":"link","label":"Local Debugging with AWS Resources","href":"/cumulus-orca/docs/developer/development-guide/code/local-debugging","docId":"developer/development-guide/code/local-debugging"},{"type":"link","label":"Unit Tests","href":"/cumulus-orca/docs/developer/development-guide/code/unit-tests","docId":"developer/development-guide/code/unit-tests"},{"type":"link","label":"Integration Tests","href":"/cumulus-orca/docs/developer/development-guide/code/integration-tests","docId":"developer/development-guide/code/integration-tests"},{"type":"link","label":"Postgres Tests","href":"/cumulus-orca/docs/developer/development-guide/code/postgres-tests","docId":"developer/development-guide/code/postgres-tests"},{"type":"link","label":"ORCA Logs","href":"/cumulus-orca/docs/developer/development-guide/code/orca-logging","docId":"developer/development-guide/code/orca-logging"},{"type":"link","label":"Parallel Scripting","href":"/cumulus-orca/docs/developer/development-guide/code/parallel-scripting","docId":"developer/development-guide/code/parallel-scripting"},{"type":"link","label":"Postgres Paging","href":"/cumulus-orca/docs/developer/development-guide/code/postgres-tips","docId":"developer/development-guide/code/postgres-tips"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Developing Documentation","items":[{"type":"link","label":"Documentation Introduction","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-intro","docId":"developer/development-guide/documentation/contrib-documentation-intro"},{"type":"link","label":"Development Environment","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-env","docId":"developer/development-guide/documentation/contrib-documentation-env"},{"type":"link","label":"Adding New Content","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-add","docId":"developer/development-guide/documentation/contrib-documentation-add"},{"type":"link","label":"Documentation Templates","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-templates","docId":"developer/development-guide/documentation/contrib-documentation-templates"},{"type":"link","label":"Task Documentation","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-tasks","docId":"developer/development-guide/documentation/contrib-documentation-tasks"},{"type":"link","label":"Documentation Style Guide","href":"/cumulus-orca/docs/developer/development-guide/documentation/documentation-style-guide","docId":"developer/development-guide/documentation/documentation-style-guide"},{"type":"link","label":"Deploying Documentation","href":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-deploy","docId":"developer/development-guide/documentation/contrib-documentation-deploy"}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Deployment Guide","items":[{"type":"link","label":"Deployment Information","href":"/cumulus-orca/docs/developer/deployment-guide/deployment","docId":"developer/deployment-guide/deployment"},{"type":"link","label":"Creating a Deployment Environment","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-environment","docId":"developer/deployment-guide/deployment-environment"},{"type":"link","label":"Creating the Archive Bucket","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket","docId":"developer/deployment-guide/deployment-s3-bucket"},{"type":"link","label":"Generating S3 credentials","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials","docId":"developer/deployment-guide/deployment-s3-credentials"},{"type":"link","label":"Deploying ORCA with Cumulus","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus","docId":"developer/deployment-guide/deployment-with-cumulus"},{"type":"link","label":"Upgrading ORCA","href":"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca","docId":"developer/deployment-guide/deployment-upgrading-orca"},{"type":"link","label":"Recovery Workflow","href":"/cumulus-orca/docs/developer/deployment-guide/recovery-workflow","docId":"developer/deployment-guide/recovery-workflow"},{"type":"link","label":"Testing Deployment","href":"/cumulus-orca/docs/developer/deployment-guide/testing_deployment","docId":"developer/deployment-guide/testing_deployment"},{"type":"link","label":"Deploy from Windows","href":"/cumulus-orca/docs/developer/deployment-guide/deploying-from-windows","docId":"developer/deployment-guide/deploying-from-windows"}],"collapsed":true,"collapsible":true},{"type":"category","label":"API Reference","items":[{"type":"link","label":"ORCA API Reference","href":"/cumulus-orca/docs/developer/api/","docId":"developer/api/orca-api"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Research","items":[{"type":"link","label":"Introduction to ORCA Research","href":"/cumulus-orca/docs/developer/research/research-intro","docId":"developer/research/research-intro"},{"type":"link","label":"Localstack Research Notes","href":"/cumulus-orca/docs/developer/research/research-localstack","docId":"developer/research/research-localstack"},{"type":"link","label":"API Gateway Research Notes","href":"/cumulus-orca/docs/developer/research/research-APIGateway","docId":"developer/research/research-APIGateway"},{"type":"link","label":"ORCA Reconciliation","href":"/cumulus-orca/docs/developer/research/research-reconciliation","docId":"developer/research/research-reconciliation"},{"type":"link","label":"Aurora Serverless Research Notes","href":"/cumulus-orca/docs/developer/research/research-AuroraServerless","docId":"developer/research/research-AuroraServerless"},{"type":"link","label":"GraphQL Research Notes","href":"/cumulus-orca/docs/developer/research/research-graphql","docId":"developer/research/research-graphql"},{"type":"link","label":"Multipart Chunksize Research Notes","href":"/cumulus-orca/docs/developer/research/research-multipart-chunksize","docId":"developer/research/research-multipart-chunksize"},{"type":"link","label":"Bamboo specs Research Notes","href":"/cumulus-orca/docs/developer/research/research-bamboo","docId":"developer/research/research-bamboo"},{"type":"link","label":"Research Notes on ORCA delete functionality.","href":"/cumulus-orca/docs/developer/research/research-orca-delete-functionality","docId":"developer/research/research-orca-delete-functionality"},{"type":"link","label":"Research Notes on running integration tests in bamboo CI/CD","href":"/cumulus-orca/docs/developer/research/research-bamboo-integration-tests","docId":"developer/research/research-bamboo-integration-tests"},{"type":"link","label":"Using Lambda functions as container research Notes","href":"/cumulus-orca/docs/developer/research/research-lambda-container","docId":"developer/research/research-lambda-container"},{"type":"link","label":"Notes on pushing and deploying docker images.","href":"/cumulus-orca/docs/developer/research/research-pushing-docker-image","docId":"developer/research/research-pushing-docker-image"},{"type":"link","label":"S3 Future Direction/Best Practices","href":"/cumulus-orca/docs/developer/research/research-s3-bucket-best-practices","docId":"developer/research/research-s3-bucket-best-practices"},{"type":"link","label":"Deep Archive Storage Migration Research Notes","href":"/cumulus-orca/docs/developer/research/research-deep-archive-migration","docId":"developer/research/research-deep-archive-migration"},{"type":"link","label":"Logging Libraries Research Notes","href":"/cumulus-orca/docs/developer/research/research-logging-libraries","docId":"developer/research/research-logging-libraries"}],"collapsed":true,"collapsible":true}],"ops_guide":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Operator Introduction","href":"/cumulus-orca/docs/operator/operator-intro","docId":"operator/operator-intro"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Operations","items":[{"type":"link","label":"Data Recovery","href":"/cumulus-orca/docs/operator/data-recovery","docId":"operator/data-recovery"},{"type":"link","label":"Re-Ingesting Data to ORCA","href":"/cumulus-orca/docs/operator/restore-to-orca","docId":"operator/restore-to-orca"}],"collapsed":true,"collapsible":true},{"type":"category","label":"Configuration","items":[{"type":"link","label":"Collection Configuration","href":"/cumulus-orca/docs/operator/collection-configuration","docId":"operator/collection-configuration"},{"type":"link","label":"S3 Storage Classes in Orca","href":"/cumulus-orca/docs/operator/storage-classes","docId":"operator/storage-classes"}],"collapsed":true,"collapsible":true}]},"docs":{"about/architecture/architecture-api-container":{"id":"about/architecture/architecture-api-container","title":"API Container Architecture","description":"High level overview of ORCA API Interface container architecture.","sidebar":"about_orca"},"about/architecture/architecture-archive-container":{"id":"about/architecture/architecture-archive-container","title":"Archive Container Architecture","description":"High level overview of ORCA archive data container architecture.","sidebar":"about_orca"},"about/architecture/architecture-database-container":{"id":"about/architecture/architecture-database-container","title":"Database Container Architecture","description":"ORCA database schema information.","sidebar":"about_orca"},"about/architecture/architecture-intro":{"id":"about/architecture/architecture-intro","title":"ORCA Architecture Introduction","description":"High level overview of ORCA architecture.","sidebar":"about_orca"},"about/architecture/architecture-recover-container":{"id":"about/architecture/architecture-recover-container","title":"Recover Container Architecture","description":"High level overview of ORCA recover container architecture.","sidebar":"about_orca"},"about/architecture/architecture-software-system":{"id":"about/architecture/architecture-software-system","title":"Software System Architecture","description":"High level overview of ORCA software system architecture.","sidebar":"about_orca"},"about/architecture/ORCA-Architecture":{"id":"about/architecture/ORCA-Architecture","title":"ORCA-Architecture","description":"Template Revision: 7.0 EN (based on asciidoc), January 2017"},"about/introduction/intro-contributing":{"id":"about/introduction/intro-contributing","title":"Contributing to ORCA","description":"Provides high level information on contributing to the ORCA project.","sidebar":"about_orca"},"about/introduction/intro-glossary":{"id":"about/introduction/intro-glossary","title":"Glossary","description":"Glossary of terms used in ORCA","sidebar":"about_orca"},"about/introduction/intro-navigating":{"id":"about/introduction/intro-navigating","title":"Navigating the ORCA Documents","description":"Provides tips and tricks to navigate the ORCA documentation.","sidebar":"about_orca"},"about/introduction/orca-intro":{"id":"about/introduction/orca-intro","title":"Introduction to ORCA","description":"Initial document describing what ORCA is and resources available.","sidebar":"about_orca"},"about/team":{"id":"about/team","title":"ORCA Team","description":"ORCA Team Listing","sidebar":"about_orca"},"developer/api/orca-api":{"id":"developer/api/orca-api","title":"ORCA API Reference","description":"ORCA API reference for developers that provides API documentation and interactions.","sidebar":"dev_guide"},"developer/deployment-guide/deploying-from-windows":{"id":"developer/deployment-guide/deploying-from-windows","title":"Deploy from Windows","description":"A concrete set of instructions on deploying from Windows to create a test environment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment":{"id":"developer/deployment-guide/deployment","title":"Deployment Information","description":"Provides developer information for ORCA code deployment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-environment":{"id":"developer/deployment-guide/deployment-environment","title":"Creating a Deployment Environment","description":"Provides developer with information on setting up deployment environment.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-s3-bucket":{"id":"developer/deployment-guide/deployment-s3-bucket","title":"Creating the Archive Bucket","description":"Provides developer with information on archive storage solutions.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-s3-credentials":{"id":"developer/deployment-guide/deployment-s3-credentials","title":"Generating S3 credentials","description":"Provides developer with information on archive storage solutions.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-upgrading-orca":{"id":"developer/deployment-guide/deployment-upgrading-orca","title":"Upgrading ORCA","description":"Provides developer with information on upgrading ORCA.","sidebar":"dev_guide"},"developer/deployment-guide/deployment-with-cumulus":{"id":"developer/deployment-guide/deployment-with-cumulus","title":"Deploying ORCA with Cumulus","description":"Provides developer information for ORCA code deployment with Cumulus.","sidebar":"dev_guide"},"developer/deployment-guide/recovery-workflow":{"id":"developer/deployment-guide/recovery-workflow","title":"Recovery Workflow","description":"Provides developers with the steps of how data are recovered.","sidebar":"dev_guide"},"developer/deployment-guide/testing_deployment":{"id":"developer/deployment-guide/testing_deployment","title":"Testing Deployment","description":"Provides information on testing ORCA code deployment.","sidebar":"dev_guide"},"developer/development-guide/code/best-practices":{"id":"developer/development-guide/code/best-practices","title":"Best Practices","description":"Best practices for coding in ORCA.","sidebar":"dev_guide"},"developer/development-guide/code/clean-architecture":{"id":"developer/development-guide/code/clean-architecture","title":"Clean Architecture","description":"Overview of Clean Architecture for ORCA","sidebar":"dev_guide"},"developer/development-guide/code/contrib-code-intro":{"id":"developer/development-guide/code/contrib-code-intro","title":"Code Introduction","description":"Provides basic information on ORCA code including layout, standards, and other information.","sidebar":"dev_guide"},"developer/development-guide/code/integration-tests":{"id":"developer/development-guide/code/integration-tests","title":"Integration Tests","description":"Instructions on Developing and Running Integration Tests","sidebar":"dev_guide"},"developer/development-guide/code/linting":{"id":"developer/development-guide/code/linting","title":"Running Pylint Against Your Code","description":"Instructions on running PyLint.","sidebar":"dev_guide"},"developer/development-guide/code/local-debugging":{"id":"developer/development-guide/code/local-debugging","title":"Local Debugging with AWS Resources","description":"Instructions on Running Code Locally Against AWS Resources","sidebar":"dev_guide"},"developer/development-guide/code/orca-logging":{"id":"developer/development-guide/code/orca-logging","title":"ORCA Logs","description":"Provides developer with information on ORCA logging levels and Cloudwatch logs delivery.","sidebar":"dev_guide"},"developer/development-guide/code/parallel-scripting":{"id":"developer/development-guide/code/parallel-scripting","title":"Parallel Scripting","description":"Instructions on running multiple functions in a script in Parallel.","sidebar":"dev_guide"},"developer/development-guide/code/postgres-tests":{"id":"developer/development-guide/code/postgres-tests","title":"Postgres Tests","description":"Instructions on running \'postgres\' tests.","sidebar":"dev_guide"},"developer/development-guide/code/postgres-tips":{"id":"developer/development-guide/code/postgres-tips","title":"Postgres Paging","description":"Tips on writing efficient Postgres queries.","sidebar":"dev_guide"},"developer/development-guide/code/setup-dev-env":{"id":"developer/development-guide/code/setup-dev-env","title":"Setting Up a Dev Environment","description":"Instructions on creating an environment for working with lambdas.","sidebar":"dev_guide"},"developer/development-guide/code/unit-tests":{"id":"developer/development-guide/code/unit-tests","title":"Unit Tests","description":"Instructions on running unit tests.","sidebar":"dev_guide"},"developer/development-guide/code/versioning-releases":{"id":"developer/development-guide/code/versioning-releases","title":"versioning-releases","description":"---","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-add":{"id":"developer/development-guide/documentation/contrib-documentation-add","title":"Adding New Content","description":"Add a New Documentation Page","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-deploy":{"id":"developer/development-guide/documentation/contrib-documentation-deploy","title":"Deploying Documentation","description":"The following sections provide information to ORCA users to create automated or","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-env":{"id":"developer/development-guide/documentation/contrib-documentation-env","title":"Development Environment","description":"Editing and updating the website only requires a text editor and git but, in","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-intro":{"id":"developer/development-guide/documentation/contrib-documentation-intro","title":"Documentation Introduction","description":"ORCA project documentation is hosted on NASA\'s GitHub Pages.","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-tasks":{"id":"developer/development-guide/documentation/contrib-documentation-tasks","title":"Task Documentation","description":"Task documentation is created as part of the build process. Information on","sidebar":"dev_guide"},"developer/development-guide/documentation/contrib-documentation-templates":{"id":"developer/development-guide/documentation/contrib-documentation-templates","title":"Documentation Templates","description":"ORCA utilizes templates to easily manage documentation objects so that they","sidebar":"dev_guide"},"developer/development-guide/documentation/documentation-style-guide":{"id":"developer/development-guide/documentation/documentation-style-guide","title":"Documentation Style Guide","description":"Provide markdown guidance for ORCA documentation.","sidebar":"dev_guide"},"developer/quickstart/developer-intro":{"id":"developer/quickstart/developer-intro","title":"Developer Quick Start Guide","description":"One page Quick Start Guide for ORCA deployment.","sidebar":"dev_guide"},"developer/research/research-APIGateway":{"id":"developer/research/research-APIGateway","title":"API Gateway Research Notes","description":"Research Notes on API Gateway.","sidebar":"dev_guide"},"developer/research/research-AuroraServerless":{"id":"developer/research/research-AuroraServerless","title":"Aurora Serverless Research Notes","description":"Research Notes on Aurora Serverless.","sidebar":"dev_guide"},"developer/research/research-bamboo":{"id":"developer/research/research-bamboo","title":"Bamboo specs Research Notes","description":"Research Notes on Bamboo CI/CD.","sidebar":"dev_guide"},"developer/research/research-bamboo-integration-tests":{"id":"developer/research/research-bamboo-integration-tests","title":"Research Notes on running integration tests in bamboo CI/CD","description":"Research Notes on deploying Cumulus and ORCA in bamboo CI/CD and running integration tests.","sidebar":"dev_guide"},"developer/research/research-deep-archive-migration":{"id":"developer/research/research-deep-archive-migration","title":"Deep Archive Storage Migration Research Notes","description":"Research notes on deep archive migration.","sidebar":"dev_guide"},"developer/research/research-graphql":{"id":"developer/research/research-graphql","title":"GraphQL Research Notes","description":"Research Notes on GraphQL.","sidebar":"dev_guide"},"developer/research/research-intro":{"id":"developer/research/research-intro","title":"Introduction to ORCA Research","description":"ORCA Research introductory information.","sidebar":"dev_guide"},"developer/research/research-lambda-container":{"id":"developer/research/research-lambda-container","title":"Using Lambda functions as container research Notes","description":"Research Notes on Containerizing Lambdas","sidebar":"dev_guide"},"developer/research/research-localstack":{"id":"developer/research/research-localstack","title":"Localstack Research Notes","description":"Research Notes on Localstack.","sidebar":"dev_guide"},"developer/research/research-logging-libraries":{"id":"developer/research/research-logging-libraries","title":"Logging Libraries Research Notes","description":"Research notes on some potential logging libraries.","sidebar":"dev_guide"},"developer/research/research-multipart-chunksize":{"id":"developer/research/research-multipart-chunksize","title":"Multipart Chunksize Research Notes","description":"Research Notes on Modifying Multipart-Chunksize for copy_to_archive.","sidebar":"dev_guide"},"developer/research/research-orca-delete-functionality":{"id":"developer/research/research-orca-delete-functionality","title":"Research Notes on ORCA delete functionality.","description":"Research Notes on implementing delete functionality for ORCA.","sidebar":"dev_guide"},"developer/research/research-pushing-docker-image":{"id":"developer/research/research-pushing-docker-image","title":"Notes on pushing and deploying docker images.","description":"Research notes on pushing Docker images for end users","sidebar":"dev_guide"},"developer/research/research-reconciliation":{"id":"developer/research/research-reconciliation","title":"ORCA Reconciliation","description":"Initial notes, design and ideas related to ORCA Reconciliation with Cumulus","sidebar":"dev_guide"},"developer/research/research-s3-bucket-best-practices":{"id":"developer/research/research-s3-bucket-best-practices","title":"S3 Future Direction/Best Practices","description":"Research notes on S3 best practices and some directions to take development.","sidebar":"dev_guide"},"operator/collection-configuration":{"id":"operator/collection-configuration","title":"Collection Configuration","description":"Provides documentation for Operators to configure a collection using the Cumulus dashboard.","sidebar":"ops_guide"},"operator/data-recovery":{"id":"operator/data-recovery","title":"Data Recovery","description":"Provides documentation for Operators to recover missing data.","sidebar":"ops_guide"},"operator/operator-intro":{"id":"operator/operator-intro","title":"Operator Introduction","description":"Provides ORCA documentation for Operators and Data Managers.","sidebar":"ops_guide"},"operator/restore-to-orca":{"id":"operator/restore-to-orca","title":"Re-Ingesting Data to ORCA","description":"Provides documentation for Operators to restore data back to ORCA.","sidebar":"ops_guide"},"operator/storage-classes":{"id":"operator/storage-classes","title":"S3 Storage Classes in Orca","description":"Provides a brief overview on S3 storage classes available in Orca.","sidebar":"ops_guide"},"templates/pan-zoom-image":{"id":"templates/pan-zoom-image","title":"pan-zoom-image","description":"The image below can be panned and zoomed using your mouse or the provided buttons."}}}')}}]); \ No newline at end of file diff --git a/assets/js/d8fed895.7a1c41c5.js b/assets/js/d8fed895.7a1c41c5.js new file mode 100644 index 000000000..e23ea9675 --- /dev/null +++ b/assets/js/d8fed895.7a1c41c5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[8910],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>d});var n=o(7294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=u(o),g=r,d=c["".concat(s,".").concat(g)]||c[g]||m[g]||a;return o?n.createElement(d,i(i({ref:t},p),{},{components:o})):n.createElement(d,i({ref:t},p))}));function d(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:r,i[1]=l;for(var u=2;u{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>g,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var n=o(7462),r=(o(7294),o(3905)),a=o(4996);const i={id:"restore-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to restore data back to ORCA."},l=void 0,s={unversionedId:"operator/restore-to-orca",id:"operator/restore-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to restore data back to ORCA.",source:"@site/docs/operator/restore-to-orca.mdx",sourceDirName:"operator",slug:"/operator/restore-to-orca",permalink:"/cumulus-orca/docs/operator/restore-to-orca",draft:!1,editUrl:"https://github.com/nasa/cumulus-orca/edit/develop/website/docs/operator/restore-to-orca.mdx",tags:[],version:"current",frontMatter:{id:"restore-to-orca",title:"Re-Ingesting Data to ORCA",description:"Provides documentation for Operators to restore data back to ORCA."},sidebar:"ops_guide",previous:{title:"Data Recovery",permalink:"/cumulus-orca/docs/operator/data-recovery"},next:{title:"Collection Configuration",permalink:"/cumulus-orca/docs/operator/collection-configuration"}},u={},p=[{value:"Submit Granules to be Restored in ORCA",id:"submit-granules-to-be-restored-in-orca",level:2},{value:"Monitor Executions and Job Status",id:"monitor-executions-and-job-status",level:2},{value:"Monitoring the Overall Job via the Operations Tab",id:"monitoring-the-overall-job-via-the-operations-tab",level:3},{value:"Monitoring Individual Granules Executions via the Executions Tab",id:"monitoring-individual-granules-executions-via-the-executions-tab",level:3}],c={toc:p},m="wrapper";function g(e){let{components:t,...o}=e;return(0,r.kt)(m,(0,n.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The following operations procedure details how an operator would re-ingest data\ninto ORCA through the Cumulus Dashboard without running a full ingest pipeline.\nAt a high level, the following steps should be used to manually ingest data into\nORCA."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Use the Cumulus Dashboard Granule Bulk Operations functionality to run the\n",(0,r.kt)("strong",{parentName:"li"},"OrcaCopyToArchiveWorkflow")," step function against the granules that need to\nbe ingested into ORCA."),(0,r.kt)("li",{parentName:"ol"},"Monitor the execution status of the job and workflows.")),(0,r.kt)("p",null,"The sections below go into further detail on how to accomplish the high level\nsteps above."),(0,r.kt)("h2",{id:"submit-granules-to-be-restored-in-orca"},"Submit Granules to be Restored in ORCA"),(0,r.kt)("p",null,"The following steps will guide the operator through submitting a bulk operation\nto restore data in ORCA."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"On the ",(0,r.kt)("strong",{parentName:"p"},"Granules")," tab of the Cumulus Dashboard, click on the ",(0,r.kt)("strong",{parentName:"p"},"Granule Actions"),"\nbutton. The button is highlighted in figure 1 below."),(0,r.kt)("img",{alt:"Selecting Granule Actions on the Granules tab on Cumulus dashboard",src:(0,a.Z)("img/restore-orca-granule-tab.png")}),(0,r.kt)("p",{parentName:"li"}," ",(0,r.kt)("strong",{parentName:"p"},"Figure 1. Selecting Granule Actions to Perform Bulk Operations"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Under ",(0,r.kt)("strong",{parentName:"p"},"Granule Actions")," click on the ",(0,r.kt)("strong",{parentName:"p"},"Run Bulk Granules")," button highlighted\nbelow in figure 2."),(0,r.kt)("img",{alt:"Selecting the Run Bulk Granules Button under Granule Actions",src:(0,a.Z)("img/restore-orca-run-bulk-granules.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 2. Select the Run Bulk Granules Button")))),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"In the bulk operations pop up click on the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Operations")," button as seen\nbelow in figure 3."),(0,r.kt)("img",{alt:"Selecting the Bulk Operations Button",src:(0,a.Z)("img/restore-orca-run-bulk-operations.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 3. Select the Bulk Operations Button"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Fill out the details in the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Operations")," form utilizing any of the bulk\noperations methods to provide the list of granules to act upon."),(0,r.kt)("admonition",{parentName:"li",title:"Workflow Name",type:"important"},(0,r.kt)("p",{parentName:"admonition"}," Make sure that the workflow name value is set to ",(0,r.kt)("strong",{parentName:"p"},"OrcaCopyToArchiveWorkflow"),"\nas seen below in the figure."),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "WorkflowName": "OrcaCopyToArchiveWorkflow",\n "index": "",\n "query": "",\n "ids": [],\n "meta": {}\n}\n'))),(0,r.kt)("p",{parentName:"li"},"Figure 4 below shows using the ",(0,r.kt)("em",{parentName:"p"},"ids")," key to list granules to act upon.\nOnce the form is filled out, click the ",(0,r.kt)("strong",{parentName:"p"},"Run Bulk Operations")," button."),(0,r.kt)("img",{alt:"Filling out the Bulk Operations Form.",src:(0,a.Z)("img/restore-orca-bulk-operations-form.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 4. Filling out the Bulk Operations Form"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Save the Job ID value displayed in the ",(0,r.kt)("strong",{parentName:"p"},"Bulk Granule Operations")," pop up\nwindow as seen below in figure 5. The ID will be used used for monitoring.\nClick on the ",(0,r.kt)("strong",{parentName:"p"},"Go To Operations")," button to begin monitoring the job."),(0,r.kt)("img",{alt:"Saving the Job ID for monitoring.",src:(0,a.Z)("img/restore-orca-bulk-operations-id.png")}),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Figure 5. Saving the Job ID")))),(0,r.kt)("h2",{id:"monitor-executions-and-job-status"},"Monitor Executions and Job Status"),(0,r.kt)("p",null,"Monitoring the Bulk Granule Operations Job and ",(0,r.kt)("em",{parentName:"p"},"OrcaCopyToArchiveWorkflow"),"\nworkflow can be done through the ",(0,r.kt)("em",{parentName:"p"},"Operations")," and ",(0,r.kt)("em",{parentName:"p"},"Executions")," tabs. The Job ID\nobtained from step 5 in the ",(0,r.kt)("a",{parentName:"p",href:"#submit-granules-to-be-restored-in-orca"},"Submit Granules to be Restored in ORCA"),"\nsection above will be needed for monitoring. The sections below go into more details."),(0,r.kt)("h3",{id:"monitoring-the-overall-job-via-the-operations-tab"},"Monitoring the Overall Job via the Operations Tab"),(0,r.kt)("p",null,"Using the obtained Job ID, the operations can be filtered. The page will provide\ninformation on the overall bulk granule operations job and the status. This page\ndoes not contain any further drill down, but an operator can view the ",(0,r.kt)("em",{parentName:"p"},"Executions"),"\ntab for additional information. Figure 6 below shows the status of a job\nsubmitted in the example used in the above figures."),(0,r.kt)("img",{alt:"",src:(0,a.Z)("img/restore-orca-operations-view.png")}),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Figure 6. Monitoring the Operations Tab")),(0,r.kt)("h3",{id:"monitoring-individual-granules-executions-via-the-executions-tab"},"Monitoring Individual Granules Executions via the Executions Tab"),(0,r.kt)("p",null,"Using the obtained Job ID (",(0,r.kt)("em",{parentName:"p"},"asyncOperationsId"),"), the executions can be filtered.\nThe page will provide the operator with information on each specific execution of the\n",(0,r.kt)("em",{parentName:"p"},"OrcaCopyToArchiveWorkflow")," workflow. There is one execution per granule. The\nexecution can be drilled down further to look at failures and logs. Figure 7\nbelow shows the status of executions based on a Job ID."),(0,r.kt)("img",{alt:"",src:(0,a.Z)("img/restore-orca-executions-view.png")}),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Figure 7. Monitoring the Executions Tab")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.12f41519.js b/assets/js/main.12f41519.js deleted file mode 100644 index 3e654d424..000000000 --- a/assets/js/main.12f41519.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.12f41519.js.LICENSE.txt */ -(self.webpackChunkorca_website=self.webpackChunkorca_website||[]).push([[179],{4334:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{Z:()=>a});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var _=E.value;if(t.length>e.length)return;if(!(_ instanceof o)){var x,C=1;if(b){if(!(x=a(k,S,e,v))||x.index>=e.length)break;var T=x.index,A=x.index+x[0].length,L=S;for(L+=E.value.length;T>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof o)continue;for(var R=E;R!==t.tail&&(Ld.reach&&(d.reach=I);var D=E.prev;if(P&&(D=s(t,D,P),S+=P.length),u(t,D,C),E=s(t,D,new o(p,g?r.tokenize(O,g):O,y,O)),N&&s(t,E,N),C>1){var M={cause:p+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o"+a.content+""},r}(),o=r;r.default=r,o.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"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var a={};a[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},o.languages.insertBefore("markup","cdata",a)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},o.languages.c.string],char:o.languages.c.char,comment:o.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:o.languages.c}}}}),o.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete o.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\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"])}(o),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \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"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:o.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var o={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function u(t){var n={};n["interpolation-punctuation"]=o;var a=e.tokenize(t,n);if(3===a.length){var i=[1,1];i.push.apply(i,s(a[1],e.languages.javascript,"javascript")),a.splice.apply(a,i)}return new e.Token("interpolation",a,r.alias,t)}function c(t,n,r){var o=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),i=0,c={},d=s(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=o,n})).join(""),n,r),p=Object.keys(c);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var o=p[i],a="string"==typeof r?r:r.content,l=a.indexOf(o);if(-1!==l){++i;var s=a.substring(0,l),d=u(c[o]),f=a.substring(l+o.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,o=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return o})),RegExp(e,t)}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(o);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}o.content&&"string"!=typeof o.content&&l(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(o),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=a.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++o;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=p.substring(m+f.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(o),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},o.languages.objectivec=o.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},o.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),o.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete o.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(o),o.languages.scss=o.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),o.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),o.languages.scss.atrule.inside.rest=o.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(o),o.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const a=o},7459:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(7462),a=n(8356),i=n.n(a),l=n(6887);const s={"00c4eb7a":[()=>Promise.all([n.e(1056),n.e(2427)]).then(n.bind(n,8055)),"@site/docs/developer/research/research-deep-archive-migration.mdx",8055],"0115c7c5":[()=>n.e(4672).then(n.bind(n,1004)),"@site/docs/developer/research/research-APIGateway.md",1004],"015a63e5":[()=>n.e(8156).then(n.bind(n,9801)),"@site/docs/developer/research/research-localstack.md",9801],"03e1d4f7":[()=>n.e(9683).then(n.bind(n,7545)),"@site/docs/operator/reingest-to-orca.mdx",7545],"07a21aad":[()=>n.e(9848).then(n.bind(n,2246)),"@site/docs/developer/development-guide/documentation/documentation-add-content.md",2246],"0a118fc9":[()=>n.e(4217).then(n.bind(n,3024)),"@site/docs/developer/development-guide/documentation/documentation-style-guide.md",3024],"0c51e9a9":[()=>n.e(9762).then(n.bind(n,7943)),"@site/docs/developer/development-guide/code/best-practices.mdx",7943],"0e247988":[()=>n.e(1749).then(n.bind(n,2031)),"@site/docs/developer/development-guide/code/setup-dev-env.md",2031],"15f782ab":[()=>n.e(2815).then(n.bind(n,2133)),"@site/docs/operator/collection-configuration.md",2133],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,8300)),"@theme/DocItem",8300],"197d1f4f":[()=>n.e(7023).then(n.bind(n,7311)),"@site/docs/developer/development-guide/code/unit-tests.md",7311],"19b65d6c":[()=>Promise.all([n.e(1056),n.e(592)]).then(n.bind(n,9578)),"@site/docs/about/architecture/architecture-intro.mdx",9578],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1d10fdf2":[()=>n.e(2473).then(n.bind(n,3645)),"@site/docs/developer/development-guide/code/parallel-scripting.md",3645],"204ea10f":[()=>n.e(11).then(n.bind(n,718)),"@site/docs/developer/development-guide/documentation/documentaion-templates.md",718],"214e46ab":[()=>n.e(6059).then(n.bind(n,6157)),"@site/docs/about/introduction/orca-intro.md",6157],"26f9f4b2":[()=>n.e(4814).then(n.bind(n,2156)),"@site/docs/developer/development-guide/code/postgres-tests.md",2156],"284e9337":[()=>n.e(9786).then(n.bind(n,6087)),"@site/docs/developer/deployment-guide/deployment-upgrading-orca.md",6087],"29c848cb":[()=>n.e(3233).then(n.bind(n,2928)),"@site/docs/developer/development-guide/code/linting.md",2928],"327607cf":[()=>n.e(7760).then(n.bind(n,9308)),"@site/docs/about/introduction/glossary.md",9308],"3bf5870b":[()=>Promise.all([n.e(1056),n.e(6427)]).then(n.bind(n,8560)),"@site/docs/about/architecture/architecture-software-system.mdx",8560],"41286e30":[()=>n.e(1044).then(n.bind(n,9760)),"@site/docs/developer/research/research-multipart-chunksize.md",9760],"5119aa4f":[()=>n.e(1179).then(n.bind(n,7172)),"@site/docs/developer/development-guide/code/postgres-tips.md",7172],"516c4cd8":[()=>n.e(2449).then(n.bind(n,8204)),"@site/docs/developer/deployment-guide/creating-orca-archive-bucket.md",8204],"55c0ab8a":[()=>n.e(9491).then(n.bind(n,8902)),"@site/docs/developer/development-guide/documentation/documentation-intro.md",8902],"565da601":[()=>Promise.all([n.e(1056),n.e(468)]).then(n.bind(n,1526)),"@site/docs/about/architecture/architecture-archive-container.mdx",1526],"5d0c8449":[()=>n.e(1737).then(n.bind(n,6666)),"@site/docs/about/introduction/navigating-the-docs.md",6666],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"67141c36":[()=>Promise.all([n.e(1056),n.e(1510)]).then(n.bind(n,4836)),"@site/docs/operator/data-recovery.md",4836],"68e3716f":[()=>Promise.all([n.e(1056),n.e(3573)]).then(n.bind(n,6343)),"@site/docs/developer/research/research-reconciliation.mdx",6343],"6d4c9639":[()=>n.e(3059).then(n.bind(n,796)),"@site/docs/developer/api/api.md",796],"6d785239":[()=>n.e(9644).then(n.bind(n,1850)),"@site/docs/developer/development-guide/code/integration-tests.md",1850],"701d57ac":[()=>n.e(8695).then(n.bind(n,4720)),"@site/docs/developer/research/research-bamboo-integration-tests.md",4720],"762e1f90":[()=>n.e(9448).then(n.bind(n,9034)),"@site/docs/developer/deployment-guide/testing_deployment.mdx",9034],"7954d653":[()=>Promise.all([n.e(1056),n.e(4022)]).then(n.bind(n,5583)),"@site/docs/about/architecture/architecture-api-container.mdx",5583],"7c9fa1db":[()=>n.e(7570).then(n.bind(n,6785)),"@site/docs/developer/deployment-guide/deployment-with-cumulus.md",6785],"7e54ef6f":[()=>n.e(8525).then(n.bind(n,954)),"@site/docs/developer/development-guide/code/orca-logging.md",954],"8105fedc":[()=>n.e(7544).then(n.bind(n,9376)),"@site/docs/developer/deployment-guide/deploying-from-windows.mdx",9376],"811b9864":[()=>Promise.all([n.e(1056),n.e(2140)]).then(n.bind(n,9607)),"@site/docs/about/architecture/architecture-restore-container.mdx",9607],"84f13883":[()=>n.e(2436).then(n.bind(n,8245)),"@site/docs/operator/storage-classes.md",8245],"852e241b":[()=>Promise.all([n.e(1056),n.e(2083)]).then(n.bind(n,4079)),"@site/docs/templates/pan-zoom-image.mdx",4079],"8634c481":[()=>n.e(7576).then(n.bind(n,590)),"@site/docs/developer/research/research-pushing-docker-image.md",590],"90a5c184":[()=>n.e(6326).then(n.bind(n,4709)),"@site/docs/developer/research/research-graphql.md",4709],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9401b158":[()=>n.e(2680).then(n.bind(n,2643)),"@site/docs/developer/development-guide/code/code-intro.md",2643],98575962:[()=>n.e(6181).then(n.bind(n,5624)),"@site/docs/developer/development-guide/code/versioning-releases.md",5624],"9ffd15dc":[()=>n.e(3975).then(n.bind(n,395)),"@site/docs/developer/research/research-s3-bucket-policies.md",395],a204b5f4:[()=>n.e(1721).then(n.bind(n,8201)),"@site/docs/developer/deployment-guide/deployment.md",8201],a571a43a:[()=>n.e(5674).then(n.bind(n,3520)),"@site/docs/about/architecture/ORCA-Software-Architecture.md",3520],a9abe928:[()=>n.e(7870).then(n.t.bind(n,3769,19)),"/code/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],afd690bf:[()=>n.e(9270).then(n.bind(n,8088)),"@site/docs/developer/research/research-bamboo.md",8088],b10e40e5:[()=>Promise.all([n.e(1056),n.e(6615)]).then(n.bind(n,1932)),"@site/docs/about/architecture/architecture-database-container.mdx",1932],b13f152f:[()=>n.e(537).then(n.bind(n,2784)),"@site/docs/developer/deployment-guide/setting-up-deployment-environment.mdx",2784],b182d274:[()=>n.e(4123).then(n.bind(n,5427)),"@site/docs/developer/research/research-intro.md",5427],b36bbf0c:[()=>n.e(1522).then(n.bind(n,5409)),"@site/docs/developer/development-guide/code/local-debugging.md",5409],b5bb807f:[()=>n.e(7502).then(n.bind(n,342)),"@site/docs/developer/research/research-AuroraServerless.md",342],b9aa2180:[()=>n.e(3086).then(n.bind(n,5432)),"@site/docs/developer/development-guide/documentation/documentation-tasks.md",5432],ba6f98e6:[()=>n.e(6482).then(n.t.bind(n,5745,19)),"/code/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],baba5c87:[()=>n.e(2079).then(n.bind(n,8786)),"@site/docs/developer/development-guide/code/clean-architecture.mdx",8786],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,1502)),"@site/src/pages/index.js",1502],c89f1054:[()=>n.e(1944).then(n.bind(n,2247)),"@site/docs/developer/development-guide/documentation/documentation-dev-env.md",2247],d1b0219e:[()=>n.e(2550).then(n.bind(n,1642)),"@site/docs/developer/research/research-lambda-container.md",1642],d297147b:[()=>n.e(9687).then(n.bind(n,631)),"@site/docs/developer/development-guide/documentation/documentation-deployment.md",631],d8c497cf:[()=>n.e(3586).then(n.bind(n,21)),"@site/docs/operator/operator-intro.md",21],d967b990:[()=>Promise.all([n.e(1056),n.e(277)]).then(n.bind(n,3622)),"@site/docs/developer/research/research-orca-delete-functionality.mdx",3622],e6bc1cd7:[()=>n.e(4342).then(n.bind(n,9022)),"@site/docs/developer/quickstart/developer-intro.md",9022],efc52324:[()=>n.e(7445).then(n.bind(n,4673)),"@site/docs/developer/research/research-logging-libraries.md",4673],f1da94e7:[()=>Promise.all([n.e(1056),n.e(8942)]).then(n.bind(n,4410)),"@site/docs/developer/deployment-guide/recovery-workflow.mdx",4410],f2425baf:[()=>n.e(9229).then(n.bind(n,8435)),"@site/docs/about/team.md",8435],f4b45fa4:[()=>n.e(2590).then(n.bind(n,5683)),"@site/docs/about/introduction/contributing.md",5683],f58f32ef:[()=>n.e(511).then(n.bind(n,6487)),"@site/docs/developer/deployment-guide/s3-credentials.md",6487]};function u(e){let{error:t,retry:n,pastDelay:o}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):o?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function p(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const a=l[`${e}-${t}`],p={},f=[],m=[],h=(0,c.Z)(a);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(a));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let a=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{a=a[e]})),a[l[l.length-1]]=o}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,o.Z)({},i,n)))}})}const f=[{path:"/cumulus-orca/docs",component:p("/cumulus-orca/docs","afa"),routes:[{path:"/cumulus-orca/docs/about/architecture/architecture-api-container",component:p("/cumulus-orca/docs/about/architecture/architecture-api-container","382"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/architecture-archive-container",component:p("/cumulus-orca/docs/about/architecture/architecture-archive-container","f46"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/architecture-database-container",component:p("/cumulus-orca/docs/about/architecture/architecture-database-container","bda"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/architecture-intro",component:p("/cumulus-orca/docs/about/architecture/architecture-intro","b7d"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/architecture-recover-container",component:p("/cumulus-orca/docs/about/architecture/architecture-recover-container","05b"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/architecture-software-system",component:p("/cumulus-orca/docs/about/architecture/architecture-software-system","105"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/architecture/ORCA-Architecture",component:p("/cumulus-orca/docs/about/architecture/ORCA-Architecture","17c"),exact:!0},{path:"/cumulus-orca/docs/about/introduction/intro-contributing",component:p("/cumulus-orca/docs/about/introduction/intro-contributing","7ef"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/introduction/intro-glossary",component:p("/cumulus-orca/docs/about/introduction/intro-glossary","993"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/introduction/intro-navigating",component:p("/cumulus-orca/docs/about/introduction/intro-navigating","3fb"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/introduction/orca-intro",component:p("/cumulus-orca/docs/about/introduction/orca-intro","49f"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/about/team",component:p("/cumulus-orca/docs/about/team","dcb"),exact:!0,sidebar:"about_orca"},{path:"/cumulus-orca/docs/developer/api",component:p("/cumulus-orca/docs/developer/api","c99"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deploying-from-windows",component:p("/cumulus-orca/docs/developer/deployment-guide/deploying-from-windows","899"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment","98d"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment-environment",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment-environment","87c"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket","444"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials","305"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca","b34"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus",component:p("/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus","b74"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/recovery-workflow",component:p("/cumulus-orca/docs/developer/deployment-guide/recovery-workflow","468"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/deployment-guide/testing_deployment",component:p("/cumulus-orca/docs/developer/deployment-guide/testing_deployment","575"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/best-practices",component:p("/cumulus-orca/docs/developer/development-guide/code/best-practices","705"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/clean-architecture",component:p("/cumulus-orca/docs/developer/development-guide/code/clean-architecture","d61"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/contrib-code-intro",component:p("/cumulus-orca/docs/developer/development-guide/code/contrib-code-intro","091"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/integration-tests",component:p("/cumulus-orca/docs/developer/development-guide/code/integration-tests","7de"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/linting",component:p("/cumulus-orca/docs/developer/development-guide/code/linting","df7"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/local-debugging",component:p("/cumulus-orca/docs/developer/development-guide/code/local-debugging","a55"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/orca-logging",component:p("/cumulus-orca/docs/developer/development-guide/code/orca-logging","dca"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/parallel-scripting",component:p("/cumulus-orca/docs/developer/development-guide/code/parallel-scripting","8d6"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/postgres-tests",component:p("/cumulus-orca/docs/developer/development-guide/code/postgres-tests","44c"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/postgres-tips",component:p("/cumulus-orca/docs/developer/development-guide/code/postgres-tips","a45"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/setup-dev-env",component:p("/cumulus-orca/docs/developer/development-guide/code/setup-dev-env","bc0"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/unit-tests",component:p("/cumulus-orca/docs/developer/development-guide/code/unit-tests","6cc"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/code/versioning-releases",component:p("/cumulus-orca/docs/developer/development-guide/code/versioning-releases","19c"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-add",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-add","a90"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-deploy",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-deploy","750"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-env",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-env","09a"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-intro",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-intro","8dc"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-tasks",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-tasks","bc9"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-templates",component:p("/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-templates","546"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/development-guide/documentation/documentation-style-guide",component:p("/cumulus-orca/docs/developer/development-guide/documentation/documentation-style-guide","fca"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/quickstart/developer-intro",component:p("/cumulus-orca/docs/developer/quickstart/developer-intro","eaf"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-APIGateway",component:p("/cumulus-orca/docs/developer/research/research-APIGateway","caf"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-AuroraServerless",component:p("/cumulus-orca/docs/developer/research/research-AuroraServerless","7f7"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-bamboo",component:p("/cumulus-orca/docs/developer/research/research-bamboo","af9"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-bamboo-integration-tests",component:p("/cumulus-orca/docs/developer/research/research-bamboo-integration-tests","3b3"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-deep-archive-migration",component:p("/cumulus-orca/docs/developer/research/research-deep-archive-migration","14b"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-graphql",component:p("/cumulus-orca/docs/developer/research/research-graphql","c14"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-intro",component:p("/cumulus-orca/docs/developer/research/research-intro","a84"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-lambda-container",component:p("/cumulus-orca/docs/developer/research/research-lambda-container","c92"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-localstack",component:p("/cumulus-orca/docs/developer/research/research-localstack","6ab"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-logging-libraries",component:p("/cumulus-orca/docs/developer/research/research-logging-libraries","ff3"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-multipart-chunksize",component:p("/cumulus-orca/docs/developer/research/research-multipart-chunksize","a0d"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-orca-delete-functionality",component:p("/cumulus-orca/docs/developer/research/research-orca-delete-functionality","64e"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-pushing-docker-image",component:p("/cumulus-orca/docs/developer/research/research-pushing-docker-image","9f2"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-reconciliation",component:p("/cumulus-orca/docs/developer/research/research-reconciliation","339"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/developer/research/research-s3-bucket-best-practices",component:p("/cumulus-orca/docs/developer/research/research-s3-bucket-best-practices","9a3"),exact:!0,sidebar:"dev_guide"},{path:"/cumulus-orca/docs/operator/collection-configuration",component:p("/cumulus-orca/docs/operator/collection-configuration","274"),exact:!0,sidebar:"ops_guide"},{path:"/cumulus-orca/docs/operator/data-recovery",component:p("/cumulus-orca/docs/operator/data-recovery","af9"),exact:!0,sidebar:"ops_guide"},{path:"/cumulus-orca/docs/operator/operator-intro",component:p("/cumulus-orca/docs/operator/operator-intro","041"),exact:!0,sidebar:"ops_guide"},{path:"/cumulus-orca/docs/operator/reingest-to-orca",component:p("/cumulus-orca/docs/operator/reingest-to-orca","d11"),exact:!0,sidebar:"ops_guide"},{path:"/cumulus-orca/docs/operator/storage-classes",component:p("/cumulus-orca/docs/operator/storage-classes","db6"),exact:!0,sidebar:"ops_guide"},{path:"/cumulus-orca/docs/templates/pan-zoom-image",component:p("/cumulus-orca/docs/templates/pan-zoom-image","f8c"),exact:!0}]},{path:"/cumulus-orca/",component:p("/cumulus-orca/","4bb"),exact:!0},{path:"*",component:p("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>a});var r=n(7294);const o=r.createContext(!1);function a(e){let{children:t}=e;const[n,a]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{a(!0)}),[]),r.createElement(o.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(3935),a=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:o}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:o})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),o=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,E.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:o;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:a}),r.createElement("link",{rel:"canonical",href:a}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(x,null),r.createElement(_,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),R=n(8940);function O(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:o}=e;return(0,r.useLayoutEffect)((()=>{o!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:o}),O("onRouteDidUpdate",{previousLocation:o,location:n}))}),[o,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?O("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=O("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const D=I,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(U,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:o,localeConfigs:a}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=a[o];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var G=n(4763),H=n(2389);function Z(){const e=(0,H.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(G.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(p,null,r.createElement(q,null),r.createElement(C,null),r.createElement($,null),r.createElement(D,{location:A(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),N(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=o.hydrate;N(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(a.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),o=n(6809);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/cumulus-orca/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/cumulus-orca/docs","mainDocId":"about/introduction/orca-intro","docs":[{"id":"about/architecture/architecture-api-container","path":"/cumulus-orca/docs/about/architecture/architecture-api-container","sidebar":"about_orca"},{"id":"about/architecture/architecture-archive-container","path":"/cumulus-orca/docs/about/architecture/architecture-archive-container","sidebar":"about_orca"},{"id":"about/architecture/architecture-database-container","path":"/cumulus-orca/docs/about/architecture/architecture-database-container","sidebar":"about_orca"},{"id":"about/architecture/architecture-intro","path":"/cumulus-orca/docs/about/architecture/architecture-intro","sidebar":"about_orca"},{"id":"about/architecture/architecture-recover-container","path":"/cumulus-orca/docs/about/architecture/architecture-recover-container","sidebar":"about_orca"},{"id":"about/architecture/architecture-software-system","path":"/cumulus-orca/docs/about/architecture/architecture-software-system","sidebar":"about_orca"},{"id":"about/architecture/ORCA-Architecture","path":"/cumulus-orca/docs/about/architecture/ORCA-Architecture"},{"id":"about/introduction/intro-contributing","path":"/cumulus-orca/docs/about/introduction/intro-contributing","sidebar":"about_orca"},{"id":"about/introduction/intro-glossary","path":"/cumulus-orca/docs/about/introduction/intro-glossary","sidebar":"about_orca"},{"id":"about/introduction/intro-navigating","path":"/cumulus-orca/docs/about/introduction/intro-navigating","sidebar":"about_orca"},{"id":"about/introduction/orca-intro","path":"/cumulus-orca/docs/about/introduction/orca-intro","sidebar":"about_orca"},{"id":"about/team","path":"/cumulus-orca/docs/about/team","sidebar":"about_orca"},{"id":"developer/api/orca-api","path":"/cumulus-orca/docs/developer/api/","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deploying-from-windows","path":"/cumulus-orca/docs/developer/deployment-guide/deploying-from-windows","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment","path":"/cumulus-orca/docs/developer/deployment-guide/deployment","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment-environment","path":"/cumulus-orca/docs/developer/deployment-guide/deployment-environment","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment-s3-bucket","path":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-bucket","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment-s3-credentials","path":"/cumulus-orca/docs/developer/deployment-guide/deployment-s3-credentials","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment-upgrading-orca","path":"/cumulus-orca/docs/developer/deployment-guide/deployment-upgrading-orca","sidebar":"dev_guide"},{"id":"developer/deployment-guide/deployment-with-cumulus","path":"/cumulus-orca/docs/developer/deployment-guide/deployment-with-cumulus","sidebar":"dev_guide"},{"id":"developer/deployment-guide/recovery-workflow","path":"/cumulus-orca/docs/developer/deployment-guide/recovery-workflow","sidebar":"dev_guide"},{"id":"developer/deployment-guide/testing_deployment","path":"/cumulus-orca/docs/developer/deployment-guide/testing_deployment","sidebar":"dev_guide"},{"id":"developer/development-guide/code/best-practices","path":"/cumulus-orca/docs/developer/development-guide/code/best-practices","sidebar":"dev_guide"},{"id":"developer/development-guide/code/clean-architecture","path":"/cumulus-orca/docs/developer/development-guide/code/clean-architecture","sidebar":"dev_guide"},{"id":"developer/development-guide/code/contrib-code-intro","path":"/cumulus-orca/docs/developer/development-guide/code/contrib-code-intro","sidebar":"dev_guide"},{"id":"developer/development-guide/code/integration-tests","path":"/cumulus-orca/docs/developer/development-guide/code/integration-tests","sidebar":"dev_guide"},{"id":"developer/development-guide/code/linting","path":"/cumulus-orca/docs/developer/development-guide/code/linting","sidebar":"dev_guide"},{"id":"developer/development-guide/code/local-debugging","path":"/cumulus-orca/docs/developer/development-guide/code/local-debugging","sidebar":"dev_guide"},{"id":"developer/development-guide/code/orca-logging","path":"/cumulus-orca/docs/developer/development-guide/code/orca-logging","sidebar":"dev_guide"},{"id":"developer/development-guide/code/parallel-scripting","path":"/cumulus-orca/docs/developer/development-guide/code/parallel-scripting","sidebar":"dev_guide"},{"id":"developer/development-guide/code/postgres-tests","path":"/cumulus-orca/docs/developer/development-guide/code/postgres-tests","sidebar":"dev_guide"},{"id":"developer/development-guide/code/postgres-tips","path":"/cumulus-orca/docs/developer/development-guide/code/postgres-tips","sidebar":"dev_guide"},{"id":"developer/development-guide/code/setup-dev-env","path":"/cumulus-orca/docs/developer/development-guide/code/setup-dev-env","sidebar":"dev_guide"},{"id":"developer/development-guide/code/unit-tests","path":"/cumulus-orca/docs/developer/development-guide/code/unit-tests","sidebar":"dev_guide"},{"id":"developer/development-guide/code/versioning-releases","path":"/cumulus-orca/docs/developer/development-guide/code/versioning-releases","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-add","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-add","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-deploy","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-deploy","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-env","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-env","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-intro","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-intro","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-tasks","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-tasks","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/contrib-documentation-templates","path":"/cumulus-orca/docs/developer/development-guide/documentation/contrib-documentation-templates","sidebar":"dev_guide"},{"id":"developer/development-guide/documentation/documentation-style-guide","path":"/cumulus-orca/docs/developer/development-guide/documentation/documentation-style-guide","sidebar":"dev_guide"},{"id":"developer/quickstart/developer-intro","path":"/cumulus-orca/docs/developer/quickstart/developer-intro","sidebar":"dev_guide"},{"id":"developer/research/research-APIGateway","path":"/cumulus-orca/docs/developer/research/research-APIGateway","sidebar":"dev_guide"},{"id":"developer/research/research-AuroraServerless","path":"/cumulus-orca/docs/developer/research/research-AuroraServerless","sidebar":"dev_guide"},{"id":"developer/research/research-bamboo","path":"/cumulus-orca/docs/developer/research/research-bamboo","sidebar":"dev_guide"},{"id":"developer/research/research-bamboo-integration-tests","path":"/cumulus-orca/docs/developer/research/research-bamboo-integration-tests","sidebar":"dev_guide"},{"id":"developer/research/research-deep-archive-migration","path":"/cumulus-orca/docs/developer/research/research-deep-archive-migration","sidebar":"dev_guide"},{"id":"developer/research/research-graphql","path":"/cumulus-orca/docs/developer/research/research-graphql","sidebar":"dev_guide"},{"id":"developer/research/research-intro","path":"/cumulus-orca/docs/developer/research/research-intro","sidebar":"dev_guide"},{"id":"developer/research/research-lambda-container","path":"/cumulus-orca/docs/developer/research/research-lambda-container","sidebar":"dev_guide"},{"id":"developer/research/research-localstack","path":"/cumulus-orca/docs/developer/research/research-localstack","sidebar":"dev_guide"},{"id":"developer/research/research-logging-libraries","path":"/cumulus-orca/docs/developer/research/research-logging-libraries","sidebar":"dev_guide"},{"id":"developer/research/research-multipart-chunksize","path":"/cumulus-orca/docs/developer/research/research-multipart-chunksize","sidebar":"dev_guide"},{"id":"developer/research/research-orca-delete-functionality","path":"/cumulus-orca/docs/developer/research/research-orca-delete-functionality","sidebar":"dev_guide"},{"id":"developer/research/research-pushing-docker-image","path":"/cumulus-orca/docs/developer/research/research-pushing-docker-image","sidebar":"dev_guide"},{"id":"developer/research/research-reconciliation","path":"/cumulus-orca/docs/developer/research/research-reconciliation","sidebar":"dev_guide"},{"id":"developer/research/research-s3-bucket-best-practices","path":"/cumulus-orca/docs/developer/research/research-s3-bucket-best-practices","sidebar":"dev_guide"},{"id":"operator/collection-configuration","path":"/cumulus-orca/docs/operator/collection-configuration","sidebar":"ops_guide"},{"id":"operator/data-recovery","path":"/cumulus-orca/docs/operator/data-recovery","sidebar":"ops_guide"},{"id":"operator/operator-intro","path":"/cumulus-orca/docs/operator/operator-intro","sidebar":"ops_guide"},{"id":"operator/reingest-to-orca","path":"/cumulus-orca/docs/operator/reingest-to-orca","sidebar":"ops_guide"},{"id":"operator/storage-classes","path":"/cumulus-orca/docs/operator/storage-classes","sidebar":"ops_guide"},{"id":"templates/pan-zoom-image","path":"/cumulus-orca/docs/templates/pan-zoom-image"}],"draftIds":[],"sidebars":{"about_orca":{"link":{"path":"/cumulus-orca/docs/about/introduction/orca-intro","label":"about/introduction/orca-intro"}},"dev_guide":{"link":{"path":"/cumulus-orca/docs/developer/quickstart/developer-intro","label":"developer/quickstart/developer-intro"}},"ops_guide":{"link":{"path":"/cumulus-orca/docs/operator/operator-intro","label":"operator/operator-intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"8.1.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),o=n(412),a=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(a.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(405);function a(e){return r.createElement(o.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),o=n(7294),a=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=o.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,o.useContext)(c),S=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(()=>S.current));const _=p||f;const x=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(A=C,v&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&x&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,o.useRef)(!1),R=n?a.OL:a.rU,O=u.Z.canUseIntersectionObserver,P=(0,o.useRef)(),N=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,o.useEffect)((()=>(!O&&x&&null!=T&&window.docusaurus.prefetch(T),()=>{O&&P.current&&P.current.disconnect()})),[P,T,O,x]);const I=T?.startsWith("#")??!1,D=!T||!x||I;return D||g||E.collectLink(T),D?o.createElement("a",(0,r.Z)({ref:S,href:T},_&&!x&&{target:"_blank",rel:"noopener noreferrer"},b)):o.createElement(R,(0,r.Z)({},b,{onMouseEnter:N,onTouchStart:N,innerRef:e=>{S.current=e,O&&e&&x&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=o.forwardRef(p)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var a=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return a[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return o(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:a}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,o(l,a))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>a});var r=n(7294);const o=r.createContext(null);function a(e){let{children:t,value:n}=e;const a=r.useContext(o),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:a,value:n})),[a,n]);return r.createElement(o.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>p,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(6550),o=n(2263),a=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(1205),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const o={iconExternalLink:"iconExternalLink_nPIU"};function a(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:o.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(7294),o=n(4334),a=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:o}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:o}),t))}var g=n(5281),v=n(9727);const b={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:b.skipToContent})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:o="currentColor",strokeWidth:a=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:o,strokeWidth:a},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function _(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,o.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const x={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,o.Z)(x.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:o,textColor:a,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:o,color:a},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(_,{onClick:n,className:T.announcementBarClose}))}var L=n(2961),R=n(2466);var O=n(902),P=n(3102);const N=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,O.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return r.createElement(N.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(N);if(!e)throw new O.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:a}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},a)))}var B=n(2949),j=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:a,onChange:i}=e;const l=(0,j.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===a?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,o.Z)($.toggle,t)},r.createElement("button",{className:(0,o.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===a?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,o.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,o.Z)($.toggleIcon,$.darkToggleIcon)})))}const G=r.memo(q),H={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,o=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:i}=(0,B.I)();return o?null:r.createElement(G,{className:t,buttonClassName:"dark"===n?H.darkNavbarColorModeToggle:void 0,value:a,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:o,href:a,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,X.Z)(o),f=(0,X.Z)(t),m=(0,X.Z)(a,{forcePrependBaseUrl:!0}),h=i&&a&&!(0,J.Z)(a),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return a?r.createElement(Q.Z,(0,l.Z)({href:c?m:a},d,g)):r.createElement(Q.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...a}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},a));return n?r.createElement("li",null,i):i}function oe(e){let{className:t,isDropdownItem:n,...a}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,o.Z)("menu__link",t)},a)))}function ae(e){let{mobile:t=!1,position:n,...o}=e;const a=t?oe:re;return r.createElement(a,(0,l.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",a)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(_e,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:a,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(_e,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const o=t?de:ce;return r.createElement(o,n)}var fe=n(4711);function me(e){let{width:t=20,height:n=20,...o}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},o),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(1875);const ve={searchBox:"searchBox_ZlJk"};function be(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,o.Z)(n,ve.searchBox)},t)}var ye=n(143),we=n(2802);var ke=n(373);const Ee=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:o,...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...o],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},a,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(be,{className:n},r.createElement(ge.Z,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:a=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,o.Z)({navbar__item:!a&&!i,"menu__list-item":a},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,ye.Iw)(o),s=(0,we.vY)(t,o);return null===s?null:r.createElement(ae,(0,l.Z)({exact:!0},a,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...a}=e;const{activeDoc:i}=(0,ye.Iw)(o),s=(0,we.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(ae,(0,l.Z)({exact:!0},a,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...a}=e;const i=(0,we.lO)(o)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(ae,(0,l.Z)({},a,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:a,dropdownItemsAfter:i,...c}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...a,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Ee(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],v=(0,we.lO)(n)[0],b=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,y=t&&g.length>1?void 0:Ee(v).path;return g.length<=1?r.createElement(ae,(0,l.Z)({},c,{mobile:t,label:b,to:y,isActive:o?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:o?()=>!1:void 0}))}};function _e(e){let{type:t,...n}=e;const o=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Se[o];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(a,n)}function xe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(_e,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ce(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Te(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ce,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(xe,null),secondaryMenu:r.createElement(Te,null)}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Re(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function Oe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown})},t,r.createElement(Re,{onClick:i.toggle}),r.createElement(Ae,null))}var Pe=n(8780);const Ne={errorBoundaryError:"errorBoundaryError_a6uf"};function Ie(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function De(e){let{error:t}=e;const n=(0,Pe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Ne.errorBoundaryError},n)}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function Be(e){let{width:t=30,height:n=30,className:o,...a}=e;return r.createElement("svg",(0,l.Z)({className:o,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},a),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function je(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Be,null))}const ze={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Me,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(_e,e)))))}function $e(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function qe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,o]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return r.createElement($e,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(je,null),r.createElement(W,null),r.createElement(Ue,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ue,{items:o}),r.createElement(Z,{className:ze.colorModeToggle}),!a&&r.createElement(be,null,r.createElement(ge.Z,null)))})}function Ge(){return r.createElement(Oe,null,r.createElement(qe,null))}function He(e){let{item:t}=e;const{to:n,href:o,label:a,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(o,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},o?{href:i?c:o}:{to:u},s),a,o&&!(0,J.Z)(o)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(He,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Ye(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ke(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(He,{item:t})}function Qe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ke,{item:e}),t.length!==n+1&&r.createElement(Ye,null))))))}function Xe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Qe,{links:t})}var Je=n(941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),a={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:a,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:a,copyright:i}=e;return r.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(a||i)&&r.createElement("div",{className:"footer__bottom text--center"},a&&r.createElement("div",{className:"margin-bottom--sm"},a),i)))}function at(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:a}=e;return r.createElement(ot,{style:a,links:n&&n.length>0&&r.createElement(Xe,{links:n}),logo:o&&r.createElement(nt,{logo:o}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(at),lt=(0,O.Qc)([B.S,k.pl,R.OC,ke.L5,i.VC,function(e){let{children:t}=e;return r.createElement(P.n2,null,r.createElement(L.M,null,r.createElement(I,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ut(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Ie,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(De,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(Ge,null),r.createElement("div",{id:d,className:(0,o.Z)(g.k.wrapper.main,ct.mainWrapper,l)},r.createElement(a.Z,{fallback:e=>r.createElement(ut,e)},t)),!n&&r.createElement(it,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),o=n(7294),a=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=o.createElement(u.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?o.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return o.createElement(a.Z,(0,r.Z)({to:m},f,u?.target&&{target:u.target}),u&&o.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&o.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(5742);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return r.createElement(o.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),o=n(7294),a=n(4334),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,f.map((e=>o.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,a.Z)(s.themedImage,s[`themedImage--${e}`],c)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),o=n(7294),a=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,o.useState)(t??!1),a=(0,o.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return d(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!a.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,o.useRef)(null);return p({collapsibleRef:u,collapsed:n,animation:a}),o.createElement(t,{ref:u,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,o.useState)(!t),[l,s]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,o.useLayoutEffect)((()=>{a&&s(t)}),[a,t]),a?o.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return o.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),o=n(2389),a=n(12),i=n(902),l=n(6668);const s=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{a(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),o=n(412),a=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>o.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{c.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,a]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&m(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[o,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g});var r=n(7294),o=n(143),a=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),o=n(902);const a=Symbol("EmptyContext"),i=r.createContext(a);function l(e){let{children:t,name:n,items:o}=e;const a=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return r.createElement(i.Provider,{value:a},t)}function s(){const e=(0,r.useContext)(i);if(e===a)throw new o.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),o=n(3102),a=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),o=n(902);const a=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(a.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(a);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(a);if(!i)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,o.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return o.Z.canUseDOM?window.innerWidth>i?a.desktop:a.mobile:a.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>p,_F:()=>h,cE:()=>d,hI:()=>k,lO:()=>b,vY:()=>w,oz:()=>y,s1:()=>v});var r=n(7294),o=n(6550),a=n(8790),i=n(143),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,c.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,c.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function v(){const e=(0,s.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?g({sidebarItems:e.items,pathname:t}):null}function b(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function y(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function w(e,t){const n=b(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const r=(0,o.TH)(),i=t.routes,l=i.find((e=>(0,o.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,a.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7294),o=n(7459),a=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:o,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(a.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),o&&r.createElement("meta",{name:"keywords",content:Array.isArray(o)?o.join(","):o}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,o.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(a.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),a=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,o.Z)(a,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>a});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function a(e){const t=(0,r.useRef)(e);return o((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return o((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d});var r=n(7294),o=n(412),a=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(c()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>o});n(2263);const r="default";function o(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,o.TH)(),u=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,h(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,o){for(var a,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,_=n[2]||c,x=v||b;r.push({name:g||a++,prefix:h||"",delimiter:_,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:x?u(x):w?".*":"[^"+s(_)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;o(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in f(v))if(b in c){p[v]=!0;break}for(var y in m=p)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(7418),a=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n