diff --git a/404.html b/404.html index c30a4600eb..032fdf9814 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/about/index.html b/about/index.html index 111747edf3..a7a810d94b 100644 --- a/about/index.html +++ b/about/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><main class="container container--fluid margin-vert--lg"><div class="row mdxPageWrapper_j9I6"><div class="col col--8"><article><h2 class="anchor anchorWithStickyNavbar_LWe7" id="about">About<a href="#about" class="hash-link" aria-label="Direct link to About" title="Direct link to About"></a></h2><p>If you landed here while searching for the literal meaning of a "tail call," here's a quick explanation: A tail call in programming is when a function's last action is to call another function. It's a key concept in functional programming, helping to optimize performance by not allocating anything from the caller's stack. Welcome to the geek side, we've got puns! 🚀</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="now-a-little-bit-about-us">Now a little bit about us<a href="#now-a-little-bit-about-us" class="hash-link" aria-label="Direct link to Now a little bit about us" title="Direct link to Now a little bit about us"></a></h3><p>We are aiming to build the world's most powerful GraphQL infrastructure. At our core, we're not just a tech company; we're an adventurous troupe, with first principles thinking, challenging everything we already know. Our pride and joy? A product that's as game-changing and writing the fastest code possible. 💡 How do we do it? We create a culture that champions flexibility, 'higher-order' thinking, and a performance obsession that'd make a Formula 1 pit crew look laid-back!</p><p>But even the most exciting journey is better with companions, right? We're scouting for fellow enthusiasts who share our passion for creating out-of-this-world solutions. 🌌 If you're all about solving complex problems, love flexibility in your work, and want to be part of a team that enjoys the journey as much as the destination, then you're our kind of person! 🚀</p><p>Fancy being part of this thrilling journey? Send us a message at <strong><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer">hi@tailcall.run</a></strong>. We can't wait to hear from you! ❤️</p></article></div><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#about" class="table-of-contents__link toc-highlight">About</a><ul><li><a href="#now-a-little-bit-about-us" class="table-of-contents__link toc-highlight">Now a little bit about us</a></li></ul></li></ul></div></div></div></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/assets/js/13a03de4.257092a0.js b/assets/js/13a03de4.4e070df6.js similarity index 59% rename from assets/js/13a03de4.257092a0.js rename to assets/js/13a03de4.4e070df6.js index 2617e3855b..3d4504cb2d 100644 --- a/assets/js/13a03de4.257092a0.js +++ b/assets/js/13a03de4.4e070df6.js @@ -1 +1 @@ -"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[7043],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=s(r),f=a,h=p["".concat(c,".").concat(f)]||p[f]||d[f]||o;return r?n.createElement(h,l(l({ref:t},u),{},{components:r})):n.createElement(h,l({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var s=2;s<o;s++)l[s]=r[s];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},4575:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>s});var n=r(7462),a=(r(7294),r(3905));const o={title:"Launch",sidebar_position:3},l=void 0,i={unversionedId:"getting_started/launch",id:"getting_started/launch",title:"Launch",description:"Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above.",source:"@site/docs/getting_started/launch.mdx",sourceDirName:"getting_started",slug:"/getting_started/launch",permalink:"/docs/getting_started/launch",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/launch.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Launch",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/getting_started/configuration"},next:{title:"Test",permalink:"/docs/getting_started/test"}},c={},s=[],u={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Now, run the following command to start the server with the full path to the ",(0,a.kt)("inlineCode",{parentName:"p"},"jsonplaceholder.graphql")," file that you created above."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"},"tc start ./jsonplaceholder.graphql\n")),(0,a.kt)("p",null,"If the command succeeds, you should see logs like the following below."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-shell"}," \ud83d\ude80 Tailcall launched at [0.0.0.0:8000]\n \ud83c\udf0d Playground: http://0.0.0.0:8000\n")),(0,a.kt)("p",null,"The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the ",(0,a.kt)("strong",{parentName:"p"},"playground URL")," in a new tab in your browser and try it out for yourself!"))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[7043],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>h});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=u(r),f=a,h=p["".concat(c,".").concat(f)]||p[f]||d[f]||o;return r?n.createElement(h,l(l({ref:t},s),{},{components:r})):n.createElement(h,l({ref:t},s))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:a,l[1]=i;for(var u=2;u<o;u++)l[u]=r[u];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}f.displayName="MDXCreateElement"},4575:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>o,metadata:()=>i,toc:()=>u});var n=r(7462),a=(r(7294),r(3905));const o={title:"Launch",sidebar_position:3},l=void 0,i={unversionedId:"getting_started/launch",id:"getting_started/launch",title:"Launch",description:"Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above.",source:"@site/docs/getting_started/launch.mdx",sourceDirName:"getting_started",slug:"/getting_started/launch",permalink:"/docs/getting_started/launch",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/launch.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Launch",sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/getting_started/configuration"},next:{title:"Execute",permalink:"/docs/getting_started/execute"}},c={},u=[],s={toc:u},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Now, run the following command to start the server with the full path to the ",(0,a.kt)("inlineCode",{parentName:"p"},"jsonplaceholder.graphql")," file that you created above."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"tc start ./jsonplaceholder.graphql\n")),(0,a.kt)("p",null,"If the command succeeds, you should see logs like the following below."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"}," \ud83d\ude80 Tailcall launched at [0.0.0.0:8000]\n \ud83c\udf0d Playground: http://0.0.0.0:8000\n")),(0,a.kt)("p",null,"The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the ",(0,a.kt)("strong",{parentName:"p"},"playground URL")," in a new tab in your browser and try it out for yourself!"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/62aa0aea.8d3d5e09.js b/assets/js/62aa0aea.8d3d5e09.js deleted file mode 100644 index f5160940d2..0000000000 --- a/assets/js/62aa0aea.8d3d5e09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[2800],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var i=n(7294);function a(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 i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),u=a,m=h["".concat(l,".").concat(u)]||h[u]||p[u]||o;return n?i.createElement(m,r(r({ref:t},d),{},{components:n})):i.createElement(m,r({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,r[1]=s;for(var c=2;c<o;c++)r[c]=n[c];return i.createElement.apply(null,r)}return i.createElement.apply(null,n)}u.displayName="MDXCreateElement"},2940:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));const o={title:"Problem Statement",sidebar_position:2,slug:"/"},r=void 0,s={unversionedId:"intro/introduction",id:"intro/introduction",title:"Problem Statement",description:"There are two things that are happening in the tech ecosystem nowadays:",source:"@site/docs/intro/introduction.md",sourceDirName:"intro",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/introduction.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Problem Statement",sidebar_position:2,slug:"/"},sidebar:"tutorialSidebar",previous:{title:"Test",permalink:"/docs/getting_started/test"},next:{title:"Architecture",permalink:"/docs/intro/architecture"}},l={},c=[{value:"Microservice Architecture",id:"microservice-architecture",level:2},{value:"API Composition",id:"api-composition",level:2},{value:"Composition on Clients",id:"composition-on-clients",level:2},{value:"1. Increased Complexity",id:"1-increased-complexity",level:3},{value:"2. Reduced Performance",id:"2-reduced-performance",level:3},{value:"3. Increased Risk",id:"3-increased-risk",level:3},{value:"Backend For Frontend (BFF)",id:"backend-for-frontend-bff",level:2},{value:"1. Highly Specialized",id:"1-highly-specialized",level:3},{value:"2. Fragile",id:"2-fragile",level:3},{value:"3. Speculative Performance",id:"3-speculative-performance",level:3},{value:"4. Monolith",id:"4-monolith",level:3},{value:"5. Canary Support (Lack thereof)",id:"5-canary-support-lack-thereof",level:3},{value:"6. Coupled Release",id:"6-coupled-release",level:3},{value:"7. Legacy Gateway",id:"7-legacy-gateway",level:3},{value:"8. Organizational Friction",id:"8-organizational-friction",level:3}],d={toc:c},h="wrapper";function p(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,i.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"There are two things that are happening in the tech ecosystem nowadays:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Rich User Interfaces:")," Responsive websites that worked on desktop and mobile are dead. To build a successful B2C business, you need to build for all three platforms viz. Android, iOS, and Web (Desktop/PWA). The applications need to look slick, rich in information and have snappy response times."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Microservice Proliferation:")," Companies these days bootstrap themselves on microservices instead of monoliths. This is because the tooling has gotten a lot better, and reusable components are available either in open-source or as a SAAS solution. This allows developers to focus on their core business logic and move fast.")),(0,a.kt)("h2",{id:"microservice-architecture"},"Microservice Architecture"),(0,a.kt)("p",null,"This is what a typical microservices architecture looks like:"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Microservice Architecture Diagram",src:n(4221).Z,width:"3014",height:"2260"})),(0,a.kt)("p",null,'The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services.'),(0,a.kt)("h2",{id:"api-composition"},"API Composition"),(0,a.kt)("p",null,"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a fa\xe7ade for the underlying APIs."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration.")),(0,a.kt)("p",null,"For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"First to ",(0,a.kt)("strong",{parentName:"p"},"/posts")," to retrieve recent posts, with the following response:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Post {\n id: ID!\n title: String!\n body: String!\n userId: ID! # Reference to user by it's id.\n}\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Second, with the ",(0,a.kt)("strong",{parentName:"p"},"userId")," from the above post response, make a request to ",(0,a.kt)("strong",{parentName:"p"},"/users")," to retrieve the user's profile information, with the following response:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type User {\n id: ID!\n name: String!\n email: String!\n}\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API."),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Post {\n id: ID!\n title: String!\n body: String!\n user: User! # Reference to the complete user object\n}\n")))),(0,a.kt)("h2",{id:"composition-on-clients"},"Composition on Clients"),(0,a.kt)("p",null,"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what\u2019s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Modest hardware and flaky network conditions on the client side results in poor user-experience.")),(0,a.kt)("h3",{id:"1-increased-complexity"},"1. Increased Complexity"),(0,a.kt)("p",null,"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code."),(0,a.kt)("h3",{id:"2-reduced-performance"},"2. Reduced Performance"),(0,a.kt)("p",null,"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API."),(0,a.kt)("h3",{id:"3-increased-risk"},"3. Increased Risk"),(0,a.kt)("p",null,"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead."),(0,a.kt)("h2",{id:"backend-for-frontend-bff"},"Backend For Frontend (BFF)",(0,a.kt)("a",{parentName:"h2",href:"https://tailcall.in/ab#backend-for-frontend"})),(0,a.kt)("p",null,"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"BFF Diagram",src:n(5514).Z,width:"3617",height:"2224"})),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience.")),(0,a.kt)("p",null,"The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer:"),(0,a.kt)("h3",{id:"1-highly-specialized"},"1. Highly Specialized"),(0,a.kt)("p",null,"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain."),(0,a.kt)("h3",{id:"2-fragile"},"2. Fragile"),(0,a.kt)("p",null,"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions."),(0,a.kt)("h3",{id:"3-speculative-performance"},"3. Speculative Performance"),(0,a.kt)("p",null,"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes."),(0,a.kt)("h3",{id:"4-monolith"},"4. Monolith"),(0,a.kt)("p",null,"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure."),(0,a.kt)("h3",{id:"5-canary-support-lack-thereof"},"5. Canary Support (Lack thereof)"),(0,a.kt)("p",null,"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use ",(0,a.kt)("a",{parentName:"p",href:"https://www.redhat.com/en/topics/devops/what-is-blue-green-deployment"},"Blue-Green")," deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support."),(0,a.kt)("h3",{id:"6-coupled-release"},"6. Coupled Release"),(0,a.kt)("p",null,"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage."),(0,a.kt)("h3",{id:"7-legacy-gateway"},"7. Legacy Gateway"),(0,a.kt)("p",null,"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter \u2014 Are all different nomenclatures used for the same thing.")),(0,a.kt)("h3",{id:"8-organizational-friction"},"8. Organizational Friction"),(0,a.kt)("p",null,"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges."),(0,a.kt)("p",null,"At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms."))}p.isMDXComponent=!0},5514:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/bff-878ce671177c6fa3e99bf82f002c2b17.svg"},4221:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/microservices-470f369493a95674ec72436df9d40ce3.svg"}}]); \ No newline at end of file diff --git a/assets/js/62aa0aea.bba9e36d.js b/assets/js/62aa0aea.bba9e36d.js new file mode 100644 index 0000000000..7ebd14d21d --- /dev/null +++ b/assets/js/62aa0aea.bba9e36d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[2800],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var i=n(7294);function a(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 i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=i.createContext({}),c=function(e){var t=i.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=c(e.components);return i.createElement(l.Provider,{value:t},e.children)},h="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),h=c(n),u=a,m=h["".concat(l,".").concat(u)]||h[u]||p[u]||o;return n?i.createElement(m,r(r({ref:t},d),{},{components:n})):i.createElement(m,r({ref:t},d))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,r=new Array(o);r[0]=u;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:a,r[1]=s;for(var c=2;c<o;c++)r[c]=n[c];return i.createElement.apply(null,r)}return i.createElement.apply(null,n)}u.displayName="MDXCreateElement"},2940:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=n(7462),a=(n(7294),n(3905));const o={title:"Problem Statement",sidebar_position:2,slug:"/"},r=void 0,s={unversionedId:"intro/introduction",id:"intro/introduction",title:"Problem Statement",description:"There are two things that are happening in the tech ecosystem nowadays:",source:"@site/docs/intro/introduction.md",sourceDirName:"intro",slug:"/",permalink:"/docs/",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/introduction.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{title:"Problem Statement",sidebar_position:2,slug:"/"},sidebar:"tutorialSidebar",previous:{title:"Execute",permalink:"/docs/getting_started/execute"},next:{title:"Architecture",permalink:"/docs/intro/architecture"}},l={},c=[{value:"Microservice Architecture",id:"microservice-architecture",level:2},{value:"API Composition",id:"api-composition",level:2},{value:"Composition on Clients",id:"composition-on-clients",level:2},{value:"1. Increased Complexity",id:"1-increased-complexity",level:3},{value:"2. Reduced Performance",id:"2-reduced-performance",level:3},{value:"3. Increased Risk",id:"3-increased-risk",level:3},{value:"Backend For Frontend (BFF)",id:"backend-for-frontend-bff",level:2},{value:"1. Highly Specialized",id:"1-highly-specialized",level:3},{value:"2. Fragile",id:"2-fragile",level:3},{value:"3. Speculative Performance",id:"3-speculative-performance",level:3},{value:"4. Monolith",id:"4-monolith",level:3},{value:"5. Canary Support (Lack thereof)",id:"5-canary-support-lack-thereof",level:3},{value:"6. Coupled Release",id:"6-coupled-release",level:3},{value:"7. Legacy Gateway",id:"7-legacy-gateway",level:3},{value:"8. Organizational Friction",id:"8-organizational-friction",level:3}],d={toc:c},h="wrapper";function p(e){let{components:t,...o}=e;return(0,a.kt)(h,(0,i.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"There are two things that are happening in the tech ecosystem nowadays:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Rich User Interfaces:")," Responsive websites that worked on desktop and mobile are dead. To build a successful B2C business, you need to build for all three platforms viz. Android, iOS, and Web (Desktop/PWA). The applications need to look slick, rich in information and have snappy response times."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Microservice Proliferation:")," Companies these days bootstrap themselves on microservices instead of monoliths. This is because the tooling has gotten a lot better, and reusable components are available either in open-source or as a SAAS solution. This allows developers to focus on their core business logic and move fast.")),(0,a.kt)("h2",{id:"microservice-architecture"},"Microservice Architecture"),(0,a.kt)("p",null,"This is what a typical microservices architecture looks like:"),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Microservice Architecture Diagram",src:n(4221).Z,width:"3014",height:"2260"})),(0,a.kt)("p",null,'The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services.'),(0,a.kt)("h2",{id:"api-composition"},"API Composition"),(0,a.kt)("p",null,"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a fa\xe7ade for the underlying APIs."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration.")),(0,a.kt)("p",null,"For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"First to ",(0,a.kt)("strong",{parentName:"p"},"/posts")," to retrieve recent posts, with the following response:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Post {\n id: ID!\n title: String!\n body: String!\n userId: ID! # Reference to user by it's id.\n}\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Second, with the ",(0,a.kt)("strong",{parentName:"p"},"userId")," from the above post response, make a request to ",(0,a.kt)("strong",{parentName:"p"},"/users")," to retrieve the user's profile information, with the following response:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type User {\n id: ID!\n name: String!\n email: String!\n}\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API."),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql"},"type Post {\n id: ID!\n title: String!\n body: String!\n user: User! # Reference to the complete user object\n}\n")))),(0,a.kt)("h2",{id:"composition-on-clients"},"Composition on Clients"),(0,a.kt)("p",null,"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what\u2019s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Modest hardware and flaky network conditions on the client side results in poor user-experience.")),(0,a.kt)("h3",{id:"1-increased-complexity"},"1. Increased Complexity"),(0,a.kt)("p",null,"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code."),(0,a.kt)("h3",{id:"2-reduced-performance"},"2. Reduced Performance"),(0,a.kt)("p",null,"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API."),(0,a.kt)("h3",{id:"3-increased-risk"},"3. Increased Risk"),(0,a.kt)("p",null,"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead."),(0,a.kt)("h2",{id:"backend-for-frontend-bff"},"Backend For Frontend (BFF)",(0,a.kt)("a",{parentName:"h2",href:"https://tailcall.in/ab#backend-for-frontend"})),(0,a.kt)("p",null,"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"BFF Diagram",src:n(5514).Z,width:"3617",height:"2224"})),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience.")),(0,a.kt)("p",null,"The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer:"),(0,a.kt)("h3",{id:"1-highly-specialized"},"1. Highly Specialized"),(0,a.kt)("p",null,"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain."),(0,a.kt)("h3",{id:"2-fragile"},"2. Fragile"),(0,a.kt)("p",null,"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions."),(0,a.kt)("h3",{id:"3-speculative-performance"},"3. Speculative Performance"),(0,a.kt)("p",null,"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes."),(0,a.kt)("h3",{id:"4-monolith"},"4. Monolith"),(0,a.kt)("p",null,"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure."),(0,a.kt)("h3",{id:"5-canary-support-lack-thereof"},"5. Canary Support (Lack thereof)"),(0,a.kt)("p",null,"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use ",(0,a.kt)("a",{parentName:"p",href:"https://www.redhat.com/en/topics/devops/what-is-blue-green-deployment"},"Blue-Green")," deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support."),(0,a.kt)("h3",{id:"6-coupled-release"},"6. Coupled Release"),(0,a.kt)("p",null,"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage."),(0,a.kt)("h3",{id:"7-legacy-gateway"},"7. Legacy Gateway"),(0,a.kt)("p",null,"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter \u2014 Are all different nomenclatures used for the same thing.")),(0,a.kt)("h3",{id:"8-organizational-friction"},"8. Organizational Friction"),(0,a.kt)("p",null,"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges."),(0,a.kt)("p",null,"At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms."))}p.isMDXComponent=!0},5514:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/bff-878ce671177c6fa3e99bf82f002c2b17.svg"},4221:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/microservices-470f369493a95674ec72436df9d40ce3.svg"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.2ed9f8e7.js b/assets/js/935f2afb.2ed9f8e7.js new file mode 100644 index 0000000000..4f51446c14 --- /dev/null +++ b/assets/js/935f2afb.2ed9f8e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[53],{1109:t=>{t.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Installation","href":"/docs/getting_started","docId":"getting_started/installation"},{"type":"link","label":"Configuration","href":"/docs/getting_started/configuration","docId":"getting_started/configuration"},{"type":"link","label":"Launch","href":"/docs/getting_started/launch","docId":"getting_started/launch"},{"type":"link","label":"Execute","href":"/docs/getting_started/execute","docId":"getting_started/execute"}]},{"type":"category","label":"Introduction","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Problem Statement","href":"/docs/","docId":"intro/introduction"},{"type":"link","label":"Architecture","href":"/docs/intro/architecture","docId":"intro/architecture"},{"type":"link","label":"CLI","href":"/docs/intro/cli","docId":"intro/cli"},{"type":"link","label":"Operators","href":"/docs/intro/operators","docId":"intro/operators"},{"type":"link","label":"Context","href":"/docs/intro/context","docId":"intro/context"}]},{"type":"category","label":"Guides","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Tackling N + 1","href":"/docs/guides/n+1","docId":"guides/n+1"}]}]},"docs":{"getting_started/configuration":{"id":"getting_started/configuration","title":"Configuration","description":"For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data.","sidebar":"tutorialSidebar"},"getting_started/execute":{"id":"getting_started/execute","title":"Execute","description":"1. Open a web browser and go to http8000. This should load the GraphiQL interface.","sidebar":"tutorialSidebar"},"getting_started/installation":{"id":"getting_started/installation","title":"Installation","description":"You can install the latest version -{\\" \\"}","sidebar":"tutorialSidebar"},"getting_started/launch":{"id":"getting_started/launch","title":"Launch","description":"Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above.","sidebar":"tutorialSidebar"},"guides/n+1":{"id":"guides/n+1","title":"Tackling N + 1","description":"The N+1 problem is a pervasive and critical issue in application development that occurs when an application ends up issuing a large number of downstream requests, for a single request from upstream. Let\'s understand with an example:","sidebar":"tutorialSidebar"},"intro/architecture":{"id":"intro/architecture","title":"Architecture","description":"What we have built is a open-source API orchestration solution that really thinks about the problem from first principles and achieves far superior results than the legacy solutions that are available today. To understand how it works, here is the technical implementation of our solution.","sidebar":"tutorialSidebar"},"intro/cli":{"id":"intro/cli","title":"CLI","description":"The TailCall CLI (Command Line Interface) is an essential part of the TailCall toolkit. It allows developers to manage and optimize GraphQL configurations directly from the command line. Each command within the CLI is designed to handle a specific aspect of GraphQL composition. Below, you\'ll find a detailed overview of each command, along with its options and usage examples.","sidebar":"tutorialSidebar"},"intro/context":{"id":"intro/context","title":"Context","description":"In any GraphQL framework, including Tailcall, Context is a fundamental mechanism used for data sharing amongst various parts of your application. It is an adaptable object that is made available to every resolver in GraphQL.","sidebar":"tutorialSidebar"},"intro/introduction":{"id":"intro/introduction","title":"Problem Statement","description":"There are two things that are happening in the tech ecosystem nowadays:","sidebar":"tutorialSidebar"},"intro/operators":{"id":"intro/operators","title":"Operators","description":"Tailcall DSL builds on your existing GraphQL knowledge by allowing the addition of some custom operators. These operators provide powerful compile time guarantees to make sure your API composition is tight and robust. The operator information is used to automatically generates highly optimized resolver logic for your types.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.929dad16.js b/assets/js/935f2afb.929dad16.js deleted file mode 100644 index 95a27909a2..0000000000 --- a/assets/js/935f2afb.929dad16.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[53],{1109:t=>{t.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Installation","href":"/docs/getting_started","docId":"getting_started/installation"},{"type":"link","label":"Configuration","href":"/docs/getting_started/configuration","docId":"getting_started/configuration"},{"type":"link","label":"Launch","href":"/docs/getting_started/launch","docId":"getting_started/launch"},{"type":"link","label":"Test","href":"/docs/getting_started/test","docId":"getting_started/test"}]},{"type":"category","label":"Introduction","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Problem Statement","href":"/docs/","docId":"intro/introduction"},{"type":"link","label":"Architecture","href":"/docs/intro/architecture","docId":"intro/architecture"},{"type":"link","label":"CLI","href":"/docs/intro/cli","docId":"intro/cli"},{"type":"link","label":"Operators","href":"/docs/intro/operators","docId":"intro/operators"},{"type":"link","label":"Context","href":"/docs/intro/context","docId":"intro/context"}]},{"type":"category","label":"Guides","collapsible":false,"collapsed":false,"items":[{"type":"link","label":"Tackling N + 1","href":"/docs/guides/n+1","docId":"guides/n+1"}]}]},"docs":{"getting_started/configuration":{"id":"getting_started/configuration","title":"Configuration","description":"For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data.","sidebar":"tutorialSidebar"},"getting_started/installation":{"id":"getting_started/installation","title":"Installation","description":"You can install the latest version -{\\" \\"}","sidebar":"tutorialSidebar"},"getting_started/launch":{"id":"getting_started/launch","title":"Launch","description":"Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above.","sidebar":"tutorialSidebar"},"getting_started/test":{"id":"getting_started/test","title":"Test","description":"Let\'s try the following query, to get all the users and the title of each post of each user.","sidebar":"tutorialSidebar"},"guides/n+1":{"id":"guides/n+1","title":"Tackling N + 1","description":"The N+1 problem is a pervasive and critical issue in application development that occurs when an application ends up issuing a large number of downstream requests, for a single request from upstream. Let\'s understand with an example:","sidebar":"tutorialSidebar"},"intro/architecture":{"id":"intro/architecture","title":"Architecture","description":"What we have built is a open-source API orchestration solution that really thinks about the problem from first principles and achieves far superior results than the legacy solutions that are available today. To understand how it works, here is the technical implementation of our solution.","sidebar":"tutorialSidebar"},"intro/cli":{"id":"intro/cli","title":"CLI","description":"The TailCall CLI (Command Line Interface) is an essential part of the TailCall toolkit. It allows developers to manage and optimize GraphQL configurations directly from the command line. Each command within the CLI is designed to handle a specific aspect of GraphQL composition. Below, you\'ll find a detailed overview of each command, along with its options and usage examples.","sidebar":"tutorialSidebar"},"intro/context":{"id":"intro/context","title":"Context","description":"In any GraphQL framework, including Tailcall, Context is a fundamental mechanism used for data sharing amongst various parts of your application. It is an adaptable object that is made available to every resolver in GraphQL.","sidebar":"tutorialSidebar"},"intro/introduction":{"id":"intro/introduction","title":"Problem Statement","description":"There are two things that are happening in the tech ecosystem nowadays:","sidebar":"tutorialSidebar"},"intro/operators":{"id":"intro/operators","title":"Operators","description":"Tailcall DSL builds on your existing GraphQL knowledge by allowing the addition of some custom operators. These operators provide powerful compile time guarantees to make sure your API composition is tight and robust. The operator information is used to automatically generates highly optimized resolver logic for your types.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/ba32450a.a3cab0a8.js b/assets/js/ba32450a.a3cab0a8.js deleted file mode 100644 index 40b15b48f3..0000000000 --- a/assets/js/ba32450a.a3cab0a8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[5699],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=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 a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.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[p]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6208:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const a={title:"Test",sidebar_position:4},i=void 0,l={unversionedId:"getting_started/test",id:"getting_started/test",title:"Test",description:"Let's try the following query, to get all the users and the title of each post of each user.",source:"@site/docs/getting_started/test.mdx",sourceDirName:"getting_started",slug:"/getting_started/test",permalink:"/docs/getting_started/test",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/test.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Test",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Launch",permalink:"/docs/getting_started/launch"},next:{title:"Problem Statement",permalink:"/docs/"}},s={},c=[],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Let's try the following query, to get all the users and the title of each post of each user."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-graphql",metastring:"showLineNumbers",showLineNumbers:!0},"query {\n users {\n id\n name\n posts {\n title\n }\n }\n}\n")),(0,o.kt)("p",null,"You should see output like the following:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"showLineNumbers",showLineNumbers:!0},'{\n "data": {\n "users": [\n {\n "id": 1,\n "name": "Leanne Graham",\n "posts": [\n {\n "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit"\n },\n ...\n ]\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "posts": [\n {\n "title": "et ea vero quia laudantium autem"\n },\n {\n "title": "in quibusdam tempore odit est dolorem"\n },\n ...\n ]\n }\n ]\n }\n}\n')),(0,o.kt)("p",null,"You can now add additional fields, and compose more queries together!"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e05620c0.984f2140.js b/assets/js/e05620c0.984f2140.js new file mode 100644 index 0000000000..1b1f0fe9f1 --- /dev/null +++ b/assets/js/e05620c0.984f2140.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[6515],{2041:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>g,frontMatter:()=>c,metadata:()=>m,toc:()=>u});var l=a(7462),n=a(7294),i=a(3905),r=a(614);const o=()=>{const[e,t]=(0,n.useState)();return(0,n.useEffect)((()=>{(async()=>{const e=await fetch("https://api.github.com/repos/tailcallhq/tailcall/releases/latest"),a=await e.json();"string"==typeof a?.tag_name&&t(a.tag_name)})().catch(console.error)}),[]),n.createElement(n.Fragment,null,e)},s=()=>n.createElement("div",null,n.createElement(r.Z,null,"curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- ",n.createElement(o,null))),c={title:"Installation",sidebar_position:1,slug:"/getting_started"},p=void 0,m={unversionedId:"getting_started/installation",id:"getting_started/installation",title:"Installation",description:'You can install the latest version -{" "}',source:"@site/docs/getting_started/installation.mdx",sourceDirName:"getting_started",slug:"/getting_started",permalink:"/docs/getting_started",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/installation.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Installation",sidebar_position:1,slug:"/getting_started"},sidebar:"tutorialSidebar",next:{title:"Configuration",permalink:"/docs/getting_started/configuration"}},d={},u=[{value:"NPM",id:"npm",level:2},{value:"Homebrew",id:"homebrew",level:2},{value:"Curl",id:"curl",level:2},{value:"Docker",id:"docker",level:2}],h={toc:u},k="wrapper";function g(e){let{components:t,...a}=e;return(0,i.kt)(k,(0,l.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(n.Fragment,null,"You can install the latest version -"," ",(0,i.kt)("b",null,(0,i.kt)(o,{mdxType:"Version"})),", by using",(0,i.kt)("b",null," NPM"),"."),(0,i.kt)("h2",{id:"npm"},"NPM"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"If you don't already have ",(0,i.kt)("strong",{parentName:"p"},"nodejs")," installed, you can find the instructions ",(0,i.kt)("a",{parentName:"p",href:"https://nodejs.org/en/learn/getting-started/how-to-install-nodejs"},"here"),".")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Install Tailcall by running the following command in your terminal:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm i -g tailcallhq/tailcall\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Verify that Tailcall is installed correctly by running:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"tc\n")),(0,i.kt)("admonition",{parentName:"li",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Do not use the ",(0,i.kt)("inlineCode",{parentName:"p"},"--force")," flag during npm installations, as it ignores installing platform-specific builds.")))),(0,i.kt)("h2",{id:"homebrew"},"Homebrew"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"If you don't already have Homebrew installed, you can find the instructions ",(0,i.kt)("a",{parentName:"p",href:"https://brew.sh/"},"here"),".")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Add the Tailcall repository to Homebrew by running the following command in your terminal:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap tailcallhq/tailcall\nbrew install tailcall\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Verify that Tailcall is installed correctly by running:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"tc\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Once installation is done, ",(0,i.kt)("strong",{parentName:"p"},"upgrades")," can be performed via:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"brew update\nbrew upgrade tailcall\n")))),(0,i.kt)("h2",{id:"curl"},"Curl"),(0,i.kt)("p",null,"Follow the steps below to manually install the cli on your system:"),(0,i.kt)(s,{mdxType:"InstallCommand"}),(0,i.kt)("p",null,"This command fetches and executes the Tailcall installation script. The installed files are located in the ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.tailcall")," directory."),(0,i.kt)("p",null,"Upon completion of the installation, extend your ",(0,i.kt)("inlineCode",{parentName:"p"},"PATH")," environment variable to include the ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.tailcall/bin")," directory:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"export PATH=$PATH:~/.tailcall/bin\n")),(0,i.kt)("h2",{id:"docker"},"Docker"),(0,i.kt)("p",null,"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from ",(0,i.kt)("a",{parentName:"p",href:"https://www.docker.com/products/docker-desktop"},"here"),"."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Pull the latest Tailcall Docker image using the following command:"),(0,i.kt)(r.Z,{language:"bash",mdxType:"CodeBlock"},"docker pull ghcr.io/tailcallhq/tailcall/tc-server:",(0,i.kt)(o,{mdxType:"Version"})),(0,i.kt)("p",{parentName:"li"},"This command fetches the latest version of the Tailcall Docker image from the Docker registry.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Run the Tailcall Docker container with the following command:"),(0,i.kt)(r.Z,{language:"bash",mdxType:"CodeBlock"},"docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server:",(0,i.kt)(o,{mdxType:"Version"})),(0,i.kt)("p",{parentName:"li"},"This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080."))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Once the installation is compeleted, you should verify the if the version printed on running ",(0,i.kt)("inlineCode",{parentName:"p"},"tc")," command match the actual installed versions.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/e05620c0.a42ef087.js b/assets/js/e05620c0.a42ef087.js deleted file mode 100644 index 18d7296249..0000000000 --- a/assets/js/e05620c0.a42ef087.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[6515],{2041:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>p,default:()=>g,frontMatter:()=>c,metadata:()=>m,toc:()=>u});var l=a(7462),n=a(7294),i=a(3905),r=a(614);const o=()=>{const[e,t]=(0,n.useState)();return(0,n.useEffect)((()=>{(async()=>{const e=await fetch("https://api.github.com/repos/tailcallhq/tailcall/releases/latest"),a=await e.json();"string"==typeof a?.tag_name&&t(a.tag_name)})().catch(console.error)}),[]),n.createElement(n.Fragment,null,e)},s=()=>n.createElement("div",null,n.createElement(r.Z,null,"curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- ",n.createElement(o,null))),c={title:"Installation",sidebar_position:1,slug:"/getting_started"},p=void 0,m={unversionedId:"getting_started/installation",id:"getting_started/installation",title:"Installation",description:'You can install the latest version -{" "}',source:"@site/docs/getting_started/installation.mdx",sourceDirName:"getting_started",slug:"/getting_started",permalink:"/docs/getting_started",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/installation.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Installation",sidebar_position:1,slug:"/getting_started"},sidebar:"tutorialSidebar",next:{title:"Configuration",permalink:"/docs/getting_started/configuration"}},d={},u=[{value:"NPM",id:"npm",level:2},{value:"Homebrew",id:"homebrew",level:2},{value:"Curl",id:"curl",level:2},{value:"Docker",id:"docker",level:2}],h={toc:u},k="wrapper";function g(e){let{components:t,...a}=e;return(0,i.kt)(k,(0,l.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)(n.Fragment,null,"You can install the latest version -"," ",(0,i.kt)("b",null,(0,i.kt)(o,{mdxType:"Version"})),", by using",(0,i.kt)("b",null," NPM"),"."),(0,i.kt)("h2",{id:"npm"},"NPM"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"If you don't already have ",(0,i.kt)("strong",{parentName:"p"},"nodejs")," installed, you can find the instructions ",(0,i.kt)("a",{parentName:"p",href:"https://nodejs.org/en/learn/getting-started/how-to-install-nodejs"},"here"),".")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Install Tailcall by running the following command in your terminal:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"npm i -g tailcallhq/tailcall\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Verify that Tailcall is installed correctly by running:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"tc\n")),(0,i.kt)("admonition",{parentName:"li",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Avoid using the ",(0,i.kt)("inlineCode",{parentName:"p"},"--force")," flag during npm installations, as it may skip the installation of platform-specific builds.")))),(0,i.kt)("h2",{id:"homebrew"},"Homebrew"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"If you don't already have Homebrew installed, you can find the instructions ",(0,i.kt)("a",{parentName:"p",href:"https://brew.sh/"},"here"),".")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Add the Tailcall repository to Homebrew by running the following command in your terminal:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"brew tap tailcallhq/tailcall\nbrew install tailcall\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Verify that Tailcall is installed correctly by running:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"tc\n"))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Once installation is done, ",(0,i.kt)("strong",{parentName:"p"},"upgrades")," can be performed via:"),(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"brew update\nbrew upgrade tailcall\n")))),(0,i.kt)("h2",{id:"curl"},"Curl"),(0,i.kt)("p",null,"Follow the steps below to manually install the cli on your system:"),(0,i.kt)(s,{mdxType:"InstallCommand"}),(0,i.kt)("p",null,"This command fetches and executes the Tailcall installation script. The installed files are located in the ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.tailcall")," directory."),(0,i.kt)("p",null,"Upon completion of the installation, extend your ",(0,i.kt)("inlineCode",{parentName:"p"},"PATH")," environment variable to include the ",(0,i.kt)("inlineCode",{parentName:"p"},"~/.tailcall/bin")," directory:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"export PATH=$PATH:~/.tailcall/bin\n")),(0,i.kt)("h2",{id:"docker"},"Docker"),(0,i.kt)("p",null,"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from ",(0,i.kt)("a",{parentName:"p",href:"https://www.docker.com/products/docker-desktop"},"here"),"."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Pull the latest Tailcall Docker image using the following command:"),(0,i.kt)(r.Z,{language:"bash",mdxType:"CodeBlock"},"docker pull ghcr.io/tailcallhq/tailcall/tc-server:",(0,i.kt)(o,{mdxType:"Version"})),(0,i.kt)("p",{parentName:"li"},"This command fetches the latest version of the Tailcall Docker image from the Docker registry.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},"Run the Tailcall Docker container with the following command:"),(0,i.kt)(r.Z,{language:"bash",mdxType:"CodeBlock"},"docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server:",(0,i.kt)(o,{mdxType:"Version"})),(0,i.kt)("p",{parentName:"li"},"This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080."))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Once the installation is compeleted, you should verify the if the version printed on running ",(0,i.kt)("inlineCode",{parentName:"p"},"tc")," command match the actual installed versions.")))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f3303be8.9a07832a.js b/assets/js/f3303be8.9a07832a.js new file mode 100644 index 0000000000..4a86d52a44 --- /dev/null +++ b/assets/js/f3303be8.9a07832a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[4534],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var r=n(7294);function a(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 r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=a,f=p["".concat(s,".").concat(m)]||p[m]||d[m]||o;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},8730:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const o={title:"Execute",sidebar_position:4},i=void 0,l={unversionedId:"getting_started/execute",id:"getting_started/execute",title:"Execute",description:"1. Open a web browser and go to http8000. This should load the GraphiQL interface.",source:"@site/docs/getting_started/execute.mdx",sourceDirName:"getting_started",slug:"/getting_started/execute",permalink:"/docs/getting_started/execute",draft:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/execute.mdx",tags:[],version:"current",sidebarPosition:4,frontMatter:{title:"Execute",sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Launch",permalink:"/docs/getting_started/launch"},next:{title:"Problem Statement",permalink:"/docs/"}},s={},c=[],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Open a web browser and go to ",(0,a.kt)("a",{parentName:"p",href:"http://localhost:8000"},"http://localhost:8000"),". This should load the GraphiQL interface.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"In the query editor of GraphiQL, enter the following query"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre",className:"language-graphql",metastring:"showLineNumbers",showLineNumbers:!0},"query {\n users {\n id\n name\n posts {\n title\n }\n }\n}\n")))),(0,a.kt)("p",null,"After running the query in GraphiQL, expect to see a JSON response structured like this:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json",metastring:"showLineNumbers",showLineNumbers:!0},'{\n "data": {\n "users": [\n {\n "id": 1,\n "name": "Leanne Graham",\n "posts": [\n {\n "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit"\n }\n // Additional posts truncated for brevity\n ]\n },\n {\n "id": 2,\n "name": "Ervin Howell",\n "posts": [\n {\n "title": "et ea vero quia laudantium autem"\n },\n {\n "title": "in quibusdam tempore odit est dolorem"\n }\n // Additional posts truncated for brevity\n ]\n }\n // Additional users truncated for brevity\n ]\n }\n}\n')),(0,a.kt)("p",null,"You can now add additional fields, and compose more queries together!"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.2e41dac0.js b/assets/js/main.2e41dac0.js new file mode 100644 index 0000000000..f049afc551 --- /dev/null +++ b/assets/js/main.2e41dac0.js @@ -0,0 +1,2 @@ +/*! For license information please see main.2e41dac0.js.LICENSE.txt */ +(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"031793e1":[()=>n.e(1633).then(n.t.bind(n,2511,19)),"~blog/default/blog-tags-facebook-038.json",2511],"0658869c":[()=>n.e(609).then(n.bind(n,7997)),"@site/docs/intro/architecture.md",7997],"096bfee4":[()=>n.e(7178).then(n.t.bind(n,5010,19)),"~blog/default/blog-tags-facebook-038-list.json",5010],"13a03de4":[()=>n.e(7043).then(n.bind(n,4575)),"@site/docs/getting_started/launch.mdx",4575],17896441:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(7918)]).then(n.bind(n,8945)),"@theme/DocItem",8945],"19e5fc73":[()=>n.e(8545).then(n.t.bind(n,3769,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1cc0006d":[()=>n.e(8270).then(n.t.bind(n,5745,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1f391b9e":[()=>Promise.all([n.e(532),n.e(3473),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"336980e2":[()=>n.e(7345).then(n.t.bind(n,4469,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"356a0ac6":[()=>n.e(1117).then(n.bind(n,7384)),"@site/src/pages/about.md",7384],"3d0a8e87":[()=>n.e(8902).then(n.bind(n,643)),"@site/docs/getting_started/configuration.mdx",643],"4c9e35b1":[()=>n.e(9035).then(n.t.bind(n,499,19)),"~blog/default/blog-tags-hola-ea2-list.json",499],59362658:[()=>n.e(2267).then(n.bind(n,8642)),"@site/blog/2021-08-01-mdx-blog-post.mdx",8642],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5ed9170a":[()=>n.e(4001).then(n.bind(n,5752)),"@site/docs/intro/cli.md",5752],"608ae6a4":[()=>n.e(6938).then(n.t.bind(n,4545,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",4545],"62aa0aea":[()=>n.e(2800).then(n.bind(n,2940)),"@site/docs/intro/introduction.md",2940],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6875c492":[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"73664a40":[()=>n.e(3514).then(n.bind(n,1976)),"@site/blog/2019-05-29-long-blog-post.md",1976],"7661071f":[()=>n.e(9642).then(n.bind(n,6911)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",6911],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"8717b14a":[()=>n.e(948).then(n.bind(n,3352)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",3352],"925b3f96":[()=>n.e(9003).then(n.bind(n,8856)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",8856],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a80da1cf:[()=>n.e(3205).then(n.t.bind(n,4863,19)),"~blog/default/blog-tags-docusaurus-0e0.json",4863],af535492:[()=>n.e(2591).then(n.bind(n,7673)),"@site/docs/intro/operators.md",7673],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],ccc49370:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],d14cf086:[()=>n.e(2002).then(n.bind(n,4667)),"@site/docs/intro/context.md",4667],d3291ccc:[()=>n.e(5797).then(n.bind(n,2736)),"@site/docs/guides/n+1.md",2736],d9f32620:[()=>n.e(1914).then(n.bind(n,2900)),"@site/blog/2021-08-26-welcome/index.md",2900],e05620c0:[()=>Promise.all([n.e(532),n.e(3473),n.e(6515)]).then(n.bind(n,2041)),"@site/docs/getting_started/installation.mdx",2041],e16015ca:[()=>n.e(9700).then(n.t.bind(n,5688,19)),"~blog/default/blog-tags-hola-ea2.json",5688],e273c56f:[()=>n.e(2362).then(n.bind(n,1947)),"@site/blog/2019-05-28-first-blog-post.md",1947],f3303be8:[()=>n.e(4534).then(n.bind(n,8730)),"@site/docs/getting_started/execute.mdx",8730],f4f34a3a:[()=>n.e(8636).then(n.bind(n,5145)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",5145]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/about/",component:f("/about/","8a9"),exact:!0},{path:"/blog/",component:f("/blog/","52c"),exact:!0},{path:"/blog/archive/",component:f("/blog/archive/","a4b"),exact:!0},{path:"/blog/first-blog-post/",component:f("/blog/first-blog-post/","28d"),exact:!0},{path:"/blog/long-blog-post/",component:f("/blog/long-blog-post/","a57"),exact:!0},{path:"/blog/mdx-blog-post/",component:f("/blog/mdx-blog-post/","c7e"),exact:!0},{path:"/blog/tags/",component:f("/blog/tags/","4eb"),exact:!0},{path:"/blog/tags/docusaurus/",component:f("/blog/tags/docusaurus/","6a9"),exact:!0},{path:"/blog/tags/facebook/",component:f("/blog/tags/facebook/","fa9"),exact:!0},{path:"/blog/tags/hello/",component:f("/blog/tags/hello/","e51"),exact:!0},{path:"/blog/tags/hola/",component:f("/blog/tags/hola/","77b"),exact:!0},{path:"/blog/welcome/",component:f("/blog/welcome/","c19"),exact:!0},{path:"/docs/",component:f("/docs/","c05"),routes:[{path:"/docs/",component:f("/docs/","e95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/",component:f("/docs/getting_started/","434"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/configuration/",component:f("/docs/getting_started/configuration/","889"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/execute/",component:f("/docs/getting_started/execute/","9fe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/launch/",component:f("/docs/getting_started/launch/","cec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/guides/n+1/",component:f("/docs/guides/n+1/","5aa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/architecture/",component:f("/docs/intro/architecture/","712"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/cli/",component:f("/docs/intro/cli/","357"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/context/",component:f("/docs/intro/context/","f6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/operators/",component:f("/docs/intro/operators/","fca"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","01e"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(6657),n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=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})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,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(_,null),r.createElement(x,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const T=new Map;function 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 N=n(8934),R=n(8940);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),L("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(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?L("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=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(O,{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<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{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:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763),G=n(2389);function Z(){const e=(0,G.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(H.Z,null,r.createElement(R.M,null,r.createElement(N.t,null,r.createElement(f,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 a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.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),P(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;P(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.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),a=n(6809);const o=JSON.parse('{"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1699100490517.json","lunrIndex":"lunr-index-1699100490517.json"}}},"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-JEP3QDWT0G"],"anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro/introduction","docs":[{"id":"getting_started/configuration","path":"/docs/getting_started/configuration","sidebar":"tutorialSidebar"},{"id":"getting_started/execute","path":"/docs/getting_started/execute","sidebar":"tutorialSidebar"},{"id":"getting_started/installation","path":"/docs/getting_started","sidebar":"tutorialSidebar"},{"id":"getting_started/launch","path":"/docs/getting_started/launch","sidebar":"tutorialSidebar"},{"id":"guides/n+1","path":"/docs/guides/n+1","sidebar":"tutorialSidebar"},{"id":"intro/architecture","path":"/docs/intro/architecture","sidebar":"tutorialSidebar"},{"id":"intro/cli","path":"/docs/intro/cli","sidebar":"tutorialSidebar"},{"id":"intro/context","path":"/docs/intro/context","sidebar":"tutorialSidebar"},{"id":"intro/introduction","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"intro/operators","path":"/docs/intro/operators","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/getting_started","label":"getting_started/installation"}}}}],"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":"0.0.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-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","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"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.2.0"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(63);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){let{isNavLink:n,to:f,href:p,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,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=f||p;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(A=C,v&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const N=(0,a.useRef)(!1),R=n?o.OL:o.rU,L=u.Z.canUseIntersectionObserver,O=(0,a.useRef)(),P=()=>{N.current||null==T||(window.docusaurus.preload(T),N.current=!0)};(0,a.useEffect)((()=>(!L&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{L&&O.current&&O.current.disconnect()})),[O,T,L,_]);const I=T?.startsWith("#")??!1,D=!T||!_||I;return D||g||E.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:S,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(R,(0,r.Z)({},b,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,L&&e&&_&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),O.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(2263),a=n(9935);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>p,gA:()=>c,_r:()=>s,Jo:()=>m,zh:()=>u,yW:()=>f,gB:()=>d});var r=n(6550),a=n(8084);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const l={},s=()=>(0,a.OD)("docusaurus-plugin-content-docs")??l,u=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function c(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.TH)();return i(t,n)}function m(e){const t=u(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.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"}))}},63:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ht});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){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&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(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:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),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:a="currentColor",strokeWidth:o=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:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(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,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _={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,a.Z)(_.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:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var N=n(2961),R=n(2466);var L=n(902),O=n(3102);const P=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,O.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(P.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)(P);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var 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:o,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"===o?(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,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,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,N.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:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.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:o,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,a.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,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Ae,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,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:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ae,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(8084),ve=n(813),be=n.n(ve);function ye(){const e=(0,s.TH)(),t=(0,s.k6)(),{siteConfig:{baseUrl:n}}=(0,se.Z)(),[a,o]=(0,r.useState)({wordToHighlight:"",isTitleSuggestion:!1,titleText:""});return(0,r.useEffect)((()=>{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;o(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.highlightState,t,e]),(0,r.useEffect)((()=>{if(0===a.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(be())(e),n={ignoreJoiners:!0};return t.mark(a.wordToHighlight,n),()=>t.unmark(n)}),[a,n]),null}const we=e=>{const t=(0,r.useRef)(!1),o=(0,r.useRef)(null),[i,l]=(0,r.useState)(!1),u=(0,s.k6)(),{siteConfig:c={}}=(0,se.Z)(),d=(c.plugins||[]).find((e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search"))),f=(0,j.Z)(),{baseUrl:p}=c,m=d&&d[1]?.assetUrl||p,h=(0,ge.eZ)("docusaurus-lunr-search"),g=()=>{t.current||(Promise.all([fetch(`${m}${h.fileNames.searchDoc}`).then((e=>e.json())),fetch(`${m}${h.fileNames.lunrIndex}`).then((e=>e.json())),Promise.all([n.e(4611),n.e(5684)]).then(n.bind(n,4734)),Promise.all([n.e(532),n.e(2572)]).then(n.bind(n,2572))]).then((e=>{let[t,n,{default:r}]=e;const{searchDocs:a,options:o}=t;a&&0!==a.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:p,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const a=n.url||"/";document.createElement("a").href=a,e.setVal(""),t.target.blur();let o="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("<span.+span>\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],o=t.textContent}}catch(i){console.log(i)}u.push(a,{highlightState:{wordToHighlight:o}})}})})(a,n,r,o),l(!0))})),t.current=!0)},v=(0,r.useCallback)((t=>{o.current.contains(t.target)||o.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return f&&g(),r.createElement("div",{className:"navbar__search",key:"search-box"},r.createElement("span",{"aria-label":"expand searchbar",role:"button",className:(0,a.Z)("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:v,onKeyDown:v,tabIndex:0}),r.createElement("input",{id:"search_input_react",type:"search",placeholder:i?"Search Ctrl+K":"Loading...","aria-label":"Search",className:(0,a.Z)("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:g,onMouseOver:g,onFocus:v,onBlur:v,ref:o,disabled:!i}),r.createElement(ye,null))},ke={searchBox:"searchBox_ZlJk"};function Ee(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ke.searchBox)},t)}var Se=n(4104),xe=n(2802);var _e=n(373);const Ce=e=>e.docs.find((t=>t.id===e.mainDocId));const Te={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],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(fe,(0,l.Z)({},o,{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(Ee,{className:n},r.createElement(we,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Se.Iw)(a),s=(0,xe.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{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:a,...o}=e;const{activeDoc:i}=(0,Se.Iw)(a),s=(0,xe.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,xe.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,Se.Iw)(n),m=(0,Se.gB)(n),{savePreferredVersionName:h}=(0,_e.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ce(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],v=(0,xe.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:Ce(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:b,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Ae(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Te[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ne(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ae,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Re(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 Le(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Re,{onClick:()=>t.hide()}),t.content)}function Oe(){const e=(0,N.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(Ne,null),secondaryMenu:r.createElement(Le,null)}):null}const Pe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ie(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function De(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Pe.navbarHideable,!s&&Pe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ie,{onClick:i.toggle}),r.createElement(Oe,null))}var Me=n(8780);const Fe={errorBoundaryError:"errorBoundaryError_a6uf"};function Be(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 je(e){let{error:t}=e;const n=(0,Me.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Fe.errorBoundaryError},n)}class ze extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Ue="right";function $e(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function qe(){const{toggle:e,shown:t}=(0,N.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($e,null))}const He={colorModeToggle:"colorModeToggle_DEke"};function Ge(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(ze,{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(Ae,e)))))}function Ze(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 Ve(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Ue)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Ze,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(qe,null),r.createElement(W,null),r.createElement(Ge,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ge,{items:a}),r.createElement(Z,{className:He.colorModeToggle}),!o&&r.createElement(Ee,null,r.createElement(we,null)))})}function We(){return r.createElement(De,null,r.createElement(Ve,null))}function Ye(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ke(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(Ye,{item:t}))}function Qe(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(Ke,{key:t,item:e})))))}function Xe(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Qe,{key:t,column:e}))))}function Je(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function et(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Ye,{item:t})}function tt(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(et,{item:e}),t.length!==n+1&&r.createElement(Je,null))))))}function nt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Xe,{columns:t}):r.createElement(tt,{links:t})}var rt=n(941);const at={footerLogoLink:"footerLogoLink_BH7S"};function ot(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(rt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function it(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:at.footerLogoLink,target:t.target},r.createElement(ot,{logo:t})):r.createElement(ot,{logo:t})}function lt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function st(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ut(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(st,{style:o,links:n&&n.length>0&&r.createElement(nt,{links:n}),logo:a&&r.createElement(it,{logo:a}),copyright:t&&r.createElement(lt,{copyright:t})})}const ct=r.memo(ut),dt=(0,L.Qc)([B.S,k.pl,R.OC,_e.L5,i.VC,function(e){let{children:t}=e;return r.createElement(O.n2,null,r.createElement(N.M,null,r.createElement(I,null,t)))}]);function ft(e){let{children:t}=e;return r.createElement(dt,null,t)}function pt(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(Be,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(je,{error:t})))))}const mt={mainWrapper:"mainWrapper_z2l0"};function ht(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(ft,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(We,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,mt.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(pt,e)},t)),!n&&r.createElement(ct,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const 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 f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=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=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.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 p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(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",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(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:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g});var r=n(7294),a=n(4104),o=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()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(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,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(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(p.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)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=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,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.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 f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){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),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.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:()=>f,_F:()=>h,cE:()=>d,hI:()=>k,lO:()=>b,vY:()=>w,oz:()=>y,s1:()=>v});var r=n(7294),a=n(6550),o=n(8790),i=n(4104),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||m(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function v(){const e=(0,s.V)(),{pathname:t}=(0,a.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),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}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,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\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),a=n(723),o=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,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(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=o(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),a({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),a({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),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.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),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(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 f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function T(){return Math.random().toString(36).substr(2,x)}var A=m();function N(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(C(e.state))}function L(){P(C(y()))}var O=!1;function P(e){if(O)O=!1,N();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?N({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(O=!0,F(a))}(e)}))}}var I=C(y()),D=[I.key];function M(e){return _+f(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(v,R),o&&window.addEventListener(b,L)):0===B&&(window.removeEventListener(v,R),o&&window.removeEventListener(b,L))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),u=D.slice(0,s+1);u.push(o.key),D=u,N({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf(U.location.key);-1!==s&&(D[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function C(){var e=w(x());return v&&(e=c(e,v)),p(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var N=!1,R=null;function L(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===f(a))return;R=null,function(e){if(N)N=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(f(t));-1===n&&(n=0);var r=D.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,M(a))}(e)}))}}(a)}}var O=x(),P=y(O);O!==P&&_(P);var I=C(),D=[f(I)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(k,L):0===F&&window.removeEventListener(k,L)}var j=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);if(x()!==a){R=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(f(z.location)),i=D.slice(0,o+1);i.push(t),D=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);x()!==a&&(R=t,_(a));var o=D.indexOf(f(z.location));-1!==o&&(D[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=T.appendListener(e);return B(1),function(){B(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=T(l,0,o.length-1),v=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach((function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(a=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach((function(e){e.handled||a.getIframeContents(e.val,(function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(u,c,e,l)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach((function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,(function(){--i<=0&&a()}))};r.iframes?r.waitForIframes(o,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every((function(t){return!r.call(e,t)||(a=!0,!1)})),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(a){n.every((function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach((function(e){i+="|"+t.escapeStr(e)})),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}})),a()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}a()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes((function(o){var i=o.value.length;e.forEach((function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,(function(n){return t(n,e,o.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),o,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,(function(e,a){return n.opt.filter(a,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(function(e,t,r,a){return n.opt.filter(e,t,r,a)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,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<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,_=v||b;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,v))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,N=S;for(N+=E.value.length;T>=N;)N+=(E=E.next).value.length;if(S=N-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(N<A||"string"==typeof R.value);R=R.next)C++,N+=R.value.length;C--,x=e.slice(S,N),_.index-=S}else if(!(_=o(k,0,x,v)))continue;T=_.index;var L=_[0],O=x.slice(0,T),P=x.slice(T+L.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),u(t,D,C),E=s(t,D,new a(f,g?r.tokenize(L,g):L,y,L)),P&&s(t,E,P),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,_=60108,C=60114,T=60109,A=60110,N=60112,R=60113,L=60120,O=60115,P=60116,I=60121,D=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),_=j("react.strict_mode"),C=j("react.profiler"),T=j("react.provider"),A=j("react.context"),N=j("react.forward_ref"),R=j("react.suspense"),L=j("react.suspense_list"),O=j("react.memo"),P=j("react.lazy"),I=j("react.block"),j("react.scope"),D=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case R:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case N:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case O:return V(e.type);case I:return V(e._render);case P:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ue(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var Ee=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Ne(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Re(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Le(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Ne(e),t)for(e=0;e<t.length;e++)Ne(t[e])}}function Oe(e,t){return e(t)}function Pe(e,t,n,r,a){return e(t,n,r,a)}function Ie(){}var De=Oe,Me=!1,Fe=!1;function Be(){null===Te&&null===Ae||(Ie(),Le())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,He=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},_t={};function Ct(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Nt=Ct("animationstart"),Rt=Ct("transitionend"),Lt=new Map,Ot=new Map,Pt=["abort","abort",Tt,"animationEnd",At,"animationIteration",Nt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Rt,"transitionEnd","waiting","waiting"];function It(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Ot.set(r,t),Lt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Dt=8;function Mt(e){if(0!=(1&e))return Dt=15,1;if(0!=(2&e))return Dt=14,2;if(0!=(4&e))return Dt=13,4;var t=24&e;return 0!==t?(Dt=12,t):0!=(32&e)?(Dt=11,32):0!==(t=192&e)?(Dt=10,t):0!=(256&e)?(Dt=9,256):0!==(t=3584&e)?(Dt=8,t):0!=(4096&e)?(Dt=7,4096):0!==(t=4186112&e)?(Dt=6,t):0!==(t=62914560&e)?(Dt=5,t):67108864&e?(Dt=4,67108864):0!=(134217728&e)?(Dt=3,134217728):0!==(t=805306368&e)?(Dt=2,t):0!=(1073741824&e)?(Dt=1,1073741824):(Dt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return Dt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Dt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=Dt):0!==(l&=o)&&(r=Mt(l),a=Dt)}else 0!==(o=n&~i)?(r=Mt(o),a=Dt):0!==l&&(r=Mt(l),a=Dt);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=Dt)return t;Dt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||Ie();var a=Qt,o=Me;Me=!0;try{Pe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Ir(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Ir(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),mn=ln(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(hn),vn=ln(a({},hn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},pn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=ln(An),Rn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),On=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pn=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),In=ln(Pn),Dn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Re(r),0<(t=Mr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,_e(e)),e=Kn,Me)e(t);else{Me=!0;try{Oe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==br||br!==X(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}It("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),It("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),It(Pt,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Ot.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Nr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Pr(t,e,2,!1),n.add(r))}var Rr="_reactListening"+Math.random().toString(36).slice(2);function Lr(e){e[Rr]||(e[Rr]=!0,l.forEach((function(t){Cr.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Pr(o,e,a,t),i.add(l))}function Pr(e,t,n,r){var a=Ot.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return De(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Lt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Nn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Ln;break;case Tt:case At:case Nt:s=yn;break;case Rt:s=On;break;case"scroll":s=mn;break;case"wheel":s=In;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Rn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=je(m,f))&&c.push(Dr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Ye(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Rn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,ta(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Er(i,n,a)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Mr(r,y)).length&&(y=new En(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=qn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Ar(i,t)}))}function Dr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=je(e,n))&&r.unshift(Dr(e,o,a)),null!=(o=je(e,t))&&r.push(Dr(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=je(n,o))&&i.unshift(Dr(n,s,l)):a||null!=(s=je(n,o))&&i.push(Dr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=fa.current,ca(fa,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,Na=o.unstable_now,Ra=o.unstable_getCurrentPriorityLevel,La=o.unstable_ImmediatePriority,Oa=o.unstable_UserBlockingPriority,Pa=o.unstable_NormalPriority,Ia=o.unstable_LowPriority,Da=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=Na(),$a=1e4>Ua?Na:function(){return Na()-Ua};function qa(){switch(Ra()){case La:return 99;case Oa:return 98;case Pa:return 97;case Ia:return 96;case Da:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return La;case 98:return Oa;case 97:return Pa;case 96:return Ia;case 95:return Da;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Za(e,t,n){return e=Ha(e),_a(e,t,n)}function Va(){if(null!==ja){var e=ja;ja=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),_a(La,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ua(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),ms(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:fa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:fa.current,a.context=ha(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(Eo(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(a,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},No=sa(Ao),Ro=sa(Ao),Lo=sa(Ao);function Oo(e){if(e===Ao)throw Error(i(174));return e}function Po(e,t){switch(ca(Lo,t),ca(Ro,e),ca(No,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(No),ca(No,t)}function Io(){ua(No),ua(Ro),ua(Lo)}function Do(e){Oo(Lo.current);var t=Oo(No.current),n=pe(t,e.type);t!==n&&(ca(Ro,e),ca(No,n))}function Mo(e){Ro.current===e&&(ua(No),ua(Ro))}var Fo=sa(0);function Bo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jo=null,zo=null,Uo=!1;function $o(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Zo(e){if(e!==jo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=jo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Qo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Oi:Pi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Ii,e=n(r,a)}while(ri)}if(Ko.current=Li,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Pl;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ri.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function mi(e,t,n){return pi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ri.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ni(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ri(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}ms(e,a,r)}}var Li={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ri.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return vi(e=Ni.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Di=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:fa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ha(t,u=ga(n)?ma:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||pa.current||io?("function"==typeof p&&(go(t,n,p,r),m=t.memoizedState),(u=io||bo(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Di.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Po(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Fo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Io(),ua(pa),ua(fa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Oo(Lo.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oo(No.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Nr("cancel",r),Nr("close",r);break;case"iframe":case"object":case"embed":Nr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Nr(_r[e],r);break;case"source":Nr("error",r);break;case"img":case"image":case"link":Nr("error",r),Nr("load",r);break;case"details":Nr("toggle",r);break;case"input":ee(r,l),Nr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Nr("invalid",r);break;case"textarea":se(r,l),Nr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Nr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Nr("cancel",e),Nr("close",e),o=r;break;case"iframe":case"object":case"embed":Nr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Nr(_r[o],e);o=r;break;case"source":Nr("error",e),o=r;break;case"img":case"image":case"link":Nr("error",e),Nr("load",e),o=r;break;case"details":Nr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Nr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Nr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Nr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Nr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oo(Lo.current),Oo(No.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ua(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Pl||0==(134217727&Ul)&&0==(134217727&$l)||bs(Pl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Io(),Wi(t),null===e&&Lr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ca(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Io(),ua(pa),ua(fa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Fo),null;case 4:return Io(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Oo(No.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Nr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Nl=Math.ceil,Rl=k.ReactCurrentDispatcher,Ll=k.ReactCurrentOwner,Ol=0,Pl=null,Il=null,Dl=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Ol)?$a():-1!==ls?ls:ls=$a()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Ol)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Pl&&($l|=t,4===Bl&&bs(e,Dl));var r=qa();1===t?0!=(8&Ol)&&0==(48&Ol)?ys(e):(gs(e,n),0===Ol&&(Vl(),Va())):(0==(4&Ol)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=Dt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Pl?Dl:0),t=Dt,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=_a(La,Wa)):Ba.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ol))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Pl?Dl:0);if(0===n)return null;var r=n,a=Ol;Ol|=16;var o=Cs();for(Pl===e&&Dl===r||(Vl(),xs(e,r));;)try{Ns();break}catch(s){_s(e,s)}if(to(),Rl.current=o,Ol=a,null!==Il?r=0:(Pl=null,Dl=0,r=Bl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ts(e,n))),1===r)throw t=jl,xs(e,0),bs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Os(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Os.bind(null,e),r);break}Os(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Nl(n/1960))-n)){e.timeoutHandle=Hr(Os.bind(null,e),n);break}Os(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Ol))throw Error(i(327));if(Ds(),e===Pl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=Ft(e,t)))}else n=Ts(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ts(e,t))),1===n)throw n=jl,xs(e,0),bs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Os(e),gs(e,$a()),null}function ws(e,t){var n=Ol;Ol|=1;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}}function ks(e,t){var n=Ol;Ol&=-2,Ol|=8;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}}function Es(e,t){ca(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Io(),ua(pa),ua(fa),Yo();break;case 5:Mo(r);break;case 4:Io();break;case 13:case 19:ua(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Pl=e,Il=Zs(e.current,null),Dl=Ml=zl=t,Bl=0,jl=null,ql=$l=Ul=0}function _s(e,t){for(;;){var n=Il;try{if(to(),Ko.current=Li,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Ll.current=null,null===n||null===n.return){Bl=1,jl=t,Il=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ls(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Cs(){var e=Rl.current;return Rl.current=Li,null===e?Li:e}function Ts(e,t){var n=Ol;Ol|=16;var r=Cs();for(Pl===e&&Dl===t||xs(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Ol=n,Rl.current=r,null!==Il)throw Error(i(261));return Pl=null,Dl=0,Bl}function As(){for(;null!==Il;)Rs(Il)}function Ns(){for(;null!==Il&&!Ta();)Rs(Il)}function Rs(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ls(e):Il=t,Ll.current=null}function Ls(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Bl&&(Bl=5)}function Os(e){var t=qa();return Ga(99,Ps.bind(null,e,t)),null}function Ps(e,t){do{Ds()}while(null!==es);if(0!=(48&Ol))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Pl&&(Il=Pl=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Ol,Ol|=32,Ll.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===o&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Yl=r;do{try{Is()}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);cs=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&ve(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Yl),Yl.flags&=-3;break;case 6:El(Yl),Yl.flags&=-3,Cl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Cl(Yl.alternate,Yl);break;case 4:Cl(Yl.alternate,Yl);break;case 8:_l(l,s=Yl);var E=s.alternate;wl(s),null!==E&&wl(E)}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=pr(y,E),o=pr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&vl(y,Yl.alternate,Yl),128&S){w=void 0;var x=Yl.ref;if(null!==x){var _=Yl.stateNode;Yl.tag,w=_,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,Fa(),Ol=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Ol)||Va(),null}function Is(){for(;null!==Yl;){var e=Yl.alternate;ds||null===cs||(0!=(8&Yl.flags)?Je(Yl,cs)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,cs)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Ds(),null}))),Yl=Yl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ol))throw Error(i(331));var t=Ol;Ol|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Ol=t,Va(),!0}function js(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Pl===e&&(Dl&n)===n&&(4===Bl||3===Bl&&(62914560&Dl)===Dl&&500>$a()-Gl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=Hs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case R:return(e=Hs(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case L:return(e=Hs(19,n,t,a)).elementType=L,e.lanes=o,e;case F:return Ys(n,a,o,t);case B:return(e=Hs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case N:l=11;break e;case O:l=14;break e;case P:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),ms(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Lr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Do(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Po(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===N)return 11;if(e===O)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Vo();t=t.child}return t;case 5:return Do(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Po(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),ji(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Oe=ws,Pe=function(e,t,n,r,a){var o=Ol;Ol|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Ol=o)&&(Vl(),Va())}},Ie=function(){0==(49&Ol)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Ds())},De=function(e,t){var n=Ol;Ol|=2;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}};var lu={Events:[na,ra,aa,Re,Le,Ds,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(he){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},O=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},P=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=L(e.metaTags,y),o=L(t,v),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,c,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,f,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(c,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):j&&(a=j(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(O(this.props,"helmetData"),O(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,o.createElement(a,h)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:k,strict:E}):null,N=!!(y?y(A,n):A),R="function"==typeof m?m(N):m,L="function"==typeof S?S(N):S;N&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,c),L=(0,l.Z)({},L,p));var O=(0,l.Z)({"aria-current":N&&a||null,className:R,style:L,to:i},C);return v!==b?O.ref=t||_:O.innerRef=_,o.createElement(g,O)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>S,TH:()=>P,k6:()=>O,rs:()=>R,s6:()=>b});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),u=n(7462),c=n(4779),d=n.n(c),f=(n(9864),n(3366)),p=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function N(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var L=a.useContext;function O(){return L(v)}function P(){return L(b).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function N(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var R={current:null};function L(){var e=R.current;if(null===e)throw Error(p(321));return e}var O={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:N}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return L().useCallback(e,t)},t.useContext=function(e,t){return L().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return L().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return L().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return L().useLayoutEffect(e,t)},t.useMemo=function(e,t){return L().useMemo(e,t)},t.useReducer=function(e,t,n){return L().useReducer(e,t,n)},t.useRef=function(e){return L().useRef(e)},t.useState=function(e){return L().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,N=null,R=3,L=!1,O=!1,P=!1;function I(e){for(var t=S(T);null!==t;){if(null===t.callback)x(T);else{if(!(t.startTime<=e))break;x(T),t.sortIndex=t.expirationTime,E(C,t)}t=S(T)}}function D(e){if(P=!1,I(e),!O)if(null!==S(C))O=!0,n(M);else{var t=S(T);null!==t&&r(D,t.startTime-e)}}function M(e,n){O=!1,P&&(P=!1,a()),L=!0;var o=R;try{for(I(n),N=S(C);null!==N&&(!(N.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=N.callback;if("function"==typeof i){N.callback=null,R=N.priorityLevel;var l=i(N.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?N.callback=l:N===S(C)&&x(C),I(n)}else x(C);N=S(C)}if(null!==N)var s=!0;else{var u=S(T);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{N=null,R=o,L=!1}}var F=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){O||L||(O=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(T,e),null===S(C)&&e===S(T)&&(P?a():P=!0,r(D,i-l))):(e.sortIndex=s,E(C,e),O||L||(O=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Tailcall",trailingSlash:!0,tagline:"<tagline>",url:"https://tailcall.run",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",organizationName:"tailcallhq",projectName:"tailcallhq.github.io",deploymentBranch:"main",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{gtag:{trackingID:"G-JEP3QDWT0G",anonymizeIP:!1},docs:{sidebarPath:"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/sidebars.js",sidebarCollapsible:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop"},blog:{showReadingTime:!0,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop"},theme:{customCss:"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/src/css/custom.css"},sitemap:{changefreq:"weekly",priority:.5,ignorePatterns:["/blog/**","/docs/**"]}}]],themeConfig:{navbar:{title:"Tailcall",hideOnScroll:!1,logo:{alt:"Tailcall Logo",src:"img/logo-light.svg"},items:[{to:"/about",label:"About",position:"right"},{to:"https://github.com/tailcallhq/graphql-benchmarks#benchmark-results",label:"Performance",position:"right"},{to:"/docs",label:"Docs",position:"right"},{to:"https://blog.tailcall.run",label:"Blog",position:"right"},{label:"Discord",position:"right",to:"https://discord.gg/Q2ZExpFCnA"}]},footer:{style:"dark",links:[{title:"Docs",items:[{to:"/docs/getting_started",label:"Introduction"},{to:"/docs/getting_started/",label:"Installation"}]},{title:"Community",items:[{label:"Github",to:"https://github.com/tailcallhq/tailcall"},{to:"https://blog.tailcall.run",label:"Blog",position:"right"},{label:"Discord",to:"https://discord.gg/Q2ZExpFCnA"}]},{title:"More",items:[{to:"/about",label:"About"},{label:"Linkedin",to:"https://www.linkedin.com/company/tailcall"},{label:"Twitter",to:"https://twitter.com/tailcallhq"},{label:"hi@tailcall.run",to:"mailto:hi@tailcall.run"}]}],copyright:"Copyright \xa9 2023 Tailcall, Inc. "},prism:{theme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},showLineNumbers:!0,additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{disableSwitch:!0,defaultMode:"light",respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},plugins:["/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/node_modules/docusaurus-lunr-search/src/index.js"],baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/about/-8a9":{"__comp":"1f391b9e","__context":{"plugin":"1cc0006d"},"content":"356a0ac6"},"/blog/-52c":{"__comp":"a6aa9e1f","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"metadata":"b2b675dd"},"/blog/archive/-a4b":{"__comp":"9e4087bc","__context":{"plugin":"336980e2"},"archive":"b2f554cd"},"/blog/first-blog-post/-28d":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post/-a57":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post/-c7e":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"59362658"},"/blog/tags/-4eb":{"__comp":"01a85c17","__context":{"plugin":"336980e2"},"sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/docusaurus/-6a9":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"tag":"a80da1cf","listMetadata":"608ae6a4"},"/blog/tags/facebook/-fa9":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"tag":"031793e1","listMetadata":"096bfee4"},"/blog/tags/hello/-e51":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"tag":"30a24c52","listMetadata":"66406991"},"/blog/tags/hola/-77b":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"tag":"e16015ca","listMetadata":"4c9e35b1"},"/blog/welcome/-c19":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"d9f32620"},"/docs/-c05":{"__comp":"1be78505","__context":{"plugin":"19e5fc73"},"versionMetadata":"935f2afb"},"/docs/-e95":{"__comp":"17896441","content":"62aa0aea"},"/docs/getting_started/-434":{"__comp":"17896441","content":"e05620c0"},"/docs/getting_started/configuration/-889":{"__comp":"17896441","content":"3d0a8e87"},"/docs/getting_started/execute/-9fe":{"__comp":"17896441","content":"f3303be8"},"/docs/getting_started/launch/-cec":{"__comp":"17896441","content":"13a03de4"},"/docs/guides/n+1/-5aa":{"__comp":"17896441","content":"d3291ccc"},"/docs/intro/architecture/-712":{"__comp":"17896441","content":"0658869c"},"/docs/intro/cli/-357":{"__comp":"17896441","content":"5ed9170a"},"/docs/intro/context/-f6c":{"__comp":"17896441","content":"d14cf086"},"/docs/intro/operators/-fca":{"__comp":"17896441","content":"af535492"},"/-01e":{"__comp":"1df93b7f","__context":{"plugin":"1cc0006d"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=7221,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.defc20e4.js.LICENSE.txt b/assets/js/main.2e41dac0.js.LICENSE.txt similarity index 100% rename from assets/js/main.defc20e4.js.LICENSE.txt rename to assets/js/main.2e41dac0.js.LICENSE.txt diff --git a/assets/js/main.defc20e4.js b/assets/js/main.defc20e4.js deleted file mode 100644 index 01bddd88bb..0000000000 --- a/assets/js/main.defc20e4.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.defc20e4.js.LICENSE.txt */ -(self.webpackChunktailcall_run=self.webpackChunktailcall_run||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"031793e1":[()=>n.e(1633).then(n.t.bind(n,2511,19)),"~blog/default/blog-tags-facebook-038.json",2511],"0658869c":[()=>n.e(609).then(n.bind(n,7997)),"@site/docs/intro/architecture.md",7997],"096bfee4":[()=>n.e(7178).then(n.t.bind(n,5010,19)),"~blog/default/blog-tags-facebook-038-list.json",5010],"13a03de4":[()=>n.e(7043).then(n.bind(n,4575)),"@site/docs/getting_started/launch.mdx",4575],17896441:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(7918)]).then(n.bind(n,8945)),"@theme/DocItem",8945],"19e5fc73":[()=>n.e(8545).then(n.t.bind(n,3769,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1cc0006d":[()=>n.e(8270).then(n.t.bind(n,5745,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1f391b9e":[()=>Promise.all([n.e(532),n.e(3473),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"336980e2":[()=>n.e(7345).then(n.t.bind(n,4469,19)),"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"356a0ac6":[()=>n.e(1117).then(n.bind(n,7384)),"@site/src/pages/about.md",7384],"3d0a8e87":[()=>n.e(8902).then(n.bind(n,643)),"@site/docs/getting_started/configuration.mdx",643],"4c9e35b1":[()=>n.e(9035).then(n.t.bind(n,499,19)),"~blog/default/blog-tags-hola-ea2-list.json",499],59362658:[()=>n.e(2267).then(n.bind(n,8642)),"@site/blog/2021-08-01-mdx-blog-post.mdx",8642],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5ed9170a":[()=>n.e(4001).then(n.bind(n,5752)),"@site/docs/intro/cli.md",5752],"608ae6a4":[()=>n.e(6938).then(n.t.bind(n,4545,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",4545],"62aa0aea":[()=>n.e(2800).then(n.bind(n,2940)),"@site/docs/intro/introduction.md",2940],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6875c492":[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"73664a40":[()=>n.e(3514).then(n.bind(n,1976)),"@site/blog/2019-05-29-long-blog-post.md",1976],"7661071f":[()=>n.e(9642).then(n.bind(n,6911)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",6911],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"8717b14a":[()=>n.e(948).then(n.bind(n,3352)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",3352],"925b3f96":[()=>n.e(9003).then(n.bind(n,8856)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",8856],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a80da1cf:[()=>n.e(3205).then(n.t.bind(n,4863,19)),"~blog/default/blog-tags-docusaurus-0e0.json",4863],af535492:[()=>n.e(2591).then(n.bind(n,7673)),"@site/docs/intro/operators.md",7673],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],ba32450a:[()=>n.e(5699).then(n.bind(n,6208)),"@site/docs/getting_started/test.mdx",6208],ccc49370:[()=>Promise.all([n.e(532),n.e(3473),n.e(2403),n.e(6048),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],d14cf086:[()=>n.e(2002).then(n.bind(n,4667)),"@site/docs/intro/context.md",4667],d3291ccc:[()=>n.e(5797).then(n.bind(n,2736)),"@site/docs/guides/n+1.md",2736],d9f32620:[()=>n.e(1914).then(n.bind(n,2900)),"@site/blog/2021-08-26-welcome/index.md",2900],e05620c0:[()=>Promise.all([n.e(532),n.e(3473),n.e(6515)]).then(n.bind(n,2041)),"@site/docs/getting_started/installation.mdx",2041],e16015ca:[()=>n.e(9700).then(n.t.bind(n,5688,19)),"~blog/default/blog-tags-hola-ea2.json",5688],e273c56f:[()=>n.e(2362).then(n.bind(n,1947)),"@site/blog/2019-05-28-first-blog-post.md",1947],f4f34a3a:[()=>n.e(8636).then(n.bind(n,5145)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",5145]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/about/",component:f("/about/","8a9"),exact:!0},{path:"/blog/",component:f("/blog/","52c"),exact:!0},{path:"/blog/archive/",component:f("/blog/archive/","a4b"),exact:!0},{path:"/blog/first-blog-post/",component:f("/blog/first-blog-post/","28d"),exact:!0},{path:"/blog/long-blog-post/",component:f("/blog/long-blog-post/","a57"),exact:!0},{path:"/blog/mdx-blog-post/",component:f("/blog/mdx-blog-post/","c7e"),exact:!0},{path:"/blog/tags/",component:f("/blog/tags/","4eb"),exact:!0},{path:"/blog/tags/docusaurus/",component:f("/blog/tags/docusaurus/","6a9"),exact:!0},{path:"/blog/tags/facebook/",component:f("/blog/tags/facebook/","fa9"),exact:!0},{path:"/blog/tags/hello/",component:f("/blog/tags/hello/","e51"),exact:!0},{path:"/blog/tags/hola/",component:f("/blog/tags/hola/","77b"),exact:!0},{path:"/blog/welcome/",component:f("/blog/welcome/","c19"),exact:!0},{path:"/docs/",component:f("/docs/","e83"),routes:[{path:"/docs/",component:f("/docs/","e95"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/",component:f("/docs/getting_started/","434"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/configuration/",component:f("/docs/getting_started/configuration/","889"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/launch/",component:f("/docs/getting_started/launch/","cec"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/getting_started/test/",component:f("/docs/getting_started/test/","3c1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/guides/n+1/",component:f("/docs/guides/n+1/","5aa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/architecture/",component:f("/docs/intro/architecture/","712"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/cli/",component:f("/docs/intro/cli/","357"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/context/",component:f("/docs/intro/context/","f6c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro/operators/",component:f("/docs/intro/operators/","fca"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","01e"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(6657),n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=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})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,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(_,null),r.createElement(x,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const T=new Map;function 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 N=n(8934),R=n(8940);function L(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),L("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(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?L("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=L("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(O,{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<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{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:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763),G=n(2389);function Z(){const e=(0,G.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(H.Z,null,r.createElement(R.M,null,r.createElement(N.t,null,r.createElement(f,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 a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.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),P(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;P(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.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),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-JEP3QDWT0G"],"anonymizeIP":false,"id":"default"}},"docusaurus-lunr-search":{"default":{"fileNames":{"searchDoc":"search-doc-1699099639045.json","lunrIndex":"lunr-index-1699099639045.json"}}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro/introduction","docs":[{"id":"getting_started/configuration","path":"/docs/getting_started/configuration","sidebar":"tutorialSidebar"},{"id":"getting_started/installation","path":"/docs/getting_started","sidebar":"tutorialSidebar"},{"id":"getting_started/launch","path":"/docs/getting_started/launch","sidebar":"tutorialSidebar"},{"id":"getting_started/test","path":"/docs/getting_started/test","sidebar":"tutorialSidebar"},{"id":"guides/n+1","path":"/docs/guides/n+1","sidebar":"tutorialSidebar"},{"id":"intro/architecture","path":"/docs/intro/architecture","sidebar":"tutorialSidebar"},{"id":"intro/cli","path":"/docs/intro/cli","sidebar":"tutorialSidebar"},{"id":"intro/context","path":"/docs/intro/context","sidebar":"tutorialSidebar"},{"id":"intro/introduction","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"intro/operators","path":"/docs/intro/operators","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/getting_started","label":"getting_started/installation"}}}}],"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":"0.0.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-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","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"},"docusaurus-lunr-search":{"type":"package","name":"docusaurus-lunr-search","version":"3.2.0"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(63);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){let{isNavLink:n,to:f,href:p,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,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=f||p;const _=(0,s.Z)(x),C=x?.replace("pathname://","");let T=void 0!==C?(A=C,v&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const N=(0,a.useRef)(!1),R=n?o.OL:o.rU,L=u.Z.canUseIntersectionObserver,O=(0,a.useRef)(),P=()=>{N.current||null==T||(window.docusaurus.preload(T),N.current=!0)};(0,a.useEffect)((()=>(!L&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{L&&O.current&&O.current.disconnect()})),[O,T,L,_]);const I=T?.startsWith("#")??!1,D=!T||!_||I;return D||g||E.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:S,href:T},x&&!_&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(R,(0,r.Z)({},b,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,L&&e&&_&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),O.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},8084:(e,t,n)=>{"use strict";n.d(t,{OD:()=>o,eZ:()=>i});var r=n(2263),a=n(9935);function o(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,r.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}function i(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=o(e),i=r?.[t];if(!i&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return i}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},4104:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>p,gA:()=>c,_r:()=>s,Jo:()=>m,zh:()=>u,yW:()=>f,gB:()=>d});var r=n(6550),a=n(8084);const o=e=>e.versions.find((e=>e.isLast));function i(e,t){const n=function(e,t){const n=o(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const l={},s=()=>(0,a.OD)("docusaurus-plugin-content-docs")??l,u=e=>(0,a.eZ)("docusaurus-plugin-content-docs",e,{failfast:!0});function c(e){void 0===e&&(e={});const t=s(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function d(e){return u(e).versions}function f(e){const t=u(e);return o(t)}function p(e){const t=u(e),{pathname:n}=(0,r.TH)();return i(t,n)}function m(e){const t=u(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=o(e);return{latestDocSuggestion:i(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6657:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.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"}))}},63:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ht});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){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&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(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:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),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:a="currentColor",strokeWidth:o=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:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(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,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const _={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,a.Z)(_.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:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:T.announcementBarClose}))}var N=n(2961),R=n(2466);var L=n(902),O=n(3102);const P=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,O.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(P.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)(P);if(!e)throw new L.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var 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:o,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"===o?(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,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,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,N.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:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.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:o,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,a.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,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Ae,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,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:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ae,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(8084),ve=n(813),be=n.n(ve);function ye(){const e=(0,s.TH)(),t=(0,s.k6)(),{siteConfig:{baseUrl:n}}=(0,se.Z)(),[a,o]=(0,r.useState)({wordToHighlight:"",isTitleSuggestion:!1,titleText:""});return(0,r.useEffect)((()=>{if(!e.state?.highlightState||0===e.state.highlightState.wordToHighlight.length)return;o(e.state.highlightState);const{highlightState:n,...r}=e.state;t.replace({...e,state:r})}),[e.state?.highlightState,t,e]),(0,r.useEffect)((()=>{if(0===a.wordToHighlight.length)return;const e=document.getElementsByTagName("article")[0]??document.getElementsByTagName("main")[0];if(!e)return;const t=new(be())(e),n={ignoreJoiners:!0};return t.mark(a.wordToHighlight,n),()=>t.unmark(n)}),[a,n]),null}const we=e=>{const t=(0,r.useRef)(!1),o=(0,r.useRef)(null),[i,l]=(0,r.useState)(!1),u=(0,s.k6)(),{siteConfig:c={}}=(0,se.Z)(),d=(c.plugins||[]).find((e=>Array.isArray(e)&&"string"==typeof e[0]&&e[0].includes("docusaurus-lunr-search"))),f=(0,j.Z)(),{baseUrl:p}=c,m=d&&d[1]?.assetUrl||p,h=(0,ge.eZ)("docusaurus-lunr-search"),g=()=>{t.current||(Promise.all([fetch(`${m}${h.fileNames.searchDoc}`).then((e=>e.json())),fetch(`${m}${h.fileNames.lunrIndex}`).then((e=>e.json())),Promise.all([n.e(4611),n.e(5684)]).then(n.bind(n,4734)),Promise.all([n.e(532),n.e(2572)]).then(n.bind(n,2572))]).then((e=>{let[t,n,{default:r}]=e;const{searchDocs:a,options:o}=t;a&&0!==a.length&&(((e,t,n,r)=>{new n({searchDocs:e,searchIndex:t,baseUrl:p,inputSelector:"#search_input_react",handleSelected:(e,t,n)=>{const a=n.url||"/";document.createElement("a").href=a,e.setVal(""),t.target.blur();let o="";if(r.highlightResult)try{const e=(n.text||n.subcategory||n.title).match(new RegExp("<span.+span>\\w*","g"));if(e&&e.length>0){const t=document.createElement("div");t.innerHTML=e[0],o=t.textContent}}catch(i){console.log(i)}u.push(a,{highlightState:{wordToHighlight:o}})}})})(a,n,r,o),l(!0))})),t.current=!0)},v=(0,r.useCallback)((t=>{o.current.contains(t.target)||o.current.focus(),e.handleSearchBarToggle&&e.handleSearchBarToggle(!e.isSearchBarExpanded)}),[e.isSearchBarExpanded]);return f&&g(),r.createElement("div",{className:"navbar__search",key:"search-box"},r.createElement("span",{"aria-label":"expand searchbar",role:"button",className:(0,a.Z)("search-icon",{"search-icon-hidden":e.isSearchBarExpanded}),onClick:v,onKeyDown:v,tabIndex:0}),r.createElement("input",{id:"search_input_react",type:"search",placeholder:i?"Search Ctrl+K":"Loading...","aria-label":"Search",className:(0,a.Z)("navbar__search-input",{"search-bar-expanded":e.isSearchBarExpanded},{"search-bar":!e.isSearchBarExpanded}),onClick:g,onMouseOver:g,onFocus:v,onBlur:v,ref:o,disabled:!i}),r.createElement(ye,null))},ke={searchBox:"searchBox_ZlJk"};function Ee(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ke.searchBox)},t)}var Se=n(4104),xe=n(2802);var _e=n(373);const Ce=e=>e.docs.find((t=>t.id===e.mainDocId));const Te={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],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(fe,(0,l.Z)({},o,{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(Ee,{className:n},r.createElement(we,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Se.Iw)(a),s=(0,xe.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{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:a,...o}=e;const{activeDoc:i}=(0,Se.Iw)(a),s=(0,xe.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,xe.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,Se.Iw)(n),m=(0,Se.gB)(n),{savePreferredVersionName:h}=(0,_e.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ce(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],v=(0,xe.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:Ce(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:b,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:a?()=>!1:void 0}))}};function Ae(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Te[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ne(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ae,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Re(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 Le(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Re,{onClick:()=>t.hide()}),t.content)}function Oe(){const e=(0,N.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(Ne,null),secondaryMenu:r.createElement(Le,null)}):null}const Pe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ie(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function De(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Pe.navbarHideable,!s&&Pe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ie,{onClick:i.toggle}),r.createElement(Oe,null))}var Me=n(8780);const Fe={errorBoundaryError:"errorBoundaryError_a6uf"};function Be(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 je(e){let{error:t}=e;const n=(0,Me.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Fe.errorBoundaryError},n)}class ze extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Ue="right";function $e(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function qe(){const{toggle:e,shown:t}=(0,N.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($e,null))}const He={colorModeToggle:"colorModeToggle_DEke"};function Ge(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(ze,{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(Ae,e)))))}function Ze(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 Ve(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Ue)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(Ze,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(qe,null),r.createElement(W,null),r.createElement(Ge,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ge,{items:a}),r.createElement(Z,{className:He.colorModeToggle}),!o&&r.createElement(Ee,null,r.createElement(we,null)))})}function We(){return r.createElement(De,null,r.createElement(Ve,null))}function Ye(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ke(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(Ye,{item:t}))}function Qe(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(Ke,{key:t,item:e})))))}function Xe(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Qe,{key:t,column:e}))))}function Je(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function et(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Ye,{item:t})}function tt(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(et,{item:e}),t.length!==n+1&&r.createElement(Je,null))))))}function nt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Xe,{columns:t}):r.createElement(tt,{links:t})}var rt=n(941);const at={footerLogoLink:"footerLogoLink_BH7S"};function ot(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(rt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function it(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:at.footerLogoLink,target:t.target},r.createElement(ot,{logo:t})):r.createElement(ot,{logo:t})}function lt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function st(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ut(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(st,{style:o,links:n&&n.length>0&&r.createElement(nt,{links:n}),logo:a&&r.createElement(it,{logo:a}),copyright:t&&r.createElement(lt,{copyright:t})})}const ct=r.memo(ut),dt=(0,L.Qc)([B.S,k.pl,R.OC,_e.L5,i.VC,function(e){let{children:t}=e;return r.createElement(O.n2,null,r.createElement(N.M,null,r.createElement(I,null,t)))}]);function ft(e){let{children:t}=e;return r.createElement(dt,null,t)}function pt(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(Be,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(je,{error:t})))))}const mt={mainWrapper:"mainWrapper_z2l0"};function ht(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(ft,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(We,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,mt.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(pt,e)},t)),!n&&r.createElement(ct,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const 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 f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=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=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.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 p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(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",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(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:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g});var r=n(7294),a=n(4104),o=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()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(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,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(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(p.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)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=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,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.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 f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){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),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.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:()=>f,_F:()=>h,cE:()=>d,hI:()=>k,lO:()=>b,vY:()=>w,oz:()=>y,s1:()=>v});var r=n(7294),a=n(6550),o=n(8790),i=n(4104),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function f(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=f(t);if(e)return e}}}const p=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?p(e.href,t):"category"===e.type&&(p(e.href,t)||m(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function v(){const e=(0,s.V)(),{pathname:t}=(0,a.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),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}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,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\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),a=n(723),o=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,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(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=o(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),a({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),a({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),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.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),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(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 f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),p(o,r,n)}function T(){return Math.random().toString(36).substr(2,x)}var A=m();function N(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(C(e.state))}function L(){P(C(y()))}var O=!1;function P(e){if(O)O=!1,N();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?N({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(O=!0,F(a))}(e)}))}}var I=C(y()),D=[I.key];function M(e){return _+f(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(v,R),o&&window.addEventListener(b,L)):0===B&&(window.removeEventListener(v,R),o&&window.removeEventListener(b,L))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf(U.location.key),u=D.slice(0,s+1);u.push(o.key),D=u,N({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,T(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf(U.location.key);-1!==s&&(D[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function C(){var e=w(x());return v&&(e=c(e,v)),p(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var N=!1,R=null;function L(){var e,t,n=x(),r=y(n);if(n!==r)_(r);else{var a=C(),i=z.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===f(a))return;R=null,function(e){if(N)N=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(f(t));-1===n&&(n=0);var r=D.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,M(a))}(e)}))}}(a)}}var O=x(),P=y(O);O!==P&&_(P);var I=C(),D=[f(I)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(k,L):0===F&&window.removeEventListener(k,L)}var j=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);if(x()!==a){R=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(f(z.location)),i=D.slice(0,o+1);i.push(t),D=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);x()!==a&&(R=t,_(a));var o=D.indexOf(f(z.location));-1!==o&&(D[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=T.appendListener(e);return B(1),function(){B(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=T(l,0,o.length-1),v=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach((function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(a=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach((function(e){e.handled||a.getIframeContents(e.val,(function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(u,c,e,l)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach((function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,(function(){--i<=0&&a()}))};r.iframes?r.waitForIframes(o,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every((function(t){return!r.call(e,t)||(a=!0,!1)})),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(a){n.every((function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach((function(e){i+="|"+t.escapeStr(e)})),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),f=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+f,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}})),a()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}a()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes((function(o){var i=o.value.length;e.forEach((function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,(function(n){return t(n,e,o.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),o,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,(function(e,a){return n.opt.filter(a,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(function(e,t,r,a){return n.opt.filter(e,t,r,a)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,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<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,_=v||b;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,v))||_.index>=e.length)break;var T=_.index,A=_.index+_[0].length,N=S;for(N+=E.value.length;T>=N;)N+=(E=E.next).value.length;if(S=N-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(N<A||"string"==typeof R.value);R=R.next)C++,N+=R.value.length;C--,x=e.slice(S,N),_.index-=S}else if(!(_=o(k,0,x,v)))continue;T=_.index;var L=_[0],O=x.slice(0,T),P=x.slice(T+L.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),u(t,D,C),E=s(t,D,new a(f,g?r.tokenize(L,g):L,y,L)),P&&s(t,E,P),C>1){var M={cause:f+","+m,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,_=60108,C=60114,T=60109,A=60110,N=60112,R=60113,L=60120,O=60115,P=60116,I=60121,D=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),_=j("react.strict_mode"),C=j("react.profiler"),T=j("react.provider"),A=j("react.context"),N=j("react.forward_ref"),R=j("react.suspense"),L=j("react.suspense_list"),O=j("react.memo"),P=j("react.lazy"),I=j("react.block"),j("react.scope"),D=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case C:return"Profiler";case _:return"StrictMode";case R:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case N:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case O:return V(e.type);case I:return V(e._render);case P:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ue(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var Ee=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function _e(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Ne(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Re(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Le(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Ne(e),t)for(e=0;e<t.length;e++)Ne(t[e])}}function Oe(e,t){return e(t)}function Pe(e,t,n,r,a){return e(t,n,r,a)}function Ie(){}var De=Oe,Me=!1,Fe=!1;function Be(){null===Te&&null===Ae||(Ie(),Le())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,He=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},_t={};function Ct(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in _t)return xt[e]=n[t];return e}d&&(_t=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Nt=Ct("animationstart"),Rt=Ct("transitionend"),Lt=new Map,Ot=new Map,Pt=["abort","abort",Tt,"animationEnd",At,"animationIteration",Nt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Rt,"transitionEnd","waiting","waiting"];function It(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Ot.set(r,t),Lt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Dt=8;function Mt(e){if(0!=(1&e))return Dt=15,1;if(0!=(2&e))return Dt=14,2;if(0!=(4&e))return Dt=13,4;var t=24&e;return 0!==t?(Dt=12,t):0!=(32&e)?(Dt=11,32):0!==(t=192&e)?(Dt=10,t):0!=(256&e)?(Dt=9,256):0!==(t=3584&e)?(Dt=8,t):0!=(4096&e)?(Dt=7,4096):0!==(t=4186112&e)?(Dt=6,t):0!==(t=62914560&e)?(Dt=5,t):67108864&e?(Dt=4,67108864):0!=(134217728&e)?(Dt=3,134217728):0!==(t=805306368&e)?(Dt=2,t):0!=(1073741824&e)?(Dt=1,1073741824):(Dt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return Dt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Dt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=Dt):0!==(l&=o)&&(r=Mt(l),a=Dt)}else 0!==(o=n&~i)?(r=Mt(o),a=Dt):0!==l&&(r=Mt(l),a=Dt);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=Dt)return t;Dt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||Ie();var a=Qt,o=Me;Me=!0;try{Pe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Ir(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=_e(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Ir(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),mn=ln(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(hn),vn=ln(a({},hn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},_n={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Tn(){return Cn}var An=a({},pn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Nn=ln(An),Rn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Ln=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),On=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pn=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),In=ln(Pn),Dn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Re(r),0<(t=Mr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,_e(e)),e=Kn,Me)e(t);else{Me=!0;try{Oe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==br||br!==X(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}It("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),It("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),It(Pt,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Ot.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var _r="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(_r));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Tr(a,l,u),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Nr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Pr(t,e,2,!1),n.add(r))}var Rr="_reactListening"+Math.random().toString(36).slice(2);function Lr(e){e[Rr]||(e[Rr]=!0,l.forEach((function(t){Cr.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Pr(o,e,a,t),i.add(l))}function Pr(e,t,n,r){var a=Ot.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return De(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=_e(n),i=[];e:{var l=Lt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Nn;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Ln;break;case Tt:case At:case Nt:s=yn;break;case Rt:s=On;break;case"scroll":s=mn;break;case"wheel":s=In;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Rn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=je(m,f))&&c.push(Dr(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Ye(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Rn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,ta(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Er(i,n,a)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Mr(r,y)).length&&(y=new En(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=qn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Ar(i,t)}))}function Dr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=je(e,n))&&r.unshift(Dr(e,o,a)),null!=(o=je(e,t))&&r.push(Dr(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=je(n,o))&&i.unshift(Dr(n,s,l)):a||null!=(s=je(n,o))&&i.push(Dr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=fa.current,ca(fa,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,_a=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,Na=o.unstable_now,Ra=o.unstable_getCurrentPriorityLevel,La=o.unstable_ImmediatePriority,Oa=o.unstable_UserBlockingPriority,Pa=o.unstable_NormalPriority,Ia=o.unstable_LowPriority,Da=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=Na(),$a=1e4>Ua?Na:function(){return Na()-Ua};function qa(){switch(Ra()){case La:return 99;case Oa:return 98;case Pa:return 97;case Ia:return 96;case Da:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return La;case 98:return Oa;case 97:return Pa;case 96:return Ia;case 95:return Da;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Za(e,t,n){return e=Ha(e),_a(e,t,n)}function Va(){if(null!==ja){var e=ja;ja=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),_a(La,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ua(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),ms(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:fa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:fa.current,a.context=ha(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function _o(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(Eo(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(a,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=_o(!0),To=_o(!1),Ao={},No=sa(Ao),Ro=sa(Ao),Lo=sa(Ao);function Oo(e){if(e===Ao)throw Error(i(174));return e}function Po(e,t){switch(ca(Lo,t),ca(Ro,e),ca(No,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(No),ca(No,t)}function Io(){ua(No),ua(Ro),ua(Lo)}function Do(e){Oo(Lo.current);var t=Oo(No.current),n=pe(t,e.type);t!==n&&(ca(Ro,e),ca(No,n))}function Mo(e){Ro.current===e&&(ua(No),ua(Ro))}var Fo=sa(0);function Bo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jo=null,zo=null,Uo=!1;function $o(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Zo(e){if(e!==jo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=jo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Qo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Oi:Pi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Ii,e=n(r,a)}while(ri)}if(Ko.current=Li,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Pl;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ri.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function mi(e,t,n){return pi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ri.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function _i(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ni(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ri(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}ms(e,a,r)}}var Li={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ri.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:hi,useDebugValue:Ci,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return vi(e=Ni.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Ei,useImperativeHandle:_i,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Di=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:fa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ha(t,u=ga(n)?ma:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||pa.current||io?("function"==typeof p&&(go(t,n,p,r),m=t.memoizedState),(u=io||bo(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Di.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Po(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Fo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Io(),ua(pa),ua(fa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Oo(Lo.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oo(No.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Nr("cancel",r),Nr("close",r);break;case"iframe":case"object":case"embed":Nr("load",r);break;case"video":case"audio":for(e=0;e<_r.length;e++)Nr(_r[e],r);break;case"source":Nr("error",r);break;case"img":case"image":case"link":Nr("error",r),Nr("load",r);break;case"details":Nr("toggle",r);break;case"input":ee(r,l),Nr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Nr("invalid",r);break;case"textarea":se(r,l),Nr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Nr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Nr("cancel",e),Nr("close",e),o=r;break;case"iframe":case"object":case"embed":Nr("load",e),o=r;break;case"video":case"audio":for(o=0;o<_r.length;o++)Nr(_r[o],e);o=r;break;case"source":Nr("error",e),o=r;break;case"img":case"image":case"link":Nr("error",e),Nr("load",e),o=r;break;case"details":Nr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Nr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Nr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Nr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Nr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oo(Lo.current),Oo(No.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ua(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Pl||0==(134217727&Ul)&&0==(134217727&$l)||bs(Pl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Io(),Wi(t),null===e&&Lr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ca(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Io(),ua(pa),ua(fa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Fo),null;case 4:return Io(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Oo(No.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Nr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:_l(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function _l(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),bl(t.child,!0)),void Tl(t);case 19:return void Tl(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function Tl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Nl=Math.ceil,Rl=k.ReactCurrentDispatcher,Ll=k.ReactCurrentOwner,Ol=0,Pl=null,Il=null,Dl=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Ol)?$a():-1!==ls?ls:ls=$a()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Ol)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Pl&&($l|=t,4===Bl&&bs(e,Dl));var r=qa();1===t?0!=(8&Ol)&&0==(48&Ol)?ys(e):(gs(e,n),0===Ol&&(Vl(),Va())):(0==(4&Ol)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=Dt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Pl?Dl:0),t=Dt,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=_a(La,Wa)):Ba.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ol))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Pl?Dl:0);if(0===n)return null;var r=n,a=Ol;Ol|=16;var o=Cs();for(Pl===e&&Dl===r||(Vl(),xs(e,r));;)try{Ns();break}catch(s){_s(e,s)}if(to(),Rl.current=o,Ol=a,null!==Il?r=0:(Pl=null,Dl=0,r=Bl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=Ts(e,n))),1===r)throw t=jl,xs(e,0),bs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Os(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Os.bind(null,e),r);break}Os(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Nl(n/1960))-n)){e.timeoutHandle=Hr(Os.bind(null,e),n);break}Os(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Ol))throw Error(i(327));if(Ds(),e===Pl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=Ts(e,t);0!=(zl&$l)&&(n=Ts(e,t=Ft(e,t)))}else n=Ts(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=Ts(e,t))),1===n)throw n=jl,xs(e,0),bs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Os(e),gs(e,$a()),null}function ws(e,t){var n=Ol;Ol|=1;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}}function ks(e,t){var n=Ol;Ol&=-2,Ol|=8;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}}function Es(e,t){ca(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Io(),ua(pa),ua(fa),Yo();break;case 5:Mo(r);break;case 4:Io();break;case 13:case 19:ua(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Pl=e,Il=Zs(e.current,null),Dl=Ml=zl=t,Bl=0,jl=null,ql=$l=Ul=0}function _s(e,t){for(;;){var n=Il;try{if(to(),Ko.current=Li,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Ll.current=null,null===n||null===n.return){Bl=1,jl=t,Il=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ls(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Cs(){var e=Rl.current;return Rl.current=Li,null===e?Li:e}function Ts(e,t){var n=Ol;Ol|=16;var r=Cs();for(Pl===e&&Dl===t||xs(e,t);;)try{As();break}catch(a){_s(e,a)}if(to(),Ol=n,Rl.current=r,null!==Il)throw Error(i(261));return Pl=null,Dl=0,Bl}function As(){for(;null!==Il;)Rs(Il)}function Ns(){for(;null!==Il&&!Ta();)Rs(Il)}function Rs(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ls(e):Il=t,Ll.current=null}function Ls(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===Bl&&(Bl=5)}function Os(e){var t=qa();return Ga(99,Ps.bind(null,e,t)),null}function Ps(e,t){do{Ds()}while(null!==es);if(0!=(48&Ol))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Pl&&(Il=Pl=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Ol,Ol|=32,Ll.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(C){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===o&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Yl=r;do{try{Is()}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);cs=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&ve(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Yl),Yl.flags&=-3;break;case 6:El(Yl),Yl.flags&=-3,Cl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Cl(Yl.alternate,Yl);break;case 4:Cl(Yl.alternate,Yl);break;case 8:_l(l,s=Yl);var E=s.alternate;wl(s),null!==E&&wl(E)}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=pr(y,E),o=pr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&vl(y,Yl.alternate,Yl),128&S){w=void 0;var x=Yl.ref;if(null!==x){var _=Yl.stateNode;Yl.tag,w=_,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(C){if(null===Yl)throw Error(i(330));zs(Yl,C),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,Fa(),Ol=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(C){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Ol)||Va(),null}function Is(){for(;null!==Yl;){var e=Yl.alternate;ds||null===cs||(0!=(8&Yl.flags)?Je(Yl,cs)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,cs)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Ds(),null}))),Yl=Yl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Ds(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ol))throw Error(i(331));var t=Ol;Ol|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Ol=t,Va(),!0}function js(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Pl===e&&(Dl&n)===n&&(4===Bl||3===Bl&&(62914560&Dl)===Dl&&500>$a()-Gl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case _:l=8,a|=1;break;case C:return(e=Hs(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case R:return(e=Hs(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case L:return(e=Hs(19,n,t,a)).elementType=L,e.lanes=o,e;case F:return Ys(n,a,o,t);case B:return(e=Hs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:l=10;break e;case A:l=9;break e;case N:l=11;break e;case O:l=14;break e;case P:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),ms(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Lr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Do(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Po(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===N)return 11;if(e===O)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Vo();t=t.child}return t;case 5:return Do(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Po(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),ji(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Oe=ws,Pe=function(e,t,n,r,a){var o=Ol;Ol|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Ol=o)&&(Vl(),Va())}},Ie=function(){0==(49&Ol)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Ds())},De=function(e,t){var n=Ol;Ol|=2;try{return e(t)}finally{0===(Ol=n)&&(Vl(),Va())}};var lu={Events:[na,ra,aa,Re,Le,Ds,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(he){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},O=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},P=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=L(e.metaTags,y),o=L(t,v),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,c,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,f,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(c,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):j&&(a=j(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(O(this.props,"helmetData"),O(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,o.createElement(a,h)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,_=e.innerRef,C=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,T=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:h,sensitive:k,strict:E}):null,N=!!(y?y(A,n):A),R="function"==typeof m?m(N):m,L="function"==typeof S?S(N):S;N&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,c),L=(0,l.Z)({},L,p));var O=(0,l.Z)({"aria-current":N&&a||null,className:R,style:L,to:i},C);return v!==b?O.ref=t||_:O.innerRef=_,o.createElement(g,O)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>S,TH:()=>P,k6:()=>O,rs:()=>R,s6:()=>b});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),u=n(7462),c=n(4779),d=n.n(c),f=(n(9864),n(3366)),p=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function N(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var L=a.useContext;function O(){return L(v)}function P(){return L(b).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var _=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+C(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(_,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+C(l=e[u],u);s+=T(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=T(l=l.value,t,n,c=r+C(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function N(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var R={current:null};function L(){var e=R.current;if(null===e)throw Error(p(321));return e}var O={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:N}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return L().useCallback(e,t)},t.useContext=function(e,t){return L().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return L().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return L().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return L().useLayoutEffect(e,t)},t.useMemo=function(e,t){return L().useMemo(e,t)},t.useReducer=function(e,t,n){return L().useReducer(e,t,n)},t.useRef=function(e){return L().useRef(e)},t.useState=function(e){return L().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<_(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>_(i,n))void 0!==s&&0>_(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>_(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function _(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,N=null,R=3,L=!1,O=!1,P=!1;function I(e){for(var t=S(T);null!==t;){if(null===t.callback)x(T);else{if(!(t.startTime<=e))break;x(T),t.sortIndex=t.expirationTime,E(C,t)}t=S(T)}}function D(e){if(P=!1,I(e),!O)if(null!==S(C))O=!0,n(M);else{var t=S(T);null!==t&&r(D,t.startTime-e)}}function M(e,n){O=!1,P&&(P=!1,a()),L=!0;var o=R;try{for(I(n),N=S(C);null!==N&&(!(N.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=N.callback;if("function"==typeof i){N.callback=null,R=N.priorityLevel;var l=i(N.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?N.callback=l:N===S(C)&&x(C),I(n)}else x(C);N=S(C)}if(null!==N)var s=!0;else{var u=S(T);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{N=null,R=o,L=!1}}var F=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){O||L||(O=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(C)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(T,e),null===S(C)&&e===S(T)&&(P?a():P=!0,r(D,i-l))):(e.sortIndex=s,E(C,e),O||L||(O=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Tailcall",trailingSlash:!0,tagline:"<tagline>",url:"https://tailcall.run",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.ico",organizationName:"tailcallhq",projectName:"tailcallhq.github.io",deploymentBranch:"main",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{gtag:{trackingID:"G-JEP3QDWT0G",anonymizeIP:!1},docs:{sidebarPath:"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/sidebars.js",sidebarCollapsible:!1,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop"},blog:{showReadingTime:!0,editUrl:"https://github.com/tailcallhq/tailcallhq.github.io/tree/develop"},theme:{customCss:"/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/src/css/custom.css"},sitemap:{changefreq:"weekly",priority:.5,ignorePatterns:["/blog/**","/docs/**"]}}]],themeConfig:{navbar:{title:"Tailcall",hideOnScroll:!1,logo:{alt:"Tailcall Logo",src:"img/logo-light.svg"},items:[{to:"/about",label:"About",position:"right"},{to:"https://github.com/tailcallhq/graphql-benchmarks#benchmark-results",label:"Performance",position:"right"},{to:"/docs",label:"Docs",position:"right"},{to:"https://blog.tailcall.run",label:"Blog",position:"right"},{label:"Discord",position:"right",to:"https://discord.gg/Q2ZExpFCnA"}]},footer:{style:"dark",links:[{title:"Docs",items:[{to:"/docs/getting_started",label:"Introduction"},{to:"/docs/getting_started/",label:"Installation"}]},{title:"Community",items:[{label:"Github",to:"https://github.com/tailcallhq/tailcall"},{to:"https://blog.tailcall.run",label:"Blog",position:"right"},{label:"Discord",to:"https://discord.gg/Q2ZExpFCnA"}]},{title:"More",items:[{to:"/about",label:"About"},{label:"Linkedin",to:"https://www.linkedin.com/company/tailcall"},{label:"Twitter",to:"https://twitter.com/tailcallhq"},{label:"hi@tailcall.run",to:"mailto:hi@tailcall.run"}]}],copyright:"Copyright \xa9 2023 Tailcall, Inc. "},prism:{theme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},showLineNumbers:!0,additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{disableSwitch:!0,defaultMode:"light",respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},plugins:["/home/runner/work/tailcallhq.github.io/tailcallhq.github.io/node_modules/docusaurus-lunr-search/src/index.js"],baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/about/-8a9":{"__comp":"1f391b9e","__context":{"plugin":"1cc0006d"},"content":"356a0ac6"},"/blog/-52c":{"__comp":"a6aa9e1f","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"metadata":"b2b675dd"},"/blog/archive/-a4b":{"__comp":"9e4087bc","__context":{"plugin":"336980e2"},"archive":"b2f554cd"},"/blog/first-blog-post/-28d":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post/-a57":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post/-c7e":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"59362658"},"/blog/tags/-4eb":{"__comp":"01a85c17","__context":{"plugin":"336980e2"},"sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/docusaurus/-6a9":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"tag":"a80da1cf","listMetadata":"608ae6a4"},"/blog/tags/facebook/-fa9":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"tag":"031793e1","listMetadata":"096bfee4"},"/blog/tags/hello/-e51":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"tag":"30a24c52","listMetadata":"66406991"},"/blog/tags/hola/-77b":{"__comp":"6875c492","__context":{"plugin":"336980e2"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"tag":"e16015ca","listMetadata":"4c9e35b1"},"/blog/welcome/-c19":{"__comp":"ccc49370","__context":{"plugin":"336980e2"},"sidebar":"814f3328","content":"d9f32620"},"/docs/-e83":{"__comp":"1be78505","__context":{"plugin":"19e5fc73"},"versionMetadata":"935f2afb"},"/docs/-e95":{"__comp":"17896441","content":"62aa0aea"},"/docs/getting_started/-434":{"__comp":"17896441","content":"e05620c0"},"/docs/getting_started/configuration/-889":{"__comp":"17896441","content":"3d0a8e87"},"/docs/getting_started/launch/-cec":{"__comp":"17896441","content":"13a03de4"},"/docs/getting_started/test/-3c1":{"__comp":"17896441","content":"ba32450a"},"/docs/guides/n+1/-5aa":{"__comp":"17896441","content":"d3291ccc"},"/docs/intro/architecture/-712":{"__comp":"17896441","content":"0658869c"},"/docs/intro/cli/-357":{"__comp":"17896441","content":"5ed9170a"},"/docs/intro/context/-f6c":{"__comp":"17896441","content":"d14cf086"},"/docs/intro/operators/-fca":{"__comp":"17896441","content":"af535492"},"/-01e":{"__comp":"1df93b7f","__context":{"plugin":"1cc0006d"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=7221,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~main.5885dc59.js b/assets/js/runtime~main.db14dabc.js similarity index 89% rename from assets/js/runtime~main.5885dc59.js rename to assets/js/runtime~main.db14dabc.js index 20bd40b6bf..54b061d01b 100644 --- a/assets/js/runtime~main.5885dc59.js +++ b/assets/js/runtime~main.db14dabc.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,r,c,f={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={id:e,loaded:!1,exports:{}};return f[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}o.m=f,o.c=d,e=[],o.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],c=e[i][2];for(var d=!0,n=0;n<t.length;n++)(!1&c||f>=c)&&Object.keys(o.O).every((e=>o.O[e](t[n])))?t.splice(n--,1):(d=!1,c<f&&(f=c));if(d){e.splice(i--,1);var b=r();void 0!==b&&(a=b)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);o.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,o.d(c,f),c},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({53:"935f2afb",110:"66406991",453:"30a24c52",533:"b2b675dd",609:"0658869c",948:"8717b14a",1117:"356a0ac6",1477:"b2f554cd",1633:"031793e1",1713:"a7023ddc",1914:"d9f32620",2002:"d14cf086",2267:"59362658",2362:"e273c56f",2535:"814f3328",2591:"af535492",2800:"62aa0aea",3085:"1f391b9e",3089:"a6aa9e1f",3205:"a80da1cf",3237:"1df93b7f",3514:"73664a40",3608:"9e4087bc",4001:"5ed9170a",4013:"01a85c17",5699:"ba32450a",5797:"d3291ccc",6103:"ccc49370",6515:"e05620c0",6938:"608ae6a4",7043:"13a03de4",7178:"096bfee4",7345:"336980e2",7918:"17896441",8270:"1cc0006d",8545:"19e5fc73",8610:"6875c492",8636:"f4f34a3a",8902:"3d0a8e87",9003:"925b3f96",9035:"4c9e35b1",9514:"1be78505",9642:"7661071f",9700:"e16015ca"}[e]||e)+"."+{53:"929dad16",110:"554964b3",453:"9ccc79ab",533:"bf681b02",609:"5a530e1c",948:"ffc19771",1117:"343e3cc4",1477:"7e70ce49",1633:"7939d5cb",1713:"d7835f54",1914:"99b57007",2002:"7611423c",2267:"aa7bd848",2362:"92660d5d",2403:"34a008e0",2535:"666ea989",2572:"67e83e77",2591:"0c425e8a",2800:"8d3d5e09",3085:"03034ee2",3089:"daa8d059",3205:"c77a5817",3237:"bca59849",3473:"f1d08bc9",3514:"7d96c658",3608:"923e9162",4001:"99ae15ee",4013:"5d970f62",4611:"7a6bc4b0",4972:"f2ab011f",5684:"12117751",5699:"a3cab0a8",5797:"d5a755b2",6048:"513ffdeb",6103:"3ec1d5c4",6515:"a42ef087",6938:"50e8d705",7043:"257092a0",7178:"27ab5ce1",7345:"71f44fdd",7918:"3d8813e2",8270:"aa7a6e87",8545:"f907b196",8610:"65b0ab23",8636:"b15d879f",8902:"f837ad5e",9003:"ddba5e0b",9035:"136be898",9514:"655492fa",9642:"809d9324",9700:"d964a0b7"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="tailcall.run:",o.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var d,n;if(void 0!==t)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var l=b[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==c+t){d=l;break}}d||(n=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,o.nc&&d.setAttribute("nonce",o.nc),d.setAttribute("data-webpack",c+t),d.src=e),r[e]=[a];var u=(a,t)=>{d.onerror=d.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),n&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918",59362658:"2267",66406991:"110","935f2afb":"53","30a24c52":"453",b2b675dd:"533","0658869c":"609","8717b14a":"948","356a0ac6":"1117",b2f554cd:"1477","031793e1":"1633",a7023ddc:"1713",d9f32620:"1914",d14cf086:"2002",e273c56f:"2362","814f3328":"2535",af535492:"2591","62aa0aea":"2800","1f391b9e":"3085",a6aa9e1f:"3089",a80da1cf:"3205","1df93b7f":"3237","73664a40":"3514","9e4087bc":"3608","5ed9170a":"4001","01a85c17":"4013",ba32450a:"5699",d3291ccc:"5797",ccc49370:"6103",e05620c0:"6515","608ae6a4":"6938","13a03de4":"7043","096bfee4":"7178","336980e2":"7345","1cc0006d":"8270","19e5fc73":"8545","6875c492":"8610",f4f34a3a:"8636","3d0a8e87":"8902","925b3f96":"9003","4c9e35b1":"9035","1be78505":"9514","7661071f":"9642",e16015ca:"9700"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=o.p+o.u(a),d=new Error;o.l(f,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;d.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",d.name="ChunkLoadError",d.type=c,d.request=f,r[1](d)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],d=t[1],n=t[2],b=0;if(f.some((a=>0!==e[a]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(n)var i=n(o)}for(a&&a(t);b<f.length;b++)c=f[b],o.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return o.O(i)},t=self.webpackChunktailcall_run=self.webpackChunktailcall_run||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file +(()=>{"use strict";var e,a,t,r,c,f={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={id:e,loaded:!1,exports:{}};return f[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}o.m=f,o.c=d,e=[],o.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],c=e[i][2];for(var d=!0,n=0;n<t.length;n++)(!1&c||f>=c)&&Object.keys(o.O).every((e=>o.O[e](t[n])))?t.splice(n--,1):(d=!1,c<f&&(f=c));if(d){e.splice(i--,1);var b=r();void 0!==b&&(a=b)}}return a}c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);o.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,o.d(c,f),c},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({53:"935f2afb",110:"66406991",453:"30a24c52",533:"b2b675dd",609:"0658869c",948:"8717b14a",1117:"356a0ac6",1477:"b2f554cd",1633:"031793e1",1713:"a7023ddc",1914:"d9f32620",2002:"d14cf086",2267:"59362658",2362:"e273c56f",2535:"814f3328",2591:"af535492",2800:"62aa0aea",3085:"1f391b9e",3089:"a6aa9e1f",3205:"a80da1cf",3237:"1df93b7f",3514:"73664a40",3608:"9e4087bc",4001:"5ed9170a",4013:"01a85c17",4534:"f3303be8",5797:"d3291ccc",6103:"ccc49370",6515:"e05620c0",6938:"608ae6a4",7043:"13a03de4",7178:"096bfee4",7345:"336980e2",7918:"17896441",8270:"1cc0006d",8545:"19e5fc73",8610:"6875c492",8636:"f4f34a3a",8902:"3d0a8e87",9003:"925b3f96",9035:"4c9e35b1",9514:"1be78505",9642:"7661071f",9700:"e16015ca"}[e]||e)+"."+{53:"2ed9f8e7",110:"554964b3",453:"9ccc79ab",533:"bf681b02",609:"5a530e1c",948:"ffc19771",1117:"343e3cc4",1477:"7e70ce49",1633:"7939d5cb",1713:"d7835f54",1914:"99b57007",2002:"7611423c",2267:"aa7bd848",2362:"92660d5d",2403:"34a008e0",2535:"666ea989",2572:"67e83e77",2591:"0c425e8a",2800:"bba9e36d",3085:"03034ee2",3089:"daa8d059",3205:"c77a5817",3237:"bca59849",3473:"f1d08bc9",3514:"7d96c658",3608:"923e9162",4001:"99ae15ee",4013:"5d970f62",4534:"9a07832a",4611:"7a6bc4b0",4972:"f2ab011f",5684:"12117751",5797:"d5a755b2",6048:"513ffdeb",6103:"3ec1d5c4",6515:"984f2140",6938:"50e8d705",7043:"4e070df6",7178:"27ab5ce1",7345:"71f44fdd",7918:"3d8813e2",8270:"aa7a6e87",8545:"f907b196",8610:"65b0ab23",8636:"b15d879f",8902:"f837ad5e",9003:"ddba5e0b",9035:"136be898",9514:"655492fa",9642:"809d9324",9700:"d964a0b7"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="tailcall.run:",o.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var d,n;if(void 0!==t)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var l=b[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==c+t){d=l;break}}d||(n=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,o.nc&&d.setAttribute("nonce",o.nc),d.setAttribute("data-webpack",c+t),d.src=e),r[e]=[a];var u=(a,t)=>{d.onerror=d.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),n&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/",o.gca=function(e){return e={17896441:"7918",59362658:"2267",66406991:"110","935f2afb":"53","30a24c52":"453",b2b675dd:"533","0658869c":"609","8717b14a":"948","356a0ac6":"1117",b2f554cd:"1477","031793e1":"1633",a7023ddc:"1713",d9f32620:"1914",d14cf086:"2002",e273c56f:"2362","814f3328":"2535",af535492:"2591","62aa0aea":"2800","1f391b9e":"3085",a6aa9e1f:"3089",a80da1cf:"3205","1df93b7f":"3237","73664a40":"3514","9e4087bc":"3608","5ed9170a":"4001","01a85c17":"4013",f3303be8:"4534",d3291ccc:"5797",ccc49370:"6103",e05620c0:"6515","608ae6a4":"6938","13a03de4":"7043","096bfee4":"7178","336980e2":"7345","1cc0006d":"8270","19e5fc73":"8545","6875c492":"8610",f4f34a3a:"8636","3d0a8e87":"8902","925b3f96":"9003","4c9e35b1":"9035","1be78505":"9514","7661071f":"9642",e16015ca:"9700"}[e]||e,o.p+o.u(e)},(()=>{var e={1303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=o.p+o.u(a),d=new Error;o.l(f,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;d.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",d.name="ChunkLoadError",d.type=c,d.request=f,r[1](d)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],d=t[1],n=t[2],b=0;if(f.some((a=>0!==e[a]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(n)var i=n(o)}for(a&&a(t);b<f.length;b++)c=f[b],o.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return o.O(i)},t=self.webpackChunktailcall_run=self.webpackChunktailcall_run||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html index 5ef0eb6247..04897f2a09 100644 --- a/blog/archive/index.html +++ b/blog/archive/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary"><div class="container"><h1 class="hero__title">Archive</h1><p class="hero__subtitle">Archive</p></div></header><main><section class="margin-vert--lg"><div class="container"><div class="row"><div class="col col--4 margin-vert--lg"><h3>2019</h3><ul><li><a href="/blog/long-blog-post/">May 29, 2019<!-- --> - <!-- -->Long Blog Post</a></li><li><a href="/blog/first-blog-post/">May 28, 2019<!-- --> - <!-- -->First Blog Post</a></li></ul></div><div class="col col--4 margin-vert--lg"><h3>2021</h3><ul><li><a href="/blog/welcome/">August 26, 2021<!-- --> - <!-- -->Welcome</a></li><li><a href="/blog/mdx-blog-post/">August 1, 2021<!-- --> - <!-- -->MDX Blog Post</a></li></ul></div></div></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/first-blog-post/index.html b/blog/first-blog-post/index.html index be8dd36ef8..0cd7cdb37a 100644 --- a/blog/first-blog-post/index.html +++ b/blog/first-blog-post/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a aria-current="page" class="sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"><header><h1 class="title_f1Hy" itemprop="headline">First Blog Post</h1><div class="container_mt6G margin-vert--md"><time datetime="2019-05-28T00:00:00.000Z" itemprop="datePublished">May 28, 2019</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/wgao19.png" alt="Gao Wei" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Gao Wei</span></a></div><small class="avatar__subtitle" itemprop="description">Docusaurus Core Team</small></div></div></div></div></header><div id="__blog-post-container" class="markdown" itemprop="articleBody"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hola/">hola</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/blog/2019-05-28-first-blog-post.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/long-blog-post/"><div class="pagination-nav__sublabel">Newer Post</div><div class="pagination-nav__label">Long Blog Post</div></a></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 48a7bbb2c9..cdd40da241 100644 --- a/blog/index.html +++ b/blog/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Docusaurus blogging features are powered by the blog plugin."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome/">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-26T00:00:00.000Z" itemprop="datePublished">August 26, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer">blog plugin</a>.</p><p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p><p>Regular blog authors can be added to <code>authors.yml</code>.</p><p>The blog post date can be extracted from filenames, such as:</p><ul><li><code>2019-05-30-welcome.md</code></li><li><code>2019-05-30-welcome/index.md</code></li></ul><p>A blog post folder can be convenient to co-locate blog post images:</p><p><img loading="lazy" alt="Docusaurus Plushie" src="/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p><p>The blog supports tags as well!</p><p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/facebook/">facebook</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Blog posts support Docusaurus Markdown features, such as MDX."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/mdx-blog-post/">MDX Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-01T00:00:00.000Z" itemprop="datePublished">August 1, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Blog posts support <a href="https://docusaurus.io/docs/markdown-features" target="_blank" rel="noopener noreferrer">Docusaurus Markdown features</a>, such as <a href="https://mdxjs.com/" target="_blank" rel="noopener noreferrer">MDX</a>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Use the power of React to create interactive blog posts.</p><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">button onClick</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:rgb(212, 212, 212)">=></span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">alert</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">"button clicked!"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token maybe-class-name">Click</span><span class="token plain"> me</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token operator" style="color:rgb(212, 212, 212)">/</span><span class="token plain">button</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><button>Click me!</button></div></div></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="This is the summary of a very long blog post,"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/long-blog-post/">Long Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-29T00:00:00.000Z" itemprop="datePublished">May 29, 2019</time> · <!-- -->3 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>This is the summary of a very long blog post,</p><p>Use a <code><!--</code> <code>truncate</code> <code>--></code> comment to limit blog post size in the list view.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Long Blog Post" href="/blog/long-blog-post/"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/first-blog-post/">First Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-28T00:00:00.000Z" itemprop="datePublished">May 28, 2019</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/wgao19.png" alt="Gao Wei" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Gao Wei</span></a></div><small class="avatar__subtitle" itemprop="description">Docusaurus Core Team</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hola/">hola</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/long-blog-post/index.html b/blog/long-blog-post/index.html index fb071a22b3..b8c013a430 100644 --- a/blog/long-blog-post/index.html +++ b/blog/long-blog-post/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a aria-current="page" class="sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="This is the summary of a very long blog post,"><header><h1 class="title_f1Hy" itemprop="headline">Long Blog Post</h1><div class="container_mt6G margin-vert--md"><time datetime="2019-05-29T00:00:00.000Z" itemprop="datePublished">May 29, 2019</time> · <!-- -->3 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div id="__blog-post-container" class="markdown" itemprop="articleBody"><p>This is the summary of a very long blog post,</p><p>Use a <code><!--</code> <code>truncate</code> <code>--></code> comment to limit blog post size in the list view.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/blog/2019-05-29-long-blog-post.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/mdx-blog-post/"><div class="pagination-nav__sublabel">Newer Post</div><div class="pagination-nav__label">MDX Blog Post</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/blog/first-blog-post/"><div class="pagination-nav__sublabel">Older Post</div><div class="pagination-nav__label">First Blog Post</div></a></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/mdx-blog-post/index.html b/blog/mdx-blog-post/index.html index 52a77e1dec..5164a1e9cf 100644 --- a/blog/mdx-blog-post/index.html +++ b/blog/mdx-blog-post/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a aria-current="page" class="sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Blog posts support Docusaurus Markdown features, such as MDX."><header><h1 class="title_f1Hy" itemprop="headline">MDX Blog Post</h1><div class="container_mt6G margin-vert--md"><time datetime="2021-08-01T00:00:00.000Z" itemprop="datePublished">August 1, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div id="__blog-post-container" class="markdown" itemprop="articleBody"><p>Blog posts support <a href="https://docusaurus.io/docs/markdown-features" target="_blank" rel="noopener noreferrer">Docusaurus Markdown features</a>, such as <a href="https://mdxjs.com/" target="_blank" rel="noopener noreferrer">MDX</a>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Use the power of React to create interactive blog posts.</p><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">button onClick</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:rgb(212, 212, 212)">=></span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">alert</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">"button clicked!"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token maybe-class-name">Click</span><span class="token plain"> me</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token operator" style="color:rgb(212, 212, 212)">/</span><span class="token plain">button</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><button>Click me!</button></div></div></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/blog/2021-08-01-mdx-blog-post.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/welcome/"><div class="pagination-nav__sublabel">Newer Post</div><div class="pagination-nav__label">Welcome</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/blog/long-blog-post/"><div class="pagination-nav__sublabel">Older Post</div><div class="pagination-nav__label">Long Blog Post</div></a></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/tags/docusaurus/index.html b/blog/tags/docusaurus/index.html index 217976dacd..3f37d04462 100644 --- a/blog/tags/docusaurus/index.html +++ b/blog/tags/docusaurus/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><header class="margin-bottom--xl"><h1>4 posts tagged with "docusaurus"</h1><a href="/blog/tags/">View All Tags</a></header><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Docusaurus blogging features are powered by the blog plugin."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome/">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-26T00:00:00.000Z" itemprop="datePublished">August 26, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer">blog plugin</a>.</p><p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p><p>Regular blog authors can be added to <code>authors.yml</code>.</p><p>The blog post date can be extracted from filenames, such as:</p><ul><li><code>2019-05-30-welcome.md</code></li><li><code>2019-05-30-welcome/index.md</code></li></ul><p>A blog post folder can be convenient to co-locate blog post images:</p><p><img loading="lazy" alt="Docusaurus Plushie" src="/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p><p>The blog supports tags as well!</p><p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/facebook/">facebook</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Blog posts support Docusaurus Markdown features, such as MDX."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/mdx-blog-post/">MDX Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-01T00:00:00.000Z" itemprop="datePublished">August 1, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Blog posts support <a href="https://docusaurus.io/docs/markdown-features" target="_blank" rel="noopener noreferrer">Docusaurus Markdown features</a>, such as <a href="https://mdxjs.com/" target="_blank" rel="noopener noreferrer">MDX</a>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Use the power of React to create interactive blog posts.</p><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">button onClick</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:rgb(212, 212, 212)">=></span><span class="token plain"> </span><span class="token function" style="color:rgb(220, 220, 170)">alert</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token string" style="color:rgb(206, 145, 120)">"button clicked!"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token maybe-class-name">Click</span><span class="token plain"> me</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token operator" style="color:rgb(212, 212, 212)">/</span><span class="token plain">button</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><button>Click me!</button></div></div></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="This is the summary of a very long blog post,"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/long-blog-post/">Long Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-29T00:00:00.000Z" itemprop="datePublished">May 29, 2019</time> · <!-- -->3 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>This is the summary of a very long blog post,</p><p>Use a <code><!--</code> <code>truncate</code> <code>--></code> comment to limit blog post size in the list view.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Long Blog Post" href="/blog/long-blog-post/"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/first-blog-post/">First Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-28T00:00:00.000Z" itemprop="datePublished">May 28, 2019</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/wgao19.png" alt="Gao Wei" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Gao Wei</span></a></div><small class="avatar__subtitle" itemprop="description">Docusaurus Core Team</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hola/">hola</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/tags/facebook/index.html b/blog/tags/facebook/index.html index 8d849388cb..45b97ef0f1 100644 --- a/blog/tags/facebook/index.html +++ b/blog/tags/facebook/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><header class="margin-bottom--xl"><h1>One post tagged with "facebook"</h1><a href="/blog/tags/">View All Tags</a></header><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Docusaurus blogging features are powered by the blog plugin."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome/">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-26T00:00:00.000Z" itemprop="datePublished">August 26, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer">blog plugin</a>.</p><p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p><p>Regular blog authors can be added to <code>authors.yml</code>.</p><p>The blog post date can be extracted from filenames, such as:</p><ul><li><code>2019-05-30-welcome.md</code></li><li><code>2019-05-30-welcome/index.md</code></li></ul><p>A blog post folder can be convenient to co-locate blog post images:</p><p><img loading="lazy" alt="Docusaurus Plushie" src="/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p><p>The blog supports tags as well!</p><p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/facebook/">facebook</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/tags/hello/index.html b/blog/tags/hello/index.html index f1f0d79f21..7cd2022ae9 100644 --- a/blog/tags/hello/index.html +++ b/blog/tags/hello/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><header class="margin-bottom--xl"><h1>2 posts tagged with "hello"</h1><a href="/blog/tags/">View All Tags</a></header><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Docusaurus blogging features are powered by the blog plugin."><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/welcome/">Welcome</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-08-26T00:00:00.000Z" itemprop="datePublished">August 26, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer">blog plugin</a>.</p><p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p><p>Regular blog authors can be added to <code>authors.yml</code>.</p><p>The blog post date can be extracted from filenames, such as:</p><ul><li><code>2019-05-30-welcome.md</code></li><li><code>2019-05-30-welcome/index.md</code></li></ul><p>A blog post folder can be convenient to co-locate blog post images:</p><p><img loading="lazy" alt="Docusaurus Plushie" src="/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p><p>The blog supports tags as well!</p><p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/facebook/">facebook</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="This is the summary of a very long blog post,"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/long-blog-post/">Long Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-29T00:00:00.000Z" itemprop="datePublished">May 29, 2019</time> · <!-- -->3 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>This is the summary of a very long blog post,</p><p>Use a <code><!--</code> <code>truncate</code> <code>--></code> comment to limit blog post size in the list view.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col text--right col--3"><a aria-label="Read more about Long Blog Post" href="/blog/long-blog-post/"><b>Read More</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/tags/hola/index.html b/blog/tags/hola/index.html index 6960aeaa08..8622475125 100644 --- a/blog/tags/hola/index.html +++ b/blog/tags/hola/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><header class="margin-bottom--xl"><h1>One post tagged with "hola"</h1><a href="/blog/tags/">View All Tags</a></header><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/first-blog-post/">First Blog Post</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2019-05-28T00:00:00.000Z" itemprop="datePublished">May 28, 2019</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/wgao19.png" alt="Gao Wei" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/wgao19" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Gao Wei</span></a></div><small class="avatar__subtitle" itemprop="description">Docusaurus Core Team</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hola/">hola</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index 4e3bddc9d0..efcc66e401 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><h1>Tags</h1><section class="margin-vert--lg"><article><h2>D</h2><ul class="padding--none"><li class="tag_Nnez"><a class="tag_zVej tagWithCount_h2kH" href="/blog/tags/docusaurus/">docusaurus<span>4</span></a></li></ul><hr></article><article><h2>F</h2><ul class="padding--none"><li class="tag_Nnez"><a class="tag_zVej tagWithCount_h2kH" href="/blog/tags/facebook/">facebook<span>1</span></a></li></ul><hr></article><article><h2>H</h2><ul class="padding--none"><li class="tag_Nnez"><a class="tag_zVej tagWithCount_h2kH" href="/blog/tags/hello/">hello<span>2</span></a></li><li class="tag_Nnez"><a class="tag_zVej tagWithCount_h2kH" href="/blog/tags/hola/">hola<span>1</span></a></li></ul><hr></article></section></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/blog/welcome/index.html b/blog/welcome/index.html index a5b66df65c..d6fe8653c3 100644 --- a/blog/welcome/index.html +++ b/blog/welcome/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a aria-current="page" class="sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP" href="/blog/welcome/">Welcome</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/mdx-blog-post/">MDX Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/long-blog-post/">Long Blog Post</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/first-blog-post/">First Blog Post</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><meta itemprop="description" content="Docusaurus blogging features are powered by the blog plugin."><header><h1 class="title_f1Hy" itemprop="headline">Welcome</h1><div class="container_mt6G margin-vert--md"><time datetime="2021-08-26T00:00:00.000Z" itemprop="datePublished">August 26, 2021</time> · <!-- -->One min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/tusharmath.png" alt="Tushar Mathur" itemprop="image"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/tusharmath" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Tushar Mathur</span></a></div><small class="avatar__subtitle" itemprop="description">CEO and First Engineer</small></div></div></div></div></header><div id="__blog-post-container" class="markdown" itemprop="articleBody"><p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer">blog plugin</a>.</p><p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p><p>Regular blog authors can be added to <code>authors.yml</code>.</p><p>The blog post date can be extracted from filenames, such as:</p><ul><li><code>2019-05-30-welcome.md</code></li><li><code>2019-05-30-welcome/index.md</code></li></ul><p>A blog post folder can be convenient to co-locate blog post images:</p><p><img loading="lazy" alt="Docusaurus Plushie" src="/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p><p>The blog supports tags as well!</p><p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/facebook/">facebook</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/hello/">hello</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/docusaurus/">docusaurus</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/blog/2021-08-26-welcome/index.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/blog/mdx-blog-post/"><div class="pagination-nav__sublabel">Older Post</div><div class="pagination-nav__label">MDX Blog Post</div></a></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/getting_started/configuration/index.html b/docs/getting_started/configuration/index.html index 29f3f79874..af5f4f42a0 100644 --- a/docs/getting_started/configuration/index.html +++ b/docs/getting_started/configuration/index.html @@ -10,14 +10,14 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Configuration</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Configuration</h1></header><p>For our first example, we are going to compose a GraphQL schema from the REST APIs at <a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer"><a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer">https://jsonplaceholder.typicode.com</a></a>, a free online REST API with some fake data. +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Configuration</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Configuration</h1></header><p>For our first example, we are going to compose a GraphQL schema from the REST APIs at <a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer"><a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer">https://jsonplaceholder.typicode.com</a></a>, a free online REST API with some fake data. We will use the API at <code>/users</code> to get a list of users, and <code>/users/:id/posts</code> to get the posts for each user, and compose them into a single GraphQL schema.</p><p>Create a file called <code>jsonplaceholder.graphql</code> and paste the following contents into it.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token comment" style="color:rgb(106, 153, 85)"># Specify a base url for all http requests</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Specify the http path for the users query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">users</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Create a user type with the fields returned by the users api</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">username</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Extend the user type with the posts field</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Use the current user's id to construct the path</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">posts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{value.id}}/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token comment" style="color:rgb(106, 153, 85)"># Create a post type with the fields returned by the posts api</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The above file is a standard <code>.graphQL</code> file, with a few additions such as <code>@server</code> and <code>@http</code> directives. So basically we specify the GraphQL schema and how to resolve that GraphQL schema in the same file, without having to write any code! Here is a quick overview of what the above schema does:</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/configuration.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installation</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting_started/launch/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Launch</div></a></nav></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/getting_started/execute/index.html b/docs/getting_started/execute/index.html new file mode 100644 index 0000000000..52e8fe4f83 --- /dev/null +++ b/docs/getting_started/execute/index.html @@ -0,0 +1,22 @@ +<!doctype html> +<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-getting_started/execute" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v2.4.3"> +<title data-rh="true">Execute | Tailcall</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://tailcall.run/docs/getting_started/execute/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Execute | Tailcall"><meta data-rh="true" name="description" content="1. Open a web browser and go to http8000. This should load the GraphiQL interface."><meta data-rh="true" property="og:description" content="1. Open a web browser and go to http8000. This should load the GraphiQL interface."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://tailcall.run/docs/getting_started/execute/"><link data-rh="true" rel="alternate" href="https://tailcall.run/docs/getting_started/execute/" hreflang="en"><link data-rh="true" rel="alternate" href="https://tailcall.run/docs/getting_started/execute/" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Tailcall RSS Feed"> +<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Tailcall Atom Feed"> + +<link rel="preconnect" href="https://www.google-analytics.com"> +<link rel="preconnect" href="https://www.googletagmanager.com"> +<script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> +<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> +</head> +<body class="navigation-with-keyboard"> +<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Execute</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Execute</h1></header><ol><li><p>Open a web browser and go to <a href="http://localhost:8000" target="_blank" rel="noopener noreferrer">http://localhost:8000</a>. This should load the GraphiQL interface.</p></li><li><p>In the query editor of GraphiQL, enter the following query</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token object">users</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">id</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">name</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token object">posts</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">title</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><p>After running the query in GraphiQL, expect to see a JSON response structured like this:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"data"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"users"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"id"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"name"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Leanne Graham"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"posts"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"sunt aut facere repellat provident occaecati excepturi optio reprehenderit"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)">// Additional posts truncated for brevity</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"id"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">2</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"name"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Ervin Howell"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"posts"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"et ea vero quia laudantium autem"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"in quibusdam tempore odit est dolorem"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)">// Additional posts truncated for brevity</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)">// Additional users truncated for brevity</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You can now add additional fields, and compose more queries together!</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/execute.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/launch/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Launch</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Problem Statement</div></a></nav></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> +</body> +</html> \ No newline at end of file diff --git a/docs/getting_started/index.html b/docs/getting_started/index.html index c5ea96e1b9..fb55afab3d 100644 --- a/docs/getting_started/index.html +++ b/docs/getting_started/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Installation</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Installation</h1></header>You can install the latest version -<!-- --> <b></b>, by using<b> NPM</b>.<h2 class="anchor anchorWithStickyNavbar_LWe7" id="npm">NPM<a href="#npm" class="hash-link" aria-label="Direct link to NPM" title="Direct link to NPM"></a></h2><ol><li><p>If you don't already have <strong>nodejs</strong> installed, you can find the instructions <a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noopener noreferrer">here</a>.</p></li><li><p>Install Tailcall by running the following command in your terminal:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">npm</span><span class="token plain"> i -g tailcallhq/tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Verify that Tailcall is installed correctly by running:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Avoid using the <code>--force</code> flag during npm installations, as it may skip the installation of platform-specific builds.</p></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2><ol><li><p>If you don't already have Homebrew installed, you can find the instructions <a href="https://brew.sh/" target="_blank" rel="noopener noreferrer">here</a>.</p></li><li><p>Add the Tailcall repository to Homebrew by running the following command in your terminal:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew tap tailcallhq/tailcall</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew </span><span class="token function" style="color:rgb(220, 220, 170)">install</span><span class="token plain"> tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Verify that Tailcall is installed correctly by running:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Once installation is done, <strong>upgrades</strong> can be performed via:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew update</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew upgrade tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="curl">Curl<a href="#curl" class="hash-link" aria-label="Direct link to Curl" title="Direct link to Curl"></a></h2><p>Follow the steps below to manually install the cli on your system:</p><div><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- </code></pre></div><p>This command fetches and executes the Tailcall installation script. The installed files are located in the <code>~/.tailcall</code> directory.</p><p>Upon completion of the installation, extend your <code>PATH</code> environment variable to include the <code>~/.tailcall/bin</code> directory:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token builtin class-name" style="color:rgb(78, 201, 176)">export</span><span class="token plain"> </span><span class="token assign-left variable environment constant" style="color:rgb(100, 102, 149)">PATH</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token environment constant" style="color:rgb(100, 102, 149)">$PATH</span><span class="token plain">:~/.tailcall/bin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="docker">Docker<a href="#docker" class="hash-link" aria-label="Direct link to Docker" title="Direct link to Docker"></a></h2><p>If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from <a href="https://www.docker.com/products/docker-desktop" target="_blank" rel="noopener noreferrer">here</a>.</p><ol><li><p>Pull the latest Tailcall Docker image using the following command:</p><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">docker pull ghcr.io/tailcallhq/tailcall/tc-server:</code></pre><p>This command fetches the latest version of the Tailcall Docker image from the Docker registry.</p></li><li><p>Run the Tailcall Docker container with the following command:</p><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server:</code></pre><p>This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080.</p></li></ol><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Once the installation is compeleted, you should verify the if the version printed on running <code>tc</code> command match the actual installed versions.</p></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/installation.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting_started/configuration/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Configuration</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#npm" class="table-of-contents__link toc-highlight">NPM</a></li><li><a href="#homebrew" class="table-of-contents__link toc-highlight">Homebrew</a></li><li><a href="#curl" class="table-of-contents__link toc-highlight">Curl</a></li><li><a href="#docker" class="table-of-contents__link toc-highlight">Docker</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Installation</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Installation</h1></header>You can install the latest version -<!-- --> <b></b>, by using<b> NPM</b>.<h2 class="anchor anchorWithStickyNavbar_LWe7" id="npm">NPM<a href="#npm" class="hash-link" aria-label="Direct link to NPM" title="Direct link to NPM"></a></h2><ol><li><p>If you don't already have <strong>nodejs</strong> installed, you can find the instructions <a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noopener noreferrer">here</a>.</p></li><li><p>Install Tailcall by running the following command in your terminal:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">npm</span><span class="token plain"> i -g tailcallhq/tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Verify that Tailcall is installed correctly by running:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Do not use the <code>--force</code> flag during npm installations, as it ignores installing platform-specific builds.</p></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2><ol><li><p>If you don't already have Homebrew installed, you can find the instructions <a href="https://brew.sh/" target="_blank" rel="noopener noreferrer">here</a>.</p></li><li><p>Add the Tailcall repository to Homebrew by running the following command in your terminal:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew tap tailcallhq/tailcall</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew </span><span class="token function" style="color:rgb(220, 220, 170)">install</span><span class="token plain"> tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Verify that Tailcall is installed correctly by running:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Once installation is done, <strong>upgrades</strong> can be performed via:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew update</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">brew upgrade tailcall</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="curl">Curl<a href="#curl" class="hash-link" aria-label="Direct link to Curl" title="Direct link to Curl"></a></h2><p>Follow the steps below to manually install the cli on your system:</p><div><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- </code></pre></div><p>This command fetches and executes the Tailcall installation script. The installed files are located in the <code>~/.tailcall</code> directory.</p><p>Upon completion of the installation, extend your <code>PATH</code> environment variable to include the <code>~/.tailcall/bin</code> directory:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token builtin class-name" style="color:rgb(78, 201, 176)">export</span><span class="token plain"> </span><span class="token assign-left variable environment constant" style="color:rgb(100, 102, 149)">PATH</span><span class="token operator" style="color:rgb(212, 212, 212)">=</span><span class="token environment constant" style="color:rgb(100, 102, 149)">$PATH</span><span class="token plain">:~/.tailcall/bin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="docker">Docker<a href="#docker" class="hash-link" aria-label="Direct link to Docker" title="Direct link to Docker"></a></h2><p>If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from <a href="https://www.docker.com/products/docker-desktop" target="_blank" rel="noopener noreferrer">here</a>.</p><ol><li><p>Pull the latest Tailcall Docker image using the following command:</p><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">docker pull ghcr.io/tailcallhq/tailcall/tc-server:</code></pre><p>This command fetches the latest version of the Tailcall Docker image from the Docker registry.</p></li><li><p>Run the Tailcall Docker container with the following command:</p><pre tabindex="0" class="codeBlockStandalone_MEMb thin-scrollbar codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><code class="codeBlockLines_e6Vv">docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server:</code></pre><p>This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080.</p></li></ol><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Once the installation is compeleted, you should verify the if the version printed on running <code>tc</code> command match the actual installed versions.</p></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/installation.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting_started/configuration/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Configuration</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#npm" class="table-of-contents__link toc-highlight">NPM</a></li><li><a href="#homebrew" class="table-of-contents__link toc-highlight">Homebrew</a></li><li><a href="#curl" class="table-of-contents__link toc-highlight">Curl</a></li><li><a href="#docker" class="table-of-contents__link toc-highlight">Docker</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/getting_started/launch/index.html b/docs/getting_started/launch/index.html index 04a52b9fb9..854ef9e291 100644 --- a/docs/getting_started/launch/index.html +++ b/docs/getting_started/launch/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Launch</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Launch</h1></header><p>Now, run the following command to start the server with the full path to the <code>jsonplaceholder.graphql</code> file that you created above.</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start ./jsonplaceholder.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If the command succeeds, you should see logs like the following below.</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain"> 🚀 Tailcall launched at </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token number" style="color:rgb(181, 206, 168)">0.0</span><span class="token plain">.0.0:8000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> 🌍 Playground: http://0.0.0.0:8000</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the <strong>playground URL</strong> in a new tab in your browser and try it out for yourself!</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/launch.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting_started/test/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Test</div></a></nav></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Launch</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Launch</h1></header><p>Now, run the following command to start the server with the full path to the <code>jsonplaceholder.graphql</code> file that you created above.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start ./jsonplaceholder.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If the command succeeds, you should see logs like the following below.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain"> 🚀 Tailcall launched at </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token number" style="color:rgb(181, 206, 168)">0.0</span><span class="token plain">.0.0:8000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> 🌍 Playground: http://0.0.0.0:8000</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the <strong>playground URL</strong> in a new tab in your browser and try it out for yourself!</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/launch.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting_started/execute/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Execute</div></a></nav></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/getting_started/test/index.html b/docs/getting_started/test/index.html deleted file mode 100644 index 5f74d18215..0000000000 --- a/docs/getting_started/test/index.html +++ /dev/null @@ -1,22 +0,0 @@ -<!doctype html> -<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-getting_started/test" data-has-hydrated="false"> -<head> -<meta charset="UTF-8"> -<meta name="generator" content="Docusaurus v2.4.3"> -<title data-rh="true">Test | Tailcall</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://tailcall.run/docs/getting_started/test/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Test | Tailcall"><meta data-rh="true" name="description" content="Let's try the following query, to get all the users and the title of each post of each user."><meta data-rh="true" property="og:description" content="Let's try the following query, to get all the users and the title of each post of each user."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://tailcall.run/docs/getting_started/test/"><link data-rh="true" rel="alternate" href="https://tailcall.run/docs/getting_started/test/" hreflang="en"><link data-rh="true" rel="alternate" href="https://tailcall.run/docs/getting_started/test/" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Tailcall RSS Feed"> -<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Tailcall Atom Feed"> - -<link rel="preconnect" href="https://www.google-analytics.com"> -<link rel="preconnect" href="https://www.googletagmanager.com"> -<script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> -<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> -</head> -<body class="navigation-with-keyboard"> -<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting Started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Test</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Test</h1></header><p>Let's try the following query, to get all the users and the title of each post of each user.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token object">users</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">id</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">name</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token object">posts</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">title</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You should see output like the following:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"data"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"users"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"id"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"name"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Leanne Graham"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"posts"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"sunt aut facere repellat provident occaecati excepturi optio reprehenderit"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> ...</span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"id"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">2</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"name"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Ervin Howell"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"posts"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"et ea vero quia laudantium autem"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token property">"title"</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"in quibusdam tempore odit est dolorem"</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> ...</span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You can now add additional fields, and compose more queries together!</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/getting_started/test.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/launch/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Launch</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Problem Statement</div></a></nav></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> -</body> -</html> \ No newline at end of file diff --git a/docs/guides/n+1/index.html b/docs/guides/n+1/index.html index 7d2f804363..e9a301e385 100644 --- a/docs/guides/n+1/index.html +++ b/docs/guides/n+1/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Guides</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Tackling N + 1</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Tackling N + 1</h1></header><p>The <strong>N+1 problem</strong> is a pervasive and critical issue in application development that occurs when an application ends up issuing a large number of downstream requests, for a single request from upstream. Let's understand with an example:</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="scenario">Scenario<a href="#scenario" class="hash-link" aria-label="Direct link to Scenario" title="Direct link to Scenario"></a></h2><p>Consider we're developing a feature that involves consuming data from the <a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer">JSON Placeholder API</a>. The feature requires fetching posts and the details of the authors of these posts.</p><p>Here's an illustration of how this might typically be implemented:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fetching-posts">Fetching Posts<a href="#fetching-posts" class="hash-link" aria-label="Direct link to Fetching Posts" title="Direct link to Fetching Posts"></a></h3><p>First, we send a request to retrieve all posts:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> https://jsonplaceholder.typicode.com/posts</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The above request fetches a list of posts from the API, each of which includes a <code>userId</code> field indicating the author of the post.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fetching-users">Fetching Users<a href="#fetching-users" class="hash-link" aria-label="Direct link to Fetching Users" title="Direct link to Fetching Users"></a></h3><p>Then, for each post, we need to get the author's details. A request for a specific user might look like this:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> https://jsonplaceholder.typicode.com/users/1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests.</p><p>The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="using-the-cli">Using the CLI<a href="#using-the-cli" class="hash-link" aria-label="Direct link to Using the CLI" title="Direct link to Using the CLI"></a></h2><p>The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage.</p><p>Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the <a href="/docs/getting_started/">Installation</a> guide, which will walk you through the setup process and help you understand the key commands.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="jsonplaceholder-example">Jsonplaceholder Example<a href="#jsonplaceholder-example" class="hash-link" aria-label="Direct link to Jsonplaceholder Example" title="Direct link to Jsonplaceholder Example"></a></h3><p>Here is a sample <code>.graphql</code> file that we'll be examining:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">posts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">username</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">phone</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">website</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data.</p><p>We will demonstrate how to identify this issue using the TailCall CLI in the next section.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running-the-tailcall-cli">Running the TailCall CLI<a href="#running-the-tailcall-cli" class="hash-link" aria-label="Direct link to Running the TailCall CLI" title="Direct link to Running the TailCall CLI"></a></h3><p>With the <code>check</code> command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check ./jsonplaceholder.graphql</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">No errors found.</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain">N + </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain">: </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>N + 1: 1</code> line tells you that the TailCall CLI has detected one potential N+1 issue.</p><p>For a deeper understanding of these issues, you can use the <code>--n-plus-one-queries</code> parameter:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">No errors found.</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain">N + </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain">: </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain"></span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain"> query </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"> posts </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"> user </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, <code>query { posts { user } }</code>, represents the minimal query that could lead to an N+1 problem. It illustrates that within the <code>posts</code> query, each post is triggering an additional request to fetch its associated <code>user</code> data.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="solving-using-batching">Solving Using Batching<a href="#solving-using-batching" class="hash-link" aria-label="Direct link to Solving Using Batching" title="Direct link to Solving Using Batching"></a></h2><p>Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL.</p><p>To tap into this feature, modify the <code>@http</code> directive on <code>Post.user</code> in your GraphQL schema as follows:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token description string" style="color:rgb(206, 145, 120)">"</span><span class="token description string language-markdown" style="color:rgb(206, 145, 120)">/users</span><span class="token description string" style="color:rgb(206, 145, 120)">"</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">groupBy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="understanding-the-update">Understanding the Update<a href="#understanding-the-update" class="hash-link" aria-label="Direct link to Understanding the Update" title="Direct link to Understanding the Update"></a></h3><p>The described changes introduce significant tweaks to the <code>@http</code> directive and incorporate the <code>@groupBy</code> operator:</p><ul><li><p><code>query: [{key: "id", value: "{{value.userId}}"}]</code>: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the <code>userId</code> from the parent <code>Post</code>. For a batch of posts, the CLI compiles a single URL, such as <code>/users?id=1&id=2&id=3...id=10</code>, consolidating multiple requests into one.</p></li><li><p><code>groupBy: ["id"]</code>: This parameter instructs the system to convert the list of responses into a map internally, using the user's <code>id</code> as the unique key. In essence, it allows the system to differentiate each user value in the response list.</p></li></ul><p>By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/guides/n+1.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/context/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Context</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#scenario" class="table-of-contents__link toc-highlight">Scenario</a><ul><li><a href="#fetching-posts" class="table-of-contents__link toc-highlight">Fetching Posts</a></li><li><a href="#fetching-users" class="table-of-contents__link toc-highlight">Fetching Users</a></li></ul></li><li><a href="#using-the-cli" class="table-of-contents__link toc-highlight">Using the CLI</a><ul><li><a href="#jsonplaceholder-example" class="table-of-contents__link toc-highlight">Jsonplaceholder Example</a></li><li><a href="#running-the-tailcall-cli" class="table-of-contents__link toc-highlight">Running the TailCall CLI</a></li></ul></li><li><a href="#solving-using-batching" class="table-of-contents__link toc-highlight">Solving Using Batching</a><ul><li><a href="#understanding-the-update" class="table-of-contents__link toc-highlight">Understanding the Update</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Guides</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Tackling N + 1</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Tackling N + 1</h1></header><p>The <strong>N+1 problem</strong> is a pervasive and critical issue in application development that occurs when an application ends up issuing a large number of downstream requests, for a single request from upstream. Let's understand with an example:</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="scenario">Scenario<a href="#scenario" class="hash-link" aria-label="Direct link to Scenario" title="Direct link to Scenario"></a></h2><p>Consider we're developing a feature that involves consuming data from the <a href="https://jsonplaceholder.typicode.com" target="_blank" rel="noopener noreferrer">JSON Placeholder API</a>. The feature requires fetching posts and the details of the authors of these posts.</p><p>Here's an illustration of how this might typically be implemented:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fetching-posts">Fetching Posts<a href="#fetching-posts" class="hash-link" aria-label="Direct link to Fetching Posts" title="Direct link to Fetching Posts"></a></h3><p>First, we send a request to retrieve all posts:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> https://jsonplaceholder.typicode.com/posts</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The above request fetches a list of posts from the API, each of which includes a <code>userId</code> field indicating the author of the post.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="fetching-users">Fetching Users<a href="#fetching-users" class="hash-link" aria-label="Direct link to Fetching Users" title="Direct link to Fetching Users"></a></h3><p>Then, for each post, we need to get the author's details. A request for a specific user might look like this:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> https://jsonplaceholder.typicode.com/users/1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests.</p><p>The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="using-the-cli">Using the CLI<a href="#using-the-cli" class="hash-link" aria-label="Direct link to Using the CLI" title="Direct link to Using the CLI"></a></h2><p>The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage.</p><p>Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the <a href="/docs/getting_started/">Installation</a> guide, which will walk you through the setup process and help you understand the key commands.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="jsonplaceholder-example">Jsonplaceholder Example<a href="#jsonplaceholder-example" class="hash-link" aria-label="Direct link to Jsonplaceholder Example" title="Direct link to Jsonplaceholder Example"></a></h3><p>Here is a sample <code>.graphql</code> file that we'll be examining:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">posts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">username</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">phone</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">website</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data.</p><p>We will demonstrate how to identify this issue using the TailCall CLI in the next section.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="running-the-tailcall-cli">Running the TailCall CLI<a href="#running-the-tailcall-cli" class="hash-link" aria-label="Direct link to Running the TailCall CLI" title="Direct link to Running the TailCall CLI"></a></h3><p>With the <code>check</code> command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check ./jsonplaceholder.graphql</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">No errors found.</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain">N + </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain">: </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>N + 1: 1</code> line tells you that the TailCall CLI has detected one potential N+1 issue.</p><p>For a deeper understanding of these issues, you can use the <code>--n-plus-one-queries</code> parameter:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain">No errors found.</span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain">N + </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain">: </span><span class="token number" style="color:rgb(181, 206, 168)">1</span><span class="token plain"></span><br></span><span class="token-line theme-code-block-highlighted-line" style="color:#9CDCFE"><span class="token plain"> query </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"> posts </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"> user </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, <code>query { posts { user } }</code>, represents the minimal query that could lead to an N+1 problem. It illustrates that within the <code>posts</code> query, each post is triggering an additional request to fetch its associated <code>user</code> data.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="solving-using-batching">Solving Using Batching<a href="#solving-using-batching" class="hash-link" aria-label="Direct link to Solving Using Batching" title="Direct link to Solving Using Batching"></a></h2><p>Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL.</p><p>To tap into this feature, modify the <code>@http</code> directive on <code>Post.user</code> in your GraphQL schema as follows:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token description string" style="color:rgb(206, 145, 120)">"</span><span class="token description string language-markdown" style="color:rgb(206, 145, 120)">/users</span><span class="token description string" style="color:rgb(206, 145, 120)">"</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">groupBy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"></span></span><br></span><span class="token-line theme-code-block-highlighted-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="understanding-the-update">Understanding the Update<a href="#understanding-the-update" class="hash-link" aria-label="Direct link to Understanding the Update" title="Direct link to Understanding the Update"></a></h3><p>The described changes introduce significant tweaks to the <code>@http</code> directive and incorporate the <code>@groupBy</code> operator:</p><ul><li><p><code>query: [{key: "id", value: "{{value.userId}}"}]</code>: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the <code>userId</code> from the parent <code>Post</code>. For a batch of posts, the CLI compiles a single URL, such as <code>/users?id=1&id=2&id=3...id=10</code>, consolidating multiple requests into one.</p></li><li><p><code>groupBy: ["id"]</code>: This parameter instructs the system to convert the list of responses into a map internally, using the user's <code>id</code> as the unique key. In essence, it allows the system to differentiate each user value in the response list.</p></li></ul><p>By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/guides/n+1.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/context/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Context</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#scenario" class="table-of-contents__link toc-highlight">Scenario</a><ul><li><a href="#fetching-posts" class="table-of-contents__link toc-highlight">Fetching Posts</a></li><li><a href="#fetching-users" class="table-of-contents__link toc-highlight">Fetching Users</a></li></ul></li><li><a href="#using-the-cli" class="table-of-contents__link toc-highlight">Using the CLI</a><ul><li><a href="#jsonplaceholder-example" class="table-of-contents__link toc-highlight">Jsonplaceholder Example</a></li><li><a href="#running-the-tailcall-cli" class="table-of-contents__link toc-highlight">Running the TailCall CLI</a></li></ul></li><li><a href="#solving-using-batching" class="table-of-contents__link toc-highlight">Solving Using Batching</a><ul><li><a href="#understanding-the-update" class="table-of-contents__link toc-highlight">Understanding the Update</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 22fbfa789a..ba007d5d9e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Problem Statement</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Problem Statement</h1></header><p>There are two things that are happening in the tech ecosystem nowadays:</p><ol><li><strong>Rich User Interfaces:</strong> Responsive websites that worked on desktop and mobile are dead. To build a successful B2C business, you need to build for all three platforms viz. Android, iOS, and Web (Desktop/PWA). The applications need to look slick, rich in information and have snappy response times.</li><li><strong>Microservice Proliferation:</strong> Companies these days bootstrap themselves on microservices instead of monoliths. This is because the tooling has gotten a lot better, and reusable components are available either in open-source or as a SAAS solution. This allows developers to focus on their core business logic and move fast.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="microservice-architecture">Microservice Architecture<a href="#microservice-architecture" class="hash-link" aria-label="Direct link to Microservice Architecture" title="Direct link to Microservice Architecture"></a></h2><p>This is what a typical microservices architecture looks like:</p><p><img loading="lazy" alt="Microservice Architecture Diagram" src="/assets/images/microservices-470f369493a95674ec72436df9d40ce3.svg" width="3014" height="2260" class="img_ev3q"></p><p>The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="api-composition">API Composition<a href="#api-composition" class="hash-link" aria-label="Direct link to API Composition" title="Direct link to API Composition"></a></h2><p>API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration.</p></div></div><p>For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows:</p><ol><li><p>First to <strong>/posts</strong> to retrieve recent posts, with the following response:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Reference to user by it's id.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Second, with the <strong>userId</strong> from the above post response, make a request to <strong>/users</strong> to retrieve the user's profile information, with the following response:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Reference to the complete user object</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="composition-on-clients">Composition on Clients<a href="#composition-on-clients" class="hash-link" aria-label="Direct link to Composition on Clients" title="Direct link to Composition on Clients"></a></h2><p>The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Modest hardware and flaky network conditions on the client side results in poor user-experience.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-increased-complexity">1. Increased Complexity<a href="#1-increased-complexity" class="hash-link" aria-label="Direct link to 1. Increased Complexity" title="Direct link to 1. Increased Complexity"></a></h3><p>To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-reduced-performance">2. Reduced Performance<a href="#2-reduced-performance" class="hash-link" aria-label="Direct link to 2. Reduced Performance" title="Direct link to 2. Reduced Performance"></a></h3><p>Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-increased-risk">3. Increased Risk<a href="#3-increased-risk" class="hash-link" aria-label="Direct link to 3. Increased Risk" title="Direct link to 3. Increased Risk"></a></h3><p>In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="backend-for-frontend-bff">Backend For Frontend (BFF)<a href="https://tailcall.in/ab#backend-for-frontend" target="_blank" rel="noopener noreferrer"></a><a href="#backend-for-frontend-bff" class="hash-link" aria-label="Direct link to backend-for-frontend-bff" title="Direct link to backend-for-frontend-bff"></a></h2><p>A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC.</p><p><img loading="lazy" alt="BFF Diagram" src="/assets/images/bff-878ce671177c6fa3e99bf82f002c2b17.svg" width="3617" height="2224" class="img_ev3q"></p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience.</p></div></div><p>The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-highly-specialized">1. Highly Specialized<a href="#1-highly-specialized" class="hash-link" aria-label="Direct link to 1. Highly Specialized" title="Direct link to 1. Highly Specialized"></a></h3><p>One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-fragile">2. Fragile<a href="#2-fragile" class="hash-link" aria-label="Direct link to 2. Fragile" title="Direct link to 2. Fragile"></a></h3><p>Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-speculative-performance">3. Speculative Performance<a href="#3-speculative-performance" class="hash-link" aria-label="Direct link to 3. Speculative Performance" title="Direct link to 3. Speculative Performance"></a></h3><p>Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-monolith">4. Monolith<a href="#4-monolith" class="hash-link" aria-label="Direct link to 4. Monolith" title="Direct link to 4. Monolith"></a></h3><p>Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-canary-support-lack-thereof">5. Canary Support (Lack thereof)<a href="#5-canary-support-lack-thereof" class="hash-link" aria-label="Direct link to 5. Canary Support (Lack thereof)" title="Direct link to 5. Canary Support (Lack thereof)"></a></h3><p>Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use <a href="https://www.redhat.com/en/topics/devops/what-is-blue-green-deployment" target="_blank" rel="noopener noreferrer">Blue-Green</a> deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="6-coupled-release">6. Coupled Release<a href="#6-coupled-release" class="hash-link" aria-label="Direct link to 6. Coupled Release" title="Direct link to 6. Coupled Release"></a></h3><p>BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="7-legacy-gateway">7. Legacy Gateway<a href="#7-legacy-gateway" class="hash-link" aria-label="Direct link to 7. Legacy Gateway" title="Direct link to 7. Legacy Gateway"></a></h3><p>BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="8-organizational-friction">8. Organizational Friction<a href="#8-organizational-friction" class="hash-link" aria-label="Direct link to 8. Organizational Friction" title="Direct link to 8. Organizational Friction"></a></h3><p>The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges.</p><p>At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/introduction.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/test/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Test</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/architecture/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Architecture</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#microservice-architecture" class="table-of-contents__link toc-highlight">Microservice Architecture</a></li><li><a href="#api-composition" class="table-of-contents__link toc-highlight">API Composition</a></li><li><a href="#composition-on-clients" class="table-of-contents__link toc-highlight">Composition on Clients</a><ul><li><a href="#1-increased-complexity" class="table-of-contents__link toc-highlight">1. Increased Complexity</a></li><li><a href="#2-reduced-performance" class="table-of-contents__link toc-highlight">2. Reduced Performance</a></li><li><a href="#3-increased-risk" class="table-of-contents__link toc-highlight">3. Increased Risk</a></li></ul></li><li><a href="#backend-for-frontend-bff" class="table-of-contents__link toc-highlight">Backend For Frontend (BFF)</a><ul><li><a href="#1-highly-specialized" class="table-of-contents__link toc-highlight">1. Highly Specialized</a></li><li><a href="#2-fragile" class="table-of-contents__link toc-highlight">2. Fragile</a></li><li><a href="#3-speculative-performance" class="table-of-contents__link toc-highlight">3. Speculative Performance</a></li><li><a href="#4-monolith" class="table-of-contents__link toc-highlight">4. Monolith</a></li><li><a href="#5-canary-support-lack-thereof" class="table-of-contents__link toc-highlight">5. Canary Support (Lack thereof)</a></li><li><a href="#6-coupled-release" class="table-of-contents__link toc-highlight">6. Coupled Release</a></li><li><a href="#7-legacy-gateway" class="table-of-contents__link toc-highlight">7. Legacy Gateway</a></li><li><a href="#8-organizational-friction" class="table-of-contents__link toc-highlight">8. Organizational Friction</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Problem Statement</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Problem Statement</h1></header><p>There are two things that are happening in the tech ecosystem nowadays:</p><ol><li><strong>Rich User Interfaces:</strong> Responsive websites that worked on desktop and mobile are dead. To build a successful B2C business, you need to build for all three platforms viz. Android, iOS, and Web (Desktop/PWA). The applications need to look slick, rich in information and have snappy response times.</li><li><strong>Microservice Proliferation:</strong> Companies these days bootstrap themselves on microservices instead of monoliths. This is because the tooling has gotten a lot better, and reusable components are available either in open-source or as a SAAS solution. This allows developers to focus on their core business logic and move fast.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="microservice-architecture">Microservice Architecture<a href="#microservice-architecture" class="hash-link" aria-label="Direct link to Microservice Architecture" title="Direct link to Microservice Architecture"></a></h2><p>This is what a typical microservices architecture looks like:</p><p><img loading="lazy" alt="Microservice Architecture Diagram" src="/assets/images/microservices-470f369493a95674ec72436df9d40ce3.svg" width="3014" height="2260" class="img_ev3q"></p><p>The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="api-composition">API Composition<a href="#api-composition" class="hash-link" aria-label="Direct link to API Composition" title="Direct link to API Composition"></a></h2><p>API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration.</p></div></div><p>For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows:</p><ol><li><p>First to <strong>/posts</strong> to retrieve recent posts, with the following response:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Reference to user by it's id.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>Second, with the <strong>userId</strong> from the above post response, make a request to <strong>/users</strong> to retrieve the user's profile information, with the following response:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li><p>The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token comment" style="color:rgb(106, 153, 85)"># Reference to the complete user object</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="composition-on-clients">Composition on Clients<a href="#composition-on-clients" class="hash-link" aria-label="Direct link to Composition on Clients" title="Direct link to Composition on Clients"></a></h2><p>The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Modest hardware and flaky network conditions on the client side results in poor user-experience.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-increased-complexity">1. Increased Complexity<a href="#1-increased-complexity" class="hash-link" aria-label="Direct link to 1. Increased Complexity" title="Direct link to 1. Increased Complexity"></a></h3><p>To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-reduced-performance">2. Reduced Performance<a href="#2-reduced-performance" class="hash-link" aria-label="Direct link to 2. Reduced Performance" title="Direct link to 2. Reduced Performance"></a></h3><p>Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-increased-risk">3. Increased Risk<a href="#3-increased-risk" class="hash-link" aria-label="Direct link to 3. Increased Risk" title="Direct link to 3. Increased Risk"></a></h3><p>In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="backend-for-frontend-bff">Backend For Frontend (BFF)<a href="https://tailcall.in/ab#backend-for-frontend" target="_blank" rel="noopener noreferrer"></a><a href="#backend-for-frontend-bff" class="hash-link" aria-label="Direct link to backend-for-frontend-bff" title="Direct link to backend-for-frontend-bff"></a></h2><p>A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC.</p><p><img loading="lazy" alt="BFF Diagram" src="/assets/images/bff-878ce671177c6fa3e99bf82f002c2b17.svg" width="3617" height="2224" class="img_ev3q"></p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience.</p></div></div><p>The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-highly-specialized">1. Highly Specialized<a href="#1-highly-specialized" class="hash-link" aria-label="Direct link to 1. Highly Specialized" title="Direct link to 1. Highly Specialized"></a></h3><p>One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-fragile">2. Fragile<a href="#2-fragile" class="hash-link" aria-label="Direct link to 2. Fragile" title="Direct link to 2. Fragile"></a></h3><p>Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-speculative-performance">3. Speculative Performance<a href="#3-speculative-performance" class="hash-link" aria-label="Direct link to 3. Speculative Performance" title="Direct link to 3. Speculative Performance"></a></h3><p>Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-monolith">4. Monolith<a href="#4-monolith" class="hash-link" aria-label="Direct link to 4. Monolith" title="Direct link to 4. Monolith"></a></h3><p>Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-canary-support-lack-thereof">5. Canary Support (Lack thereof)<a href="#5-canary-support-lack-thereof" class="hash-link" aria-label="Direct link to 5. Canary Support (Lack thereof)" title="Direct link to 5. Canary Support (Lack thereof)"></a></h3><p>Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use <a href="https://www.redhat.com/en/topics/devops/what-is-blue-green-deployment" target="_blank" rel="noopener noreferrer">Blue-Green</a> deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="6-coupled-release">6. Coupled Release<a href="#6-coupled-release" class="hash-link" aria-label="Direct link to 6. Coupled Release" title="Direct link to 6. Coupled Release"></a></h3><p>BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="7-legacy-gateway">7. Legacy Gateway<a href="#7-legacy-gateway" class="hash-link" aria-label="Direct link to 7. Legacy Gateway" title="Direct link to 7. Legacy Gateway"></a></h3><p>BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="8-organizational-friction">8. Organizational Friction<a href="#8-organizational-friction" class="hash-link" aria-label="Direct link to 8. Organizational Friction" title="Direct link to 8. Organizational Friction"></a></h3><p>The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges.</p><p>At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/introduction.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting_started/execute/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Execute</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/architecture/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Architecture</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#microservice-architecture" class="table-of-contents__link toc-highlight">Microservice Architecture</a></li><li><a href="#api-composition" class="table-of-contents__link toc-highlight">API Composition</a></li><li><a href="#composition-on-clients" class="table-of-contents__link toc-highlight">Composition on Clients</a><ul><li><a href="#1-increased-complexity" class="table-of-contents__link toc-highlight">1. Increased Complexity</a></li><li><a href="#2-reduced-performance" class="table-of-contents__link toc-highlight">2. Reduced Performance</a></li><li><a href="#3-increased-risk" class="table-of-contents__link toc-highlight">3. Increased Risk</a></li></ul></li><li><a href="#backend-for-frontend-bff" class="table-of-contents__link toc-highlight">Backend For Frontend (BFF)</a><ul><li><a href="#1-highly-specialized" class="table-of-contents__link toc-highlight">1. Highly Specialized</a></li><li><a href="#2-fragile" class="table-of-contents__link toc-highlight">2. Fragile</a></li><li><a href="#3-speculative-performance" class="table-of-contents__link toc-highlight">3. Speculative Performance</a></li><li><a href="#4-monolith" class="table-of-contents__link toc-highlight">4. Monolith</a></li><li><a href="#5-canary-support-lack-thereof" class="table-of-contents__link toc-highlight">5. Canary Support (Lack thereof)</a></li><li><a href="#6-coupled-release" class="table-of-contents__link toc-highlight">6. Coupled Release</a></li><li><a href="#7-legacy-gateway" class="table-of-contents__link toc-highlight">7. Legacy Gateway</a></li><li><a href="#8-organizational-friction" class="table-of-contents__link toc-highlight">8. Organizational Friction</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/intro/architecture/index.html b/docs/intro/architecture/index.html index 5c59207b89..efebdf767b 100644 --- a/docs/intro/architecture/index.html +++ b/docs/intro/architecture/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Architecture</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Architecture</h1></header><p>What we have built is a open-source API orchestration solution that really thinks about the problem from first principles and achieves far superior results than the legacy solutions that are available today. To understand how it works, here is the technical implementation of our solution.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="high-level-architecture">High-Level Architecture<a href="#high-level-architecture" class="hash-link" aria-label="Direct link to High-Level Architecture" title="Direct link to High-Level Architecture"></a></h2><p>The clients and the services remain the same with an addition of three components viz. The <strong>Composition Spec</strong> (also known as the “Blueprint”), Schema <strong>Registry,</strong> and the Tailcall <strong>Proxy</strong>.</p><p><img loading="lazy" alt="Tailcall Architecture Diagram" src="/assets/images/tailcall-architecture-b45336f22a3e603f3b825871fea29bc5.png" width="1600" height="838" class="img_ev3q"></p><p>The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="composition-specification-blueprint">Composition Specification (Blueprint)<a href="#composition-specification-blueprint" class="hash-link" aria-label="Direct link to Composition Specification (Blueprint)" title="Direct link to Composition Specification (Blueprint)"></a></h2><p>The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system.</p><p><img loading="lazy" alt="Composition Spec Visualization" src="/assets/images/tailcall-blueprint-4f3aa85f8d63106977f79070b070e934.png" width="1600" height="457" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="publish">Publish<a href="#publish" class="hash-link" aria-label="Direct link to Publish" title="Direct link to Publish"></a></h2><p>Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps.</p><ol><li><p>We run all the validations and check if there are any invalid states in the composition specification provided by the developer.</p></li><li><p>We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made.</p></div></div></li><li><p>We recommend standard best practices for API composition so that developers can integrate it on day one.</p></li><li><p>We also apply many optimizations eg: including constant folding, inlining, <a href="https://github.com/graphql/dataloader" target="_blank" rel="noopener noreferrer">data-loader</a>, etc.</p></li><li><p>Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections)</p></li><li><p>As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration.</p></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="client-consumption">Client Consumption<a href="#client-consumption" class="hash-link" aria-label="Direct link to Client Consumption" title="Direct link to Client Consumption"></a></h2><p>When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'https://cloud.tailcall.com/graphql/d5fb012'</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> --data-raw </span><span class="token string" style="color:rgb(206, 145, 120)">'{"query": "{ posts { title body user { name email } } } }"}'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hash-code">Hash Code<a href="#hash-code" class="hash-link" aria-label="Direct link to Hash Code" title="Direct link to Hash Code"></a></h2><p>The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax.</p><p>This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following:</p><ol><li><strong>Versioning:</strong> Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.</li><li><strong>Canary Releases:</strong> This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.</li><li><strong>Immutability:</strong> Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.</li><li><strong>Breaking Changes:</strong> As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity.</li></ol><p><img loading="lazy" alt="Digest Creation" src="/assets/images/tailcall-digest-c63785f90ab664bed47194dc554436da.png" width="1600" height="648" class="img_ev3q"></p><p>Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our <a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer">discord</a> channel, we would love to hear from you.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/architecture.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Problem Statement</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/cli/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">CLI</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#high-level-architecture" class="table-of-contents__link toc-highlight">High-Level Architecture</a></li><li><a href="#composition-specification-blueprint" class="table-of-contents__link toc-highlight">Composition Specification (Blueprint)</a></li><li><a href="#publish" class="table-of-contents__link toc-highlight">Publish</a></li><li><a href="#client-consumption" class="table-of-contents__link toc-highlight">Client Consumption</a></li><li><a href="#hash-code" class="table-of-contents__link toc-highlight">Hash Code</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Architecture</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Architecture</h1></header><p>What we have built is a open-source API orchestration solution that really thinks about the problem from first principles and achieves far superior results than the legacy solutions that are available today. To understand how it works, here is the technical implementation of our solution.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="high-level-architecture">High-Level Architecture<a href="#high-level-architecture" class="hash-link" aria-label="Direct link to High-Level Architecture" title="Direct link to High-Level Architecture"></a></h2><p>The clients and the services remain the same with an addition of three components viz. The <strong>Composition Spec</strong> (also known as the “Blueprint”), Schema <strong>Registry,</strong> and the Tailcall <strong>Proxy</strong>.</p><p><img loading="lazy" alt="Tailcall Architecture Diagram" src="/assets/images/tailcall-architecture-b45336f22a3e603f3b825871fea29bc5.png" width="1600" height="838" class="img_ev3q"></p><p>The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="composition-specification-blueprint">Composition Specification (Blueprint)<a href="#composition-specification-blueprint" class="hash-link" aria-label="Direct link to Composition Specification (Blueprint)" title="Direct link to Composition Specification (Blueprint)"></a></h2><p>The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system.</p><p><img loading="lazy" alt="Composition Spec Visualization" src="/assets/images/tailcall-blueprint-4f3aa85f8d63106977f79070b070e934.png" width="1600" height="457" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="publish">Publish<a href="#publish" class="hash-link" aria-label="Direct link to Publish" title="Direct link to Publish"></a></h2><p>Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps.</p><ol><li><p>We run all the validations and check if there are any invalid states in the composition specification provided by the developer.</p></li><li><p>We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made.</p></div></div></li><li><p>We recommend standard best practices for API composition so that developers can integrate it on day one.</p></li><li><p>We also apply many optimizations eg: including constant folding, inlining, <a href="https://github.com/graphql/dataloader" target="_blank" rel="noopener noreferrer">data-loader</a>, etc.</p></li><li><p>Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections)</p></li><li><p>As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration.</p></li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="client-consumption">Client Consumption<a href="#client-consumption" class="hash-link" aria-label="Direct link to Client Consumption" title="Direct link to Client Consumption"></a></h2><p>When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token function" style="color:rgb(220, 220, 170)">curl</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">'https://cloud.tailcall.com/graphql/d5fb012'</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> --data-raw </span><span class="token string" style="color:rgb(206, 145, 120)">'{"query": "{ posts { title body user { name email } } } }"}'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hash-code">Hash Code<a href="#hash-code" class="hash-link" aria-label="Direct link to Hash Code" title="Direct link to Hash Code"></a></h2><p>The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax.</p><p>This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following:</p><ol><li><strong>Versioning:</strong> Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.</li><li><strong>Canary Releases:</strong> This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.</li><li><strong>Immutability:</strong> Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.</li><li><strong>Breaking Changes:</strong> As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity.</li></ol><p><img loading="lazy" alt="Digest Creation" src="/assets/images/tailcall-digest-c63785f90ab664bed47194dc554436da.png" width="1600" height="648" class="img_ev3q"></p><p>Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our <a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer">discord</a> channel, we would love to hear from you.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/architecture.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Problem Statement</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/cli/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">CLI</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#high-level-architecture" class="table-of-contents__link toc-highlight">High-Level Architecture</a></li><li><a href="#composition-specification-blueprint" class="table-of-contents__link toc-highlight">Composition Specification (Blueprint)</a></li><li><a href="#publish" class="table-of-contents__link toc-highlight">Publish</a></li><li><a href="#client-consumption" class="table-of-contents__link toc-highlight">Client Consumption</a></li><li><a href="#hash-code" class="table-of-contents__link toc-highlight">Hash Code</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/intro/cli/index.html b/docs/intro/cli/index.html index 7050a9c7b8..2ecc904d1c 100644 --- a/docs/intro/cli/index.html +++ b/docs/intro/cli/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">CLI</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>CLI</h1></header><p>The TailCall CLI (Command Line Interface) is an essential part of the TailCall toolkit. It allows developers to manage and optimize GraphQL configurations directly from the command line. Each command within the CLI is designed to handle a specific aspect of GraphQL composition. Below, you'll find a detailed overview of each command, along with its options and usage examples.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="check">check<a href="#check" class="hash-link" aria-label="Direct link to check" title="Direct link to check"></a></h2><p>The <code>check</code> command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the <code>check</code> command, follow this format:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">options</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>check</code> command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="--n-plus-one-queries">--n-plus-one-queries<a href="#--n-plus-one-queries" class="hash-link" aria-label="Direct link to --n-plus-one-queries" title="Direct link to --n-plus-one-queries"></a></h3><p>This flag triggers the detection of N+1 issues.</p><ul><li>Type: Boolean</li><li>Default: false</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --n-plus-one-queries </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="--schema">--schema<a href="#--schema" class="hash-link" aria-label="Direct link to --schema" title="Direct link to --schema"></a></h3><p>This option enables the display of the schema of the composition spec.</p><ul><li>Type: Boolean</li><li>Default: false</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --schema </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">1</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">2</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">fileN</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>check</code> command allows for multiple files. Specify each file path, separated by a space, after the options.</p><p>Example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="start">start<a href="#start" class="hash-link" aria-label="Direct link to start" title="Direct link to start"></a></h2><p>The <code>start</code> command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as <a href="/docs/intro/architecture/#composition-specification-blueprint">composition specs</a>.</p><p>To start the server, use the following command:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">1</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">2</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">fileN</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>start</code> command allows for multiple files. Specify each file path, separated by a space, after the options.</p><p>Example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start ./path/to/file1.graphql ./path/to/file2.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="init">init<a href="#init" class="hash-link" aria-label="Direct link to init" title="Direct link to init"></a></h2><p>The <code>init</code> command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc init </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file_path</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This command prompts for additional file creation and configuration, creating a <code>.tailcallrc.graphql</code> file by default.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/cli.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/architecture/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Architecture</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/operators/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Operators</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#check" class="table-of-contents__link toc-highlight">check</a><ul><li><a href="#--n-plus-one-queries" class="table-of-contents__link toc-highlight">--n-plus-one-queries</a></li><li><a href="#--schema" class="table-of-contents__link toc-highlight">--schema</a></li></ul></li><li><a href="#start" class="table-of-contents__link toc-highlight">start</a></li><li><a href="#init" class="table-of-contents__link toc-highlight">init</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">CLI</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>CLI</h1></header><p>The TailCall CLI (Command Line Interface) is an essential part of the TailCall toolkit. It allows developers to manage and optimize GraphQL configurations directly from the command line. Each command within the CLI is designed to handle a specific aspect of GraphQL composition. Below, you'll find a detailed overview of each command, along with its options and usage examples.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="check">check<a href="#check" class="hash-link" aria-label="Direct link to check" title="Direct link to check"></a></h2><p>The <code>check</code> command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the <code>check</code> command, follow this format:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token plain">options</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>check</code> command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="--n-plus-one-queries">--n-plus-one-queries<a href="#--n-plus-one-queries" class="hash-link" aria-label="Direct link to --n-plus-one-queries" title="Direct link to --n-plus-one-queries"></a></h3><p>This flag triggers the detection of N+1 issues.</p><ul><li>Type: Boolean</li><li>Default: false</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --n-plus-one-queries </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="--schema">--schema<a href="#--schema" class="hash-link" aria-label="Direct link to --schema" title="Direct link to --schema"></a></h3><p>This option enables the display of the schema of the composition spec.</p><ul><li>Type: Boolean</li><li>Default: false</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --schema </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">1</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">2</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">fileN</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>check</code> command allows for multiple files. Specify each file path, separated by a space, after the options.</p><p>Example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="start">start<a href="#start" class="hash-link" aria-label="Direct link to start" title="Direct link to start"></a></h2><p>The <code>start</code> command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as <a href="/docs/intro/architecture/#composition-specification-blueprint">composition specs</a>.</p><p>To start the server, use the following command:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">1</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file</span><span class="token operator file-descriptor important" style="color:rgb(212, 212, 212)">2</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">..</span><span class="token plain">. </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">fileN</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>start</code> command allows for multiple files. Specify each file path, separated by a space, after the options.</p><p>Example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc start ./path/to/file1.graphql ./path/to/file2.graphql</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="init">init<a href="#init" class="hash-link" aria-label="Direct link to init" title="Direct link to init"></a></h2><p>The <code>init</code> command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token plain">tc init </span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token plain">file_path</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This command prompts for additional file creation and configuration, creating a <code>.tailcallrc.graphql</code> file by default.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/cli.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/architecture/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Architecture</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/operators/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Operators</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#check" class="table-of-contents__link toc-highlight">check</a><ul><li><a href="#--n-plus-one-queries" class="table-of-contents__link toc-highlight">--n-plus-one-queries</a></li><li><a href="#--schema" class="table-of-contents__link toc-highlight">--schema</a></li></ul></li><li><a href="#start" class="table-of-contents__link toc-highlight">start</a></li><li><a href="#init" class="table-of-contents__link toc-highlight">init</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/intro/context/index.html b/docs/intro/context/index.html index 93b7d6a9a9..91a6ca27f6 100644 --- a/docs/intro/context/index.html +++ b/docs/intro/context/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Context</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Context</h1></header><p>In any GraphQL framework, including Tailcall, <code>Context</code> is a fundamental mechanism used for data sharing amongst various parts of your application. It is an adaptable object that is made available to every resolver in GraphQL.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-in-tailcall">Context in Tailcall<a href="#context-in-tailcall" class="hash-link" aria-label="Direct link to Context in Tailcall" title="Direct link to Context in Tailcall"></a></h2><p>In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every <a href="/docs/intro/operators/">Operator</a>. It is used to store and access data that needs to be shared between operators.</p><p>The Context can be described using the following Typescript interface:</p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Context</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> args</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> Json</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> value</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Json</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> parent</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Context</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> env</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> headers</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="args">args<a href="#args" class="hash-link" aria-label="Direct link to args" title="Direct link to args"></a></h3><p>These are the arguments passed to the current query. They can be used to access the arguments of the query. For example,</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{args.id}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, <code>args.id</code> is used to access the <code>id</code> argument passed to the <code>user</code> query.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="value">value<a href="#value" class="hash-link" aria-label="Direct link to value" title="Direct link to value"></a></h3><p>This represents the value of the current node. For instance,</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">comments</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Comment</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts/{{value.id}}/comments"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, <code>value.id</code> is used to access the <code>id</code> field of the <code>Post</code> type.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="parent">parent<a href="#parent" class="hash-link" aria-label="Direct link to parent" title="Direct link to parent"></a></h3><p>This denotes the context of the parent node.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">posts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">matchPath</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">matchKey</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"userId"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this case, <code>value.userId</code> is a way to get the <code>userId</code> information from the "parent" context of the <code>Post</code> type. Essentially, it's extracting a list or "array" of <code>userId</code> fields from multiple <code>Post</code> types. Think of <code>value</code> as a container that holds the results of a post query, with <code>userId</code> being the specific key you want to fetch from that container.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="env">env<a href="#env" class="hash-link" aria-label="Direct link to env" title="Direct link to env"></a></h3><p>This represents global environment variables for the server. This is set once when the server starts.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">users</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseUrl</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{env.API_ENDPOINT}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the above example, <code>env.API_ENDPOINT</code> refers to an environment variable called API_ENDPOINT, which should be defined in your server settings.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="headers">headers<a href="#headers" class="hash-link" aria-label="Direct link to headers" title="Direct link to headers"></a></h3><p>These are the headers of the request that was received by the Tailcall server.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">commentsForUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Comment</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{headers.userId}}/comments"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Here, <code>headers.userId</code> refers to a header called <code>userId</code> that should be present in the <code>context</code>. The server can use this <code>userId</code> to fetch comments for the specified user.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/context.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/operators/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Operators</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/n+1/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tackling N + 1</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#context-in-tailcall" class="table-of-contents__link toc-highlight">Context in Tailcall</a><ul><li><a href="#args" class="table-of-contents__link toc-highlight">args</a></li><li><a href="#value" class="table-of-contents__link toc-highlight">value</a></li><li><a href="#parent" class="table-of-contents__link toc-highlight">parent</a></li><li><a href="#env" class="table-of-contents__link toc-highlight">env</a></li><li><a href="#headers" class="table-of-contents__link toc-highlight">headers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Context</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Context</h1></header><p>In any GraphQL framework, including Tailcall, <code>Context</code> is a fundamental mechanism used for data sharing amongst various parts of your application. It is an adaptable object that is made available to every resolver in GraphQL.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-in-tailcall">Context in Tailcall<a href="#context-in-tailcall" class="hash-link" aria-label="Direct link to Context in Tailcall" title="Direct link to Context in Tailcall"></a></h2><p>In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every <a href="/docs/intro/operators/">Operator</a>. It is used to store and access data that needs to be shared between operators.</p><p>The Context can be described using the following Typescript interface:</p><div class="language-typescript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-typescript codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">interface</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Context</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> args</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> Json</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> value</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Json</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> parent</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Context</span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> env</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> headers</span><span class="token operator" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> Map</span><span class="token operator" style="color:rgb(212, 212, 212)"><</span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token builtin" style="color:rgb(86, 156, 214)">string</span><span class="token operator" style="color:rgb(212, 212, 212)">></span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="args">args<a href="#args" class="hash-link" aria-label="Direct link to args" title="Direct link to args"></a></h3><p>These are the arguments passed to the current query. They can be used to access the arguments of the query. For example,</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{args.id}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, <code>args.id</code> is used to access the <code>id</code> argument passed to the <code>user</code> query.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="value">value<a href="#value" class="hash-link" aria-label="Direct link to value" title="Direct link to value"></a></h3><p>This represents the value of the current node. For instance,</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">comments</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Comment</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts/{{value.id}}/comments"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, <code>value.id</code> is used to access the <code>id</code> field of the <code>Post</code> type.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="parent">parent<a href="#parent" class="hash-link" aria-label="Direct link to parent" title="Direct link to parent"></a></h3><p>This denotes the context of the parent node.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">posts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">title</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">matchPath</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">matchKey</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"userId"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this case, <code>value.userId</code> is a way to get the <code>userId</code> information from the "parent" context of the <code>Post</code> type. Essentially, it's extracting a list or "array" of <code>userId</code> fields from multiple <code>Post</code> types. Think of <code>value</code> as a container that holds the results of a post query, with <code>userId</code> being the specific key you want to fetch from that container.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="env">env<a href="#env" class="hash-link" aria-label="Direct link to env" title="Direct link to env"></a></h3><p>This represents global environment variables for the server. This is set once when the server starts.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">users</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseUrl</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{env.API_ENDPOINT}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the above example, <code>env.API_ENDPOINT</code> refers to an environment variable called API_ENDPOINT, which should be defined in your server settings.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="headers">headers<a href="#headers" class="hash-link" aria-label="Direct link to headers" title="Direct link to headers"></a></h3><p>These are the headers of the request that was received by the Tailcall server.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">commentsForUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Comment</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{headers.userId}}/comments"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Here, <code>headers.userId</code> refers to a header called <code>userId</code> that should be present in the <code>context</code>. The server can use this <code>userId</code> to fetch comments for the specified user.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/context.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/operators/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Operators</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/n+1/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Tackling N + 1</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#context-in-tailcall" class="table-of-contents__link toc-highlight">Context in Tailcall</a><ul><li><a href="#args" class="table-of-contents__link toc-highlight">args</a></li><li><a href="#value" class="table-of-contents__link toc-highlight">value</a></li><li><a href="#parent" class="table-of-contents__link toc-highlight">parent</a></li><li><a href="#env" class="table-of-contents__link toc-highlight">env</a></li><li><a href="#headers" class="table-of-contents__link toc-highlight">headers</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/docs/intro/operators/index.html b/docs/intro/operators/index.html index 6bc81cf3de..d5541be6f1 100644 --- a/docs/intro/operators/index.html +++ b/docs/intro/operators/index.html @@ -10,14 +10,14 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> -<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/test/">Test</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Operators</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Operators</h1></header><p>Tailcall DSL builds on your existing GraphQL knowledge by allowing the addition of some custom operators. These operators provide powerful compile time guarantees to make sure your API composition is tight and robust. The operator information is used to automatically generates highly optimized resolver logic for your types.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="server">@server<a href="#server" class="hash-link" aria-label="Direct link to @server" title="Direct link to @server"></a></h2><p>The <code>@server</code> directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">ServerSettings</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this templated structure, replace <code>...[ServerSettings]...</code> with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary.</p><p>The various <code>ServerSettings</code> options and their details are explained below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="port">port<a href="#port" class="hash-link" aria-label="Direct link to port" title="Direct link to port"></a></h4><p>This refers to the <code>port</code> on which the Tailcall will be running. If not specified, the default port is <code>8000</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">port</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">8090</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, the <code>port</code> is set to <code>8090</code>. This means that the Tailcall will be accessible at <code>http://localhost:8090</code>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablecachecontrolheader">enableCacheControlHeader<a href="#enablecachecontrolheader" class="hash-link" aria-label="Direct link to enableCacheControlHeader" title="Direct link to enableCacheControlHeader"></a></h4><p>The <code>enableCacheControlHeader</code> configuration, when activated, instructs Tailcall to transmit <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control" target="_blank" rel="noopener noreferrer">Cache-Control</a> headers in its responses. The <code>max-age</code> value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to <code>false</code> meaning no header is set.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableCacheControlHeader</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablegraphiql">enableGraphiql<a href="#enablegraphiql" class="hash-link" aria-label="Direct link to enableGraphiql" title="Direct link to enableGraphiql"></a></h4><p>This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. <a href="https://github.com/graphql/graphiql" target="_blank" rel="noopener noreferrer">GraphiQL</a> is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as <code>/graphiql</code>, you grant access to this IDE at that specific URL endpoint, like <code>http://localhost:8000/graphiql</code>. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">port</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">8000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableGraphiql</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/graphiql"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="vars">vars<a href="#vars" class="hash-link" aria-label="Direct link to vars" title="Direct link to vars"></a></h4><p>This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">vars</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"apiKey"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"YOUR_API_KEY_HERE"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">externalData</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Data</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/external-api/data"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">headers</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Authorization"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Bearer {{vars.apiKey}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the provided example, a variable named <code>apiKey</code> is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the <code>externalData</code> endpoint, it includes the <code>apiKey</code> in the Authorization header of the HTTP request.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Local variables, like <code>apiKey</code>, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enableintrospection">enableIntrospection<a href="#enableintrospection" class="hash-link" aria-label="Direct link to enableIntrospection" title="Direct link to enableIntrospection"></a></h4><p>This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (<code>true</code>).</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableIntrospection</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablequeryvalidation">enableQueryValidation<a href="#enablequeryvalidation" class="hash-link" aria-label="Direct link to enableQueryValidation" title="Direct link to enableQueryValidation"></a></h4><p>The <code>enableQueryValidation</code> configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to <strong>enhance server performance</strong> at the cost of such checks. This defaults to <code>true</code> if not specified.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableQueryValidation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, <code>enableQueryValidation</code> is set to <code>false</code>, bypassing the validation phase for incoming queries.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enableresponsevalidation">enableResponseValidation<a href="#enableresponsevalidation" class="hash-link" aria-label="Direct link to enableResponseValidation" title="Direct link to enableResponseValidation"></a></h4><p>Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for <code>enableResponseValidation</code> is <code>false</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableResponseValidation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Disabling this setting will offer major performance improvements, but at the potential expense of data.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="globalresponsetimeout">globalResponseTimeout<a href="#globalresponsetimeout" class="hash-link" aria-label="Direct link to globalResponseTimeout" title="Direct link to globalResponseTimeout"></a></h4><p>The <code>globalResponseTimeout</code> configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns.</p><p>If not explicitly defined, there might be a system-specific or default value that applies.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">globalResponseTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">5000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this given example, the <code>globalResponseTimeout</code> is set to <code>5000</code> milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="upstream">@upstream<a href="#upstream" class="hash-link" aria-label="Direct link to @upstream" title="Direct link to @upstream"></a></h2><p>The <code>upstream</code> directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">UpstreamSetting</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The various <code>UpstreamSetting</code> options and their details are explained below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="poolidletimeout">poolIdleTimeout<a href="#poolidletimeout" class="hash-link" aria-label="Direct link to poolIdleTimeout" title="Direct link to poolIdleTimeout"></a></h4><p>The time in seconds that the connection pool will wait before closing idle connections.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">poolIdleTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="poolmaxidleperhost">poolMaxIdlePerHost<a href="#poolmaxidleperhost" class="hash-link" aria-label="Direct link to poolMaxIdlePerHost" title="Direct link to poolMaxIdlePerHost"></a></h4><p>The maximum number of idle connections that will be maintained per host.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">poolMaxIdlePerHost</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepaliveinterval">keepAliveInterval<a href="#keepaliveinterval" class="hash-link" aria-label="Direct link to keepAliveInterval" title="Direct link to keepAliveInterval"></a></h4><p>The time in seconds between each keep-alive message sent to maintain the connection.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveInterval</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepalivetimeout">keepAliveTimeout<a href="#keepalivetimeout" class="hash-link" aria-label="Direct link to keepAliveTimeout" title="Direct link to keepAliveTimeout"></a></h4><p>The time in seconds that the connection will wait for a keep-alive message before closing.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepalivewhileidle">keepAliveWhileIdle<a href="#keepalivewhileidle" class="hash-link" aria-label="Direct link to keepAliveWhileIdle" title="Direct link to keepAliveWhileIdle"></a></h4><p>A boolean value that determines whether keep-alive messages should be sent while the connection is idle.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveWhileIdle</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="proxy">proxy<a href="#proxy" class="hash-link" aria-label="Direct link to proxy" title="Direct link to proxy"></a></h4><p>The <code>proxy</code> setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">proxy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">url</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://localhost:3000"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the provided example, we've set the proxy's <code>url</code> to "http://localhost:3000". This configuration ensures that all requests aimed at the designated <code>baseURL</code> are first channeled through this proxy. To illustrate, if the <code>baseURL</code> is "<a href="http://jsonplaceholder.typicode.com%22" target="_blank" rel="noopener noreferrer">http://jsonplaceholder.typicode.com"</a>, any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="connecttimeout">connectTimeout<a href="#connecttimeout" class="hash-link" aria-label="Direct link to connectTimeout" title="Direct link to connectTimeout"></a></h4><p>The time in seconds that the connection will wait for a response before timing out.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">connectTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="timeout">timeout<a href="#timeout" class="hash-link" aria-label="Direct link to timeout" title="Direct link to timeout"></a></h4><p>The maximum time in seconds that the connection will wait for a response.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">timeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="tcpkeepalive">tcpKeepAlive<a href="#tcpkeepalive" class="hash-link" aria-label="Direct link to tcpKeepAlive" title="Direct link to tcpKeepAlive"></a></h4><p>The time in seconds between each TCP keep-alive message sent to maintain the connection.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">tcpKeepAlive</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="useragent">userAgent<a href="#useragent" class="hash-link" aria-label="Direct link to userAgent" title="Direct link to userAgent"></a></h4><p>The User-Agent header value to be used in HTTP requests.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">userAgent</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Tailcall/1.0"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="allowedheaders">allowedHeaders<a href="#allowedheaders" class="hash-link" aria-label="Direct link to allowedHeaders" title="Direct link to allowedHeaders"></a></h4><p>The <code>allowedHeaders</code> configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. +<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Getting Started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/configuration/">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/launch/">Launch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting_started/execute/">Execute</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/">Problem Statement</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/architecture/">Architecture</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/cli/">CLI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/intro/operators/">Operators</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/intro/context/">Context</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Guides</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/n+1/">Tackling N + 1</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Introduction</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Operators</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Operators</h1></header><p>Tailcall DSL builds on your existing GraphQL knowledge by allowing the addition of some custom operators. These operators provide powerful compile time guarantees to make sure your API composition is tight and robust. The operator information is used to automatically generates highly optimized resolver logic for your types.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="server">@server<a href="#server" class="hash-link" aria-label="Direct link to @server" title="Direct link to @server"></a></h2><p>The <code>@server</code> directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">ServerSettings</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this templated structure, replace <code>...[ServerSettings]...</code> with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary.</p><p>The various <code>ServerSettings</code> options and their details are explained below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="port">port<a href="#port" class="hash-link" aria-label="Direct link to port" title="Direct link to port"></a></h4><p>This refers to the <code>port</code> on which the Tailcall will be running. If not specified, the default port is <code>8000</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">port</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">8090</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, the <code>port</code> is set to <code>8090</code>. This means that the Tailcall will be accessible at <code>http://localhost:8090</code>.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablecachecontrolheader">enableCacheControlHeader<a href="#enablecachecontrolheader" class="hash-link" aria-label="Direct link to enableCacheControlHeader" title="Direct link to enableCacheControlHeader"></a></h4><p>The <code>enableCacheControlHeader</code> configuration, when activated, instructs Tailcall to transmit <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control" target="_blank" rel="noopener noreferrer">Cache-Control</a> headers in its responses. The <code>max-age</code> value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to <code>false</code> meaning no header is set.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableCacheControlHeader</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablegraphiql">enableGraphiql<a href="#enablegraphiql" class="hash-link" aria-label="Direct link to enableGraphiql" title="Direct link to enableGraphiql"></a></h4><p>This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. <a href="https://github.com/graphql/graphiql" target="_blank" rel="noopener noreferrer">GraphiQL</a> is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as <code>/graphiql</code>, you grant access to this IDE at that specific URL endpoint, like <code>http://localhost:8000/graphiql</code>. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">port</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">8000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableGraphiql</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/graphiql"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="vars">vars<a href="#vars" class="hash-link" aria-label="Direct link to vars" title="Direct link to vars"></a></h4><p>This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">vars</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"apiKey"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"YOUR_API_KEY_HERE"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">externalData</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Data</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/external-api/data"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">headers</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Authorization"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Bearer {{vars.apiKey}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the provided example, a variable named <code>apiKey</code> is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the <code>externalData</code> endpoint, it includes the <code>apiKey</code> in the Authorization header of the HTTP request.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Local variables, like <code>apiKey</code>, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enableintrospection">enableIntrospection<a href="#enableintrospection" class="hash-link" aria-label="Direct link to enableIntrospection" title="Direct link to enableIntrospection"></a></h4><p>This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (<code>true</code>).</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableIntrospection</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablequeryvalidation">enableQueryValidation<a href="#enablequeryvalidation" class="hash-link" aria-label="Direct link to enableQueryValidation" title="Direct link to enableQueryValidation"></a></h4><p>The <code>enableQueryValidation</code> configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to <strong>enhance server performance</strong> at the cost of such checks. This defaults to <code>true</code> if not specified.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableQueryValidation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, <code>enableQueryValidation</code> is set to <code>false</code>, bypassing the validation phase for incoming queries.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enableresponsevalidation">enableResponseValidation<a href="#enableresponsevalidation" class="hash-link" aria-label="Direct link to enableResponseValidation" title="Direct link to enableResponseValidation"></a></h4><p>Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for <code>enableResponseValidation</code> is <code>false</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableResponseValidation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Disabling this setting will offer major performance improvements, but at the potential expense of data.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="globalresponsetimeout">globalResponseTimeout<a href="#globalresponsetimeout" class="hash-link" aria-label="Direct link to globalResponseTimeout" title="Direct link to globalResponseTimeout"></a></h4><p>The <code>globalResponseTimeout</code> configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns.</p><p>If not explicitly defined, there might be a system-specific or default value that applies.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@server</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">globalResponseTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">5000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this given example, the <code>globalResponseTimeout</code> is set to <code>5000</code> milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="upstream">@upstream<a href="#upstream" class="hash-link" aria-label="Direct link to @upstream" title="Direct link to @upstream"></a></h2><p>The <code>upstream</code> directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">UpstreamSetting</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token operator" style="color:rgb(212, 212, 212)">...</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The various <code>UpstreamSetting</code> options and their details are explained below.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="poolidletimeout">poolIdleTimeout<a href="#poolidletimeout" class="hash-link" aria-label="Direct link to poolIdleTimeout" title="Direct link to poolIdleTimeout"></a></h4><p>The time in seconds that the connection pool will wait before closing idle connections.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">poolIdleTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="poolmaxidleperhost">poolMaxIdlePerHost<a href="#poolmaxidleperhost" class="hash-link" aria-label="Direct link to poolMaxIdlePerHost" title="Direct link to poolMaxIdlePerHost"></a></h4><p>The maximum number of idle connections that will be maintained per host.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">poolMaxIdlePerHost</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepaliveinterval">keepAliveInterval<a href="#keepaliveinterval" class="hash-link" aria-label="Direct link to keepAliveInterval" title="Direct link to keepAliveInterval"></a></h4><p>The time in seconds between each keep-alive message sent to maintain the connection.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveInterval</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepalivetimeout">keepAliveTimeout<a href="#keepalivetimeout" class="hash-link" aria-label="Direct link to keepAliveTimeout" title="Direct link to keepAliveTimeout"></a></h4><p>The time in seconds that the connection will wait for a keep-alive message before closing.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="keepalivewhileidle">keepAliveWhileIdle<a href="#keepalivewhileidle" class="hash-link" aria-label="Direct link to keepAliveWhileIdle" title="Direct link to keepAliveWhileIdle"></a></h4><p>A boolean value that determines whether keep-alive messages should be sent while the connection is idle.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">keepAliveWhileIdle</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="proxy">proxy<a href="#proxy" class="hash-link" aria-label="Direct link to proxy" title="Direct link to proxy"></a></h4><p>The <code>proxy</code> setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">proxy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">url</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://localhost:3000"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the provided example, we've set the proxy's <code>url</code> to "http://localhost:3000". This configuration ensures that all requests aimed at the designated <code>baseURL</code> are first channeled through this proxy. To illustrate, if the <code>baseURL</code> is "<a href="http://jsonplaceholder.typicode.com%22" target="_blank" rel="noopener noreferrer">http://jsonplaceholder.typicode.com"</a>, any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="connecttimeout">connectTimeout<a href="#connecttimeout" class="hash-link" aria-label="Direct link to connectTimeout" title="Direct link to connectTimeout"></a></h4><p>The time in seconds that the connection will wait for a response before timing out.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">connectTimeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="timeout">timeout<a href="#timeout" class="hash-link" aria-label="Direct link to timeout" title="Direct link to timeout"></a></h4><p>The maximum time in seconds that the connection will wait for a response.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">timeout</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="tcpkeepalive">tcpKeepAlive<a href="#tcpkeepalive" class="hash-link" aria-label="Direct link to tcpKeepAlive" title="Direct link to tcpKeepAlive"></a></h4><p>The time in seconds between each TCP keep-alive message sent to maintain the connection.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">tcpKeepAlive</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">60</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="useragent">userAgent<a href="#useragent" class="hash-link" aria-label="Direct link to userAgent" title="Direct link to userAgent"></a></h4><p>The User-Agent header value to be used in HTTP requests.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">userAgent</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Tailcall/1.0"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="allowedheaders">allowedHeaders<a href="#allowedheaders" class="hash-link" aria-label="Direct link to allowedHeaders" title="Direct link to allowedHeaders"></a></h4><p>The <code>allowedHeaders</code> configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. If <code>allowedHeaders</code> isn't specified, no incoming headers will be forwarded to the upstream services, which can provide an added layer of security but might restrict essential data flow.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">allowedHeaders</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"Authorization"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"X-Api-Key"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, the <code>allowedHeaders</code> is set to allow only <code>Authorization</code> and <code>X-Api-Key</code> headers. This means that requests containing these headers will forward them to upstream services, while all others will be ignored. It ensures that only expected headers are communicated to dependent services, emphasizing security and consistency.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="baseurl">baseURL<a href="#baseurl" class="hash-link" aria-label="Direct link to baseURL" title="Direct link to baseURL"></a></h4><p>This refers to the default base URL for your APIs. If it's not explicitly mentioned in the <code>@upstream</code> operator, then each <a href="#http">@http</a> operator must specify its own <code>baseURL</code>. If neither <code>@server</code> nor <a href="#http">@http</a> provides a <code>baseURL</code>, it results in a compilation error.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"http://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this representation, the <code>baseURL</code> is set as <code>http://jsonplaceholder.typicode.com</code>. Thus, all API calls made by <code>@http</code> will prepend this URL to their respective paths.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Ensure that your base URL remains free from specific path segments.</p><ul><li><strong>GOOD:</strong> <code>@upstream(baseURL: http://jsonplaceholder.typicode.com)</code></li><li><strong>BAD:</strong> <code>@upstream(baseURL: http://jsonplaceholder.typicode.com/api)</code></li></ul></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enablehttpcache">enableHttpCache<a href="#enablehttpcache" class="hash-link" aria-label="Direct link to enableHttpCache" title="Direct link to enableHttpCache"></a></h4><p>When activated, directs Tailcall to utilize HTTP caching mechanisms. These mechanisms, in accordance with the <a href="https://tools.ietf.org/html/rfc7234" target="_blank" rel="noopener noreferrer">HTTP Caching RFC</a>, are designed to improve performance by reducing unnecessary data fetches. If left unspecified, this feature defaults to <code>false</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">enableHttpCache</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">false</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="batch">batch<a href="#batch" class="hash-link" aria-label="Direct link to batch" title="Direct link to batch"></a></h4><p>An object that specifies the batch settings, including <code>maxSize</code> (the maximum size of the batch), <code>delay</code> (the delay in milliseconds between each batch), and <code>headers</code> (an array of HTTP headers to be included in the batch).</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@upstream</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">batch</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">maxSize</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">1000</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">delay</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">10</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">headers</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"X-Server"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Authorization"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">mutation</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="http">@http<a href="#http" class="hash-link" aria-label="Direct link to @http" title="Direct link to @http"></a></h2><p>This <strong>@http</strong> operator serves as an indication of a field or node that is underpinned by a REST API. For Example:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, the <code>@http</code> operator is added to the <code>user</code> field of the <code>Query</code> type. This means that the <code>user</code> field is underpinned by a REST API. The <a href="#path">path</a> argument is used to specify the path of the REST API. In this case, the path is <code>/users</code>. This means that the GraphQL server will make a GET request to <code>https://jsonplaceholder.typicode.com/users</code> when the <code>user</code> field is queried.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="baseurl-1">baseURL<a href="#baseurl-1" class="hash-link" aria-label="Direct link to baseURL" title="Direct link to baseURL"></a></h4><p>This refers to the base URL of the API. If not specified, the default base URL is the one specified in the <a href="#server">@server</a> operator.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">baseURL</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"https://jsonplaceholder.typicode.com"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="path">path<a href="#path" class="hash-link" aria-label="Direct link to path" title="Direct link to path"></a></h4><p>This refers to the API endpoint you're going to call. For instance <a href="https://jsonplaceholder.typicode.com/users%60" target="_blank" rel="noopener noreferrer">https://jsonplaceholder.typicode.com/users`</a>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If your API endpoint contains dynamic segments, you can use Mustache templates to substitute variables. For example, to fetch a specific user, the path can be written as <code>/users/{{args.id}}</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{args.id}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="method">method<a href="#method" class="hash-link" aria-label="Direct link to method" title="Direct link to method"></a></h4><p>This refers to the HTTP method of the API call. Commonly used methods include GET, POST, PUT, DELETE, etc. If not specified, the default method is GET. For example:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">createUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">input</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token atom-input class-name" style="color:rgb(78, 201, 176)">UserInput</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">method</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"POST"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="query">query<a href="#query" class="hash-link" aria-label="Direct link to query" title="Direct link to query"></a></h4><p>This represents the query parameters of your API call. You can pass it as a static object or use Mustache template for dynamic parameters. These parameters will be added to the URL. For example:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userPosts</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">ID</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/posts"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"userId"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{args.id}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="body">body<a href="#body" class="hash-link" aria-label="Direct link to body" title="Direct link to body"></a></h4><p>The body of the API call. It's used for methods like POST or PUT that send data to the server. You can pass it as a static object or use a Mustache template to substitute variables from the GraphQL variables. For example:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">createUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">input</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token atom-input class-name" style="color:rgb(78, 201, 176)">UserInput</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">method</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"POST"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">body</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{args.input}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the example above, the <code>createUser</code> mutation sends a POST request to <code>/users</code>, with the input object converted to JSON and included in the request body.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="headers">headers<a href="#headers" class="hash-link" aria-label="Direct link to headers" title="Direct link to headers"></a></h4><p>The <code>headers</code> parameter allows you to customize the headers of the HTTP request made by the <code>@http</code> operator. It is used by specifying a key-value map of header names and their values.</p><p>For instance:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">createUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">input</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token atom-input class-name" style="color:rgb(78, 201, 176)">UserInput</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">headers</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"X-Server"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Tailcall"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this example, a request to <code>/users</code> will include an additional HTTP header <code>X-Server</code> with the value <code>Tailcall</code>.</p><p>You can make use of mustache templates to provide dynamic values for headers, derived from the arguments or <a href="/docs/intro/context/">context</a> provided in the request. For example:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Mutation</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">users</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">headers</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"X-Server"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"Tailcall"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"User-Name"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{args.name}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In this scenario, the <code>User-Name</code> header's value will dynamically adjust according to the <code>name</code> argument passed in the request.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="groupby">groupBy<a href="#groupby" class="hash-link" aria-label="Direct link to groupBy" title="Direct link to groupBy"></a></h4><p>The <code>groupBy</code> parameter groups multiple data requests into a single call. For more details please refer out <a href="/docs/guides/n+1/#solving-using-batching">n + 1 guide</a>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">key</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">value</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"{{value.userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">groupBy</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"id"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li><code>query: {key: "id", value: "{{value.userId}}"}]</code>: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the <code>userId</code> from the parent <code>Post</code>. For a batch of posts, the CLI compiles a single URL, such as <code>/users?id=1&id=2&id=3...id=10</code>, consolidating multiple requests into one.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="modify">@modify<a href="#modify" class="hash-link" aria-label="Direct link to @modify" title="Direct link to @modify"></a></h2><p>The <code>@modify</code> operator in GraphQL provides the flexibility to alter the attributes of a field or a node within your GraphQL schema. Here's how you can use this operator:</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="name">name<a href="#name" class="hash-link" aria-label="Direct link to name" title="Direct link to name"></a></h4><p>You can rename a field or a node in your GraphQL schema using the <code>name</code> argument in the <code>@modify</code> operator. This can be helpful when the field name in your underlying data source doesn't match the desired field name in your schema. For instance:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@modify</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"userId"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><code>@modify(name: "userId")</code> tells GraphQL that although the field is referred to as <code>id</code>in the underlying data source, it should be presented as <code>userId</code> in your schema.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="omit">omit<a href="#omit" class="hash-link" aria-label="Direct link to omit" title="Direct link to omit"></a></h4><p>You can exclude a field or a node from your GraphQL schema using the <code>omit</code> argument in the <code>@modify</code> operator. This can be useful if you want to keep certain data hidden from the client. For instance:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@modify</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">omit</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><code>@modify(omit: true)</code> tells GraphQL that the <code>id</code> field should not be included in the schema, thus it won't be accessible to the client.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="inline">@inline<a href="#inline" class="hash-link" aria-label="Direct link to @inline" title="Direct link to @inline"></a></h2><p>The <code>@inline</code> operator simplifies data structures and fetch processes by 'inlining' or flattening a field or node within your schema. It works by modifying the schema and the data transformation process, essentially streamlining how nested data is accessed and presented.</p><p>For instance, consider a schema:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">email</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">address</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Address</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Address</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">street</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">city</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">state</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">postUserStreet</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@inline</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"user"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"address"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"street"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>@inline</code> operator, in this case, is applied to the <code>postUserStreet</code> field of the <code>Query</code> type. It includes a <code>path</code> argument, indicating the chain of fields to be traversed from <code>Post</code> to the field to be inlined.</p><p>Post application, the schema becomes:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">postUserStreet</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>As seen, the <code>Post</code>, <code>User</code>, and <code>Address</code> types are eliminated from the schema. The <code>postUserStreet</code> now directly returns a <code>String</code> representing the address street, thereby simplifying the client-side data fetch process. <code>@inline</code> operator also take cares of nullablity of the fields. If any of the fields in the path is nullable, the resulting type will be nullable.</p><p>Additionally, <code>@inline</code> supports indexing, meaning you can specify the array index to be inlined. If a field <code>users</code> is of type <code>[User]</code>, and you want to inline the first user, you can specify the path as <!-- -->[<code>"users"</code>,<code>"0"</code>,<code>"name"</code>]<!-- -->.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">firstUser</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@inline</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"0"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"name"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In conclusion, the <code>@inline</code> operator helps tidy up your schema and streamline data fetching by reducing query depth, promoting better performance and simplicity.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="const">@const<a href="#const" class="hash-link" aria-label="Direct link to @const" title="Direct link to @const"></a></h2><p>The <code>@const</code> operators allows us to embed a constant response for the schema. For eg:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#9CDCFE"><span class="token keyword" style="color:rgb(86, 156, 214)">schema</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">query</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Query</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@const</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">data</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"John"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">,</span><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">age</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(181, 206, 168)">12</span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">age</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token plain"></span><br></span><span class="token-line" style="color:#9CDCFE"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The const operator will also validate the provided value at compile time to make sure that it matches the of the field. If the schema of the provided value doesn't match the type of the field, a descriptive error message is show on the console.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="operator-composition">Operator Composition<a href="#operator-composition" class="hash-link" aria-label="Direct link to Operator Composition" title="Direct link to Operator Composition"></a></h2><p>This example illustrates the concept of composition in GraphQL, which allows you to combine multiple operations (known as "operators") to build more complex transformations of data.</p><p>The given schema is defining two data types - <code>User</code> and <code>Post</code>. The <code>User</code> type has fields <code>id</code> and <code>name</code>, and the <code>Post</code> type initially has fields <code>user</code> and <code>userId</code>.</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">user</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@inline</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">[</span><span class="token string" style="color:rgb(206, 145, 120)">"name"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">]</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@modify</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"userName"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"> </span><span class="token directive function" style="color:rgb(220, 220, 170)">@http</span><span class="token punctuation" style="color:rgb(212, 212, 212)">(</span><span class="token attr-name" style="color:rgb(156, 220, 254)">path</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(206, 145, 120)">"/users/{{userId}}"</span><span class="token punctuation" style="color:rgb(212, 212, 212)">)</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>However, it uses a series of operators to modify the <code>user</code> field.</p><ol><li><p>The <code>@inline(path: ["name"])</code> operator is used to drill down into the <code>User</code> object, specifically targeting the <code>name</code> field. This is equivalent to fetching the <code>User.name</code> property.</p></li><li><p>The <code>@modify(name: "userName")</code> operator is used to name the inlined <code>name</code> field to <code>userName</code>. So, instead of a <code>user</code> field that is a <code>User</code> object, we now have a <code>userName</code> field that is a <code>String</code>.</p></li><li><p>The <code>@http(path: "/users/{{userId}}")</code> operator is used to instruct the resolver to make an HTTP request to fetch the user data from a specified path (i.e., <code>/users/{{userId}}</code>), where <code>{{userId}}</code> is a placeholder that would be replaced with the actual <code>userId</code> when making the request.</p></li></ol><p>The schema after this transformation looks like this:</p><div class="language-graphql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#9CDCFE;--prism-background-color:#1E1E1E"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-graphql codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv codeBlockLinesWithNumbering_o6Pm"><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">User</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">id</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">name</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain" style="display:inline-block"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token keyword" style="color:rgb(86, 156, 214)">type</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(78, 201, 176)">Post</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(212, 212, 212)">{</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userName</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">String</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"> </span><span class="token attr-name" style="color:rgb(156, 220, 254)">userId</span><span class="token punctuation" style="color:rgb(212, 212, 212)">:</span><span class="token plain"> </span><span class="token scalar">Int</span><span class="token operator" style="color:rgb(212, 212, 212)">!</span><span class="token plain"></span></span><br></span><span class="token-line codeLine_lJS_" style="color:#9CDCFE"><span class="codeLineNumber_Tfdd"></span><span class="codeLineContent_feaV"><span class="token plain"></span><span class="token punctuation" style="color:rgb(212, 212, 212)">}</span></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>So, we've used composition of operators to take a complex object (the <code>User</code> inside the <code>Post</code>), extract a specific part of it (<code>name</code>), name that part (<code>userName</code>), and then instruct GraphQL how to fetch the data using an HTTP request.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>It is important to note that the order of the operators doesn't matter. The resulting schema will always be the same.</p></div></div><p>This is a powerful mechanism that allows you to make your GraphQL schema more precise, easier to understand, and more suitable for the specific needs of your application.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/tailcallhq/tailcallhq.github.io/tree/develop/docs/intro/operators.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/intro/cli/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">CLI</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/intro/context/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Context</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#server" class="table-of-contents__link toc-highlight">@server</a></li><li><a href="#upstream" class="table-of-contents__link toc-highlight">@upstream</a></li><li><a href="#http" class="table-of-contents__link toc-highlight">@http</a></li><li><a href="#modify" class="table-of-contents__link toc-highlight">@modify</a></li><li><a href="#inline" class="table-of-contents__link toc-highlight">@inline</a></li><li><a href="#const" class="table-of-contents__link toc-highlight">@const</a></li><li><a href="#operator-composition" class="table-of-contents__link toc-highlight">Operator Composition</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/index.html b/index.html index 8d742b81d2..dcadc90255 100644 --- a/index.html +++ b/index.html @@ -10,13 +10,13 @@ <link rel="preconnect" href="https://www.googletagmanager.com"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-JEP3QDWT0G"></script> <script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-JEP3QDWT0G",{})</script><link rel="stylesheet" href="/assets/css/styles.0c2b9a14.css"> -<link rel="preload" href="/assets/js/runtime~main.5885dc59.js" as="script"> -<link rel="preload" href="/assets/js/main.defc20e4.js" as="script"> +<link rel="preload" href="/assets/js/runtime~main.db14dabc.js" as="script"> +<link rel="preload" href="/assets/js/main.2e41dac0.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus"> <div id="__docusaurus-base-url-issue-banner-container"></div><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo-light.svg" alt="Tailcall Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Tailcall</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/about/">About</a><a href="https://github.com/tailcallhq/graphql-benchmarks#benchmark-results" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Performance</a><a class="navbar__item navbar__link" href="/docs/">Docs</a><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Blog</a><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Discord</a><div class="searchBox_ZlJk"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input type="search" id="search_input_react" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><header class="hero hero--primary heroBanner_qdFl"><div class="container"><h1 class="hero__title"><div>Zero Code</div><div>GraphQL Backend</div></h1><p class="hero__subtitle">Bootstrap Instantly . Iterate Effortlessly . Scale Fearlessly</p><div class="buttons_AeoN"><a class="button button--primary button--lg" href="/docs/getting_started/">Get Started</a><a href="https://github.com/tailcallhq/tailcall/" target="_blank" rel="noopener noreferrer" class="button button--secondary button--lg star-button"><svg stroke="currentColor" fill="none" stroke-width="3" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="20" width="20" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg><span> Star</span><span style="transition:max-width 1s;opacity:1s" class="w-full overflow-hidden whitespace-nowrap max-w-[100px] opacity-100"> </span></a></div></div></header><main><section class="features_t9lD"><div class="container"><div class="row"><div class="col col--4"><div class="text--center"></div><div class="text--center padding-horiz--md"><h3>🚀 Blazingly Fast</h3><p>Leverage breakthrough performance optimizations to deliver the fastest experience to your users.</p></div></div><div class="col col--4"><div class="text--center"></div><div class="text--center padding-horiz--md"><h3>🎖 Battle Tested</h3><p>Trust in Tailcall's robust and reliable system, proven in the toughest tech environments at scale.</p></div></div><div class="col col--4"><div class="text--center"></div><div class="text--center padding-horiz--md"><h3>⏰️ Productive</h3><p>Boost your team's productivity with seamless API integration, compile time validations and simplified collaboration.</p></div></div></div><div class="row row-center"><div class="col col--4"><div class="text--center"></div><div class="text--center padding-horiz--md"><h3>❤️ Open Source</h3><p>It's not just using a tool, join a global community of developers committed to shaping the future of API orchestration.</p></div></div></div></div></section></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting_started/">Installation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/tailcallhq/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://blog.tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item" position="right">Blog</a></li><li class="footer__item"><a href="https://discord.gg/Q2ZExpFCnA" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/about/">About</a></li><li class="footer__item"><a href="https://www.linkedin.com/company/tailcall" target="_blank" rel="noopener noreferrer" class="footer__link-item">Linkedin</a></li><li class="footer__item"><a href="https://twitter.com/tailcallhq" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:hi@tailcall.run" target="_blank" rel="noopener noreferrer" class="footer__link-item">hi@tailcall.run</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2023 Tailcall, Inc. </div></div></div></footer></div> -<script src="/assets/js/runtime~main.5885dc59.js"></script> -<script src="/assets/js/main.defc20e4.js"></script> +<script src="/assets/js/runtime~main.db14dabc.js"></script> +<script src="/assets/js/main.2e41dac0.js"></script> </body> </html> \ No newline at end of file diff --git a/lunr-index-1699099639045.json b/lunr-index-1699099639045.json deleted file mode 100644 index db4d981629..0000000000 --- a/lunr-index-1699099639045.json +++ /dev/null @@ -1 +0,0 @@ -{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,294.024,1,371.371,2,164.089]],["content/0",[3,11.186,4,12.07,5,11.186,6,10.031,7,11.186,8,9.171,9,9.171,10,9.171,11,9.171,12,9.171,13,9.171,14,9.171,15,9.171,16,9.171,17,8.224,18,9.171,19,9.171,20,9.171]],["keywords/0",[]],["title/1",[1,371.371,2,164.089,21,525.48]],["content/1",[1,7.939,2,3.508,21,9.236,22,7.001,23,9.236,24,9.236,25,5.767,26,4.064,27,8.282,28,1.879,29,6.527,30,10.684,31,6.122,32,9.236,33,10.684,34,10.684,35,9.236,36,10.684,37,10.684,38,10.684,39,10.684]],["keywords/1",[]],["title/2",[1,371.371,2,164.089,40,471.213]],["content/2",[1,3.031,2,1.339,3,12.505,4,13.061,5,12.505,6,11.213,7,12.505,8,11.089,9,11.089,10,11.089,11,11.089,12,11.089,13,11.089,14,11.089,15,11.089,16,11.089,17,9.943,18,11.089,19,11.089,20,11.089,28,0.513,35,2.522,40,2.261,41,2.917,42,1.911,43,2.917,44,2.917,45,2.067,46,2.261,47,2.261,48,1.671,49,2.917]],["keywords/2",[]],["title/3",[50,933.725]],["content/3",[1,9.302,2,3.451,22,5.743,23,9.914,24,7.577,25,4.731,26,3.334,28,1.541,29,5.355,51,8.765,52,8.765,53,6.21,54,4.472,55,11.468,56,9.914,57,8.765,58,5.022,59,5.743,60,8.765,61,8.765,62,6.794,63,8.765,64,8.765,65,11.468,66,11.468,67,8.765,68,8.765,69,8.765,70,8.765,71,7.577,72,7.577,73,8.765,74,6.21,75,6.794,76,5.355,77,7.577,78,5.743,79,8.765]],["keywords/3",[]],["title/4",[80,570.45]],["content/4",[]],["keywords/4",[]],["title/5",[81,807.171]],["content/5",[28,1.732,75,7.635,80,8.913,81,10.683,82,6.978,83,9.849,84,8.514,85,6.017,86,5.316,87,3.479,88,6.306,89,3.921,90,4.526,91,7.635,92,9.849,93,8.514,94,7.635,95,8.514,96,4.764,97,7.635,98,9.849,99,9.849,100,8.514,101,7.635,102,9.849,103,8.514,104,3.921,105,7.635]],["keywords/5",[]],["title/6",[106,723.812]],["content/6",[53,6.845,75,7.489,80,8.592,82,6.845,84,8.351,85,5.902,86,5.214,87,3.959,88,6.23,89,3.845,90,4.44,91,7.489,93,8.351,94,7.489,95,8.351,96,4.673,106,9.464,107,8.351,108,14.064,109,8.351,110,6.33,111,8.351,112,10.554,113,3.674,114,8.351,115,8.351]],["keywords/6",[]],["title/7",[116,611.836]],["content/7",[54,4.993,56,10.64,71,8.459,80,8.632,87,3.464,89,3.895,90,4.497,116,6.412,117,6.933,118,6.412,119,9.786,120,4.733,121,4.993,122,9.786,123,9.786,124,2.233,125,9.786,126,9.786,127,3.56,128,8.459,129,9.786,130,8.459,131,8.459,132,8.459,133,4.081,134,7.586,135,6.412,136,4.081,137,9.786,138,9.786,139,9.786]],["keywords/7",[]],["title/8",[140,807.171]],["content/8",[28,1.353,72,9.087,76,4.701,80,8.23,86,4.153,87,3.792,88,6.109,89,4.766,90,6.191,94,5.965,96,3.722,97,5.965,106,5.965,110,5.042,117,5.452,118,5.042,121,3.926,127,2.799,140,12.705,141,4.409,142,6.888,143,3.926,144,7.695,145,10.512,146,10.512,147,10.512,148,4.554,149,9.281,150,5.452,151,6.422,152,10.512,153,7.695,154,7.695,155,6.652,156,5.965,157,3.209,158,4.409,159,6.652,160,6.652,161,7.695,162,6.652,163,5.965,164,5.965]],["keywords/8",[]],["title/9",[165,534.997]],["content/9",[0,2.755,2,3.516,26,2.166,28,1.491,31,5.804,48,3.263,54,5.725,86,3.074,89,2.267,124,3.33,132,4.924,133,3.536,148,2.166,157,5.003,165,3.263,166,2.491,167,3.732,168,5.18,169,4.575,170,6.573,171,3.522,172,5.696,173,4.415,174,5.696,175,5.696,176,2.166,177,3.177,178,5.696,179,1.744,180,3.48,181,3.263,182,4.415,183,5.696,184,5.696,185,5.168,186,4.415,187,3.48,188,5.467,189,1.537,190,4.415,191,4.415,192,3.907,193,4.193,194,4.101,195,3.48,196,4.655,197,6.007,198,4.032,199,4.326,200,2.617,201,5.803,202,4.415,203,3.732,204,3.732,205,4.415,206,4.924,207,5.696,208,3.074,209,3.074,210,4.101,211,3.48,212,4.924,213,2.267,214,3.48,215,4.415,216,4.415,217,3.48,218,4.924,219,4.924,220,5.696,221,3.263,222,5.696,223,5.696]],["keywords/9",[]],["title/10",[224,356.173,225,736.357]],["content/10",[]],["keywords/10",[]],["title/11",[226,449.87,227,397.458]],["content/11",[26,3.296,28,1.524,46,6.717,113,3.296,148,3.296,171,4.116,179,2.653,180,5.293,189,3.072,193,2.889,197,6.139,226,7.766,227,6.144,228,5.293,229,6.717,230,3.892,231,8.664,232,3.963,233,6.717,234,9.564,235,7.458,236,7.49,237,7.49,238,5.808,239,6.717,240,7.49,241,6.522,242,6.888,243,8.664,244,6.139,245,7.49,246,5.678,247,6.139,248,8.664,249,8.664,250,4.191]],["keywords/11",[]],["title/12",[171,216.151,251,245.513]],["content/12",[0,2.776,2,3.404,31,5.83,89,4.05,103,4.961,111,4.961,124,3.062,131,4.961,151,3.506,166,2.51,168,3.506,171,4.154,177,2.98,179,1.757,180,3.506,189,2.747,193,3.392,198,5.34,200,2.637,201,6.1,203,3.76,205,4.449,208,4.602,209,4.602,210,2.776,226,3.506,230,3.115,232,1.998,235,3.76,238,6.141,251,2.843,252,4.921,253,3.506,254,7.98,255,3.243,256,7.38,257,4.449,258,5.587,259,3.919,260,5.739,261,4.066,262,3.288,263,4.066,264,6.61,265,5.739,266,6.041,267,6.041,268,4.066,269,3.288,270,4.449,271,5.739,272,8.527,273,6.216,274,5.739,275,5.739,276,3.098,277,8.795,278,3.76,279,4.961,280,6.61,281,5.739,282,4.124,283,2.928,284,4.449,285,2.776,286,4.961,287,3.76]],["keywords/12",[]],["title/13",[230,225.457,251,245.513]],["content/13",[113,3.277,127,4.125,148,3.277,171,2.529,176,4.313,177,1.966,181,4.936,189,2.326,224,4.167,230,4.124,232,4.413,251,2.872,255,3.277,258,5.645,259,3.959,262,4.936,285,4.167,288,7.43,289,6.104,290,8.615,291,7.447,292,9.802,293,8.79,294,3.959,295,8.615,296,11.339,297,8.615,298,8.615,299,8.615,300,11.339,301,11.339,302,8.615,303,11.339,304,8.79,305,11.339,306,6.104,307,5.645,308,8.615,309,7.447,310,7.447,311,5.645]],["keywords/13",[]],["title/14",[312,348.291,313,371.371,314,371.371]],["content/14",[47,7.537,53,6.889,105,7.537,171,3.941,177,2.219,189,2.625,221,5.571,230,4.449,251,4.087,253,5.94,254,6.889,255,3.698,258,6.371,259,4.468,269,5.571,288,8.032,306,6.889,313,5.94,314,7.489,315,9.723,316,6.889,317,6.889,318,4.253,319,9.723,320,5.571,321,6.371,322,4.703,323,6.371]],["keywords/14",[]],["title/15",[113,231.209,324,430.679,325,328.104]],["content/15",[113,3.979,168,6.392,171,4.073,189,2.824,230,3.928,232,3.643,238,5.338,251,3.488,255,3.979,259,5.896,266,7.413,288,6.856,294,4.808,313,6.392,320,5.995,322,5.061,325,5.647,326,7.413,327,10.462,328,6.856,329,6.392,330,9.044]],["keywords/15",[]],["title/16",[313,371.371,331,525.48,332,525.48]],["content/16",[26,3.454,29,5.548,113,3.454,148,3.454,171,3.817,213,3.615,224,4.392,230,3.981,232,3.162,244,6.434,250,4.392,251,4.335,273,5.548,288,7.69,294,5.393,304,7.039,313,5.548,320,5.203,321,5.95,322,4.392,323,5.95,332,7.85,333,7.69,334,7.85,335,4.901,336,9.081,337,9.081,338,7.85,339,7.85,340,6.434,341,7.85,342,5.95,343,5.95,344,5.95,345,7.85,346,7.039,347,7.039,348,6.434,349,7.039]],["keywords/16",[]],["title/17",[241,348.291,350,398.314,351,310.165]],["content/17",[6,5.292,26,2.597,28,1.701,29,4.171,31,3.911,59,4.473,74,4.837,76,4.171,104,2.717,113,4.647,121,3.483,168,5.909,170,5.292,171,3.931,177,1.558,179,2.09,212,5.901,214,4.171,219,5.901,226,5.909,227,3.685,228,4.171,230,3.741,232,2.377,241,3.911,242,3.483,247,4.837,250,3.302,251,3.745,253,4.171,254,4.837,255,2.597,256,4.473,257,5.292,261,4.837,262,3.911,278,6.338,291,5.901,304,5.292,306,4.837,311,4.473,316,4.837,320,5.542,328,4.473,341,5.901,342,7.36,350,7.36,351,6.834,352,5.162,353,6.338,354,4.837,355,4.231,356,4.837,357,4.837,358,6.827,359,8.707,360,4.473,361,4.837,362,6.827,363,3.911,364,5.901,365,6.827,366,6.827,367,5.292,368,6.827,369,6.827,370,5.901,371,4.473,372,5.292,373,3.302]],["keywords/17",[]],["title/18",[312,348.291,374,525.48,375,525.48]],["content/18",[28,1.657,104,3.75,171,2.765,179,2.884,211,7.34,221,5.397,230,2.884,232,3.28,234,6.674,285,5.812,294,4.329,307,8.669,314,5.755,318,4.121,320,5.397,344,6.173,350,6.173,351,7.11,352,4.329,374,8.143,375,8.143,376,7.302,377,9.42,378,9.42,379,7.302,380,9.42,381,5.755,382,5.755,383,9.42,384,6.674,385,8.143,386,8.143,387,9.42,388,8.143,389,6.674]],["keywords/18",[]],["title/19",[324,521.715,390,636.554]],["content/19",[28,1.381,74,5.565,89,4.243,113,4.603,117,7.553,136,3.276,143,4.008,167,5.147,177,1.793,215,6.089,236,6.79,237,6.79,241,4.5,250,3.799,268,5.565,283,4.008,285,3.799,307,8.504,320,4.5,322,3.799,323,5.147,326,5.565,339,6.79,342,5.147,351,6.923,352,5.561,373,3.799,376,6.089,390,9.215,391,7.855,392,10.66,393,6.79,394,6.79,395,6.79,396,5.147,397,7.855,398,10.66,399,6.79,400,3.799,401,6.089,402,7.855,403,8.504,404,7.855,405,6.089,406,4.799,407,7.855,408,7.855,409,6.79,410,6.089,411,6.79,412,4.799,413,7.855,414,6.79,415,6.089,416,7.855]],["keywords/19",[]],["title/20",[113,231.209,331,525.48,417,607.869]],["content/20",[26,3.413,28,1.578,42,7.63,113,4.429,141,5.141,167,5.88,179,2.747,189,2.422,221,5.141,228,7.114,246,5.88,259,4.124,276,4.843,329,5.482,343,5.88,351,4.578,352,4.124,367,6.956,373,4.34,379,6.956,384,6.357,388,7.757,400,4.34,403,5.88,418,8.973,419,8.973,420,7.114,421,8.973,422,8.973,423,7.757,424,6.956,425,8.973,426,8.973,427,8.973,428,8.973,429,8.973,430,6.956,431,8.973,432,8.973,433,6.956,434,8.973,435,8.973,436,6.956,437,6.956,438,8.973,439,8.973]],["keywords/20",[]],["title/21",[440,736.357,441,636.554]],["content/21",[112,8.514,151,6.017,221,5.643,227,5.316,241,5.643,242,5.026,256,6.454,285,4.764,352,5.679,381,6.017,382,6.017,389,6.978,420,6.017,441,8.514,442,9.849,443,8.514,444,9.849,445,9.849,446,9.849,447,9.849,448,9.849,449,8.514,450,9.849,451,9.849,452,9.849,453,7.635,454,9.849,455,9.849,456,9.849,457,9.849,458,9.849,459,8.514,460,9.849,461,8.514]],["keywords/21",[]],["title/22",[22,295.27,386,389.538,462,389.538,463,389.538,464,450.612]],["content/22",[0,4.264,22,7.543,25,4.759,26,3.353,28,1.55,42,5.777,113,3.353,121,4.498,156,6.834,177,2.012,213,3.509,224,4.264,230,2.699,239,6.834,241,5.051,285,6.2,314,5.386,342,5.777,351,6.541,352,5.891,354,6.246,381,7.033,420,7.831,430,6.834,461,7.621,463,7.621,465,8.816,466,7.621,467,8.816,468,6.834,469,8.816,470,8.816,471,5.777,472,8.816,473,8.816,474,6.246,475,7.621,476,6.834,477,6.834,478,6.834,479,8.816,480,8.816,481,8.816]],["keywords/22",[]],["title/23",[476,471.213,482,607.869,483,525.48]],["content/23",[0,4.446,42,6.023,88,4.69,149,7.125,167,6.023,204,6.023,224,4.446,226,5.615,230,2.814,232,4.118,235,6.023,242,6.035,276,4.961,322,6.678,343,6.023,345,7.945,351,6.673,352,6.01,360,6.023,381,5.615,399,7.945,406,5.615,420,5.615,436,7.125,483,7.945,484,9.191,485,7.945,486,9.191,487,6.023,488,6.512,489,9.191,490,9.191,491,11.827,492,9.191,493,9.191,494,7.945]],["keywords/23",[]],["title/24",[234,430.679,495,607.869,496,525.48]],["content/24",[26,2.854,28,1.817,42,4.917,46,5.817,82,5.317,124,1.713,171,3.737,179,2.298,211,4.584,217,4.584,230,2.298,232,3.597,234,9.021,242,3.829,244,5.317,245,6.487,262,4.3,264,5.817,266,5.317,283,5.272,292,8.932,293,8.01,344,4.917,350,4.917,351,7.042,352,6.62,360,4.917,409,6.487,410,5.817,430,5.817,449,6.487,471,4.917,496,6.487,497,7.504,498,7.504,499,6.487,500,6.487,501,5.817,502,6.487,503,7.504,504,7.504,505,7.504,506,6.487,507,8.932,508,7.504,509,7.504,510,7.504,511,6.487,512,5.317,513,7.504,514,5.317,515,7.504,516,7.504,517,4.917,518,7.504,519,7.504,520,7.504,521,7.504,522,7.504]],["keywords/24",[]],["title/25",[523,607.869,524,525.48,525,525.48]],["content/25",[87,2.112,136,3.129,177,1.713,216,5.817,241,4.3,283,3.829,307,4.917,311,4.917,318,3.282,320,5.92,350,8.343,351,6.03,352,3.449,361,5.317,373,4.998,400,4.998,406,4.584,423,6.487,511,6.487,512,5.317,517,6.77,524,8.932,525,6.487,526,7.504,527,5.317,528,7.321,529,7.504,530,6.487,531,7.504,532,7.504,533,10.332,534,6.77,535,7.504,536,7.504,537,7.504,538,6.487,539,10.332,540,6.487,541,11.817,542,7.504,543,7.504,544,4.917,545,7.504,546,7.504,547,7.504,548,7.504,549,7.504,550,7.504,551,7.504,552,7.504,553,7.504,554,7.504,555,7.504,556,7.504,557,7.504,558,7.504,559,5.817,560,7.504,561,7.504,562,5.317,563,7.504,564,7.504,565,7.504,566,7.504,567,7.504,568,7.504,569,7.504]],["keywords/25",[]],["title/26",[570,723.812]],["content/26",[31,5.081,54,4.525,87,2.496,88,4.525,89,4.6,90,5.311,96,4.289,118,5.811,124,2.637,133,3.698,142,8.423,148,4.395,162,7.666,169,3.226,182,8.958,187,5.418,210,4.289,256,5.811,273,5.418,355,3.879,382,7.06,433,6.874,459,7.666,570,8.958,571,8.187,572,8.868,573,7.666,574,8.868,575,8.868,576,11.556,577,8.868,578,8.868,579,8.868,580,8.868,581,5.081,582,8.868,583,8.868,584,8.868,585,7.666,586,7.666,587,7.666]],["keywords/26",[]],["title/27",[124,118.125,312,296.546,588,517.558,589,316.197]],["content/27",[]],["keywords/27",[]],["title/28",[268,661.551]],["content/28",[2,3.538,25,7.075,58,6.209,127,3.942,171,3.181,176,4.122,228,6.621,267,7.678,285,5.242,344,7.101,373,5.242,581,6.209,590,10.837,591,9.368,592,10.837,593,7.678,594,7.678,595,9.368,596,7.678]],["keywords/28",[]],["title/29",[2,198.773,127,267.866]],["content/29",[0,5.28,2,3.816,48,6.254,58,6.254,116,7.152,127,3.971,136,4.552,171,3.204,179,3.342,189,3.554,196,5.016,210,5.28,258,7.152,280,8.461,282,5.28,597,10.915,598,8.461]],["keywords/29",[]],["title/30",[127,267.866,177,168.063]],["content/30",[0,3.054,2,3.182,28,1.11,58,5.24,101,4.894,104,2.513,116,4.137,148,4.484,171,3.156,177,2.691,179,3.61,189,3.942,213,3.64,224,5.201,229,4.894,232,3.184,238,3.222,242,3.222,252,3.054,255,2.401,259,2.902,262,3.618,269,5.24,283,3.222,294,2.902,307,4.137,311,4.137,321,5.993,322,3.054,326,4.473,329,3.857,330,5.458,343,4.137,346,4.894,367,4.894,373,3.054,400,4.424,437,4.894,468,8.336,487,4.137,527,4.473,581,6.161,591,5.458,593,4.473,594,4.473,599,6.314,600,6.314,601,4.894,602,9.146,603,9.146,604,7.906,605,4.936,606,5.458,607,4.473,608,4.137,609,6.314,610,6.314,611,6.314,612,6.314,613,9.146,614,6.314,615,6.314,616,6.314,617,6.314,618,5.458,619,6.314,620,5.458,621,6.314,622,4.894,623,6.314,624,6.314,625,6.314,626,5.458,627,5.458,628,4.894,629,6.314,630,6.314,631,6.314,632,4.894]],["keywords/30",[]],["title/31",[28,129.503,120,356.173]],["content/31",[80,5.482,82,6.357,87,3.278,90,4.124,120,5.633,141,6.672,143,4.578,157,3.742,165,5.141,189,2.422,215,6.956,233,6.956,252,4.34,253,5.482,269,5.141,335,4.843,343,5.88,353,7.63,372,6.956,373,5.633,400,5.633,406,5.482,544,5.88,587,7.757,605,4.843,633,8.973,634,5.88,635,6.357,636,5.88,637,8.973,638,6.956,639,4.124,640,8.973,641,8.973,642,7.757,643,8.973,644,8.973,645,8.973,646,8.973,647,6.956,648,7.757,649,8.973,650,7.757,651,5.88]],["keywords/31",[]],["title/32",[166,322.109,652,736.357]],["content/32",[2,3.703,28,1.294,48,4.216,54,3.754,86,3.972,87,2.071,120,3.559,124,3.272,127,3.708,136,3.068,157,3.068,169,3.708,176,3.877,177,3.026,179,3.121,189,1.986,190,5.704,191,5.704,192,4.072,193,3.899,194,4.93,198,4.057,199,5.968,200,3.381,201,6.803,202,5.704,203,4.821,204,4.821,208,3.972,209,3.972,213,2.929,224,3.559,230,2.253,282,3.559,363,4.216,400,3.559,605,3.972,606,6.361,632,5.704,634,4.821,639,3.381,653,7.358,654,7.358,655,7.358,656,5.704,657,7.358,658,7.358,659,7.358,660,7.222,661,7.358,662,5.704,663,7.358]],["keywords/32",[]],["title/33",[87,171.102,88,310.165,120,294.024]],["content/33",[2,3.332,28,1.228,54,3.564,87,2.767,90,3.21,96,4.754,120,4.754,124,3.365,127,2.541,157,2.913,176,2.657,177,2.596,179,2.138,182,7.619,189,1.885,192,4.826,210,3.378,213,2.78,224,4.754,276,3.77,312,7.731,318,4.975,321,4.577,396,6.441,400,5.501,544,6.441,589,7.947,596,4.948,605,6.662,634,4.577,651,4.577,660,4.948,662,7.619,664,6.516,665,6.984,666,9.829,667,6.984,668,6.038,669,5.414,670,6.984,671,6.964,672,6.964,673,6.038,674,6.984,675,9.829,676,4.577,677,4.948]],["keywords/33",[]],["title/34",[28,106.906,354,430.679,678,398.314]],["content/34",[2,2.326,25,4.65,87,2.425,89,3.429,109,7.447,120,4.167,124,2.893,133,3.593,148,3.277,155,7.447,157,4.729,169,3.134,177,2.588,181,4.936,188,6.121,189,2.326,192,2.999,193,2.872,195,5.263,198,3.429,199,5.786,201,5.485,208,4.65,209,4.65,214,5.263,228,5.263,255,3.277,282,4.167,318,3.769,325,4.65,335,4.65,348,6.104,355,3.769,400,4.167,605,4.65,628,6.678,678,5.645,679,7.447,680,7.447,681,8.615,682,6.104,683,8.615,684,8.615,685,5.645,686,8.615,687,7.43,688,4.167,689,6.104,690,6.678]],["keywords/34",[]],["title/35",[115,636.554,651,482.509]],["content/35",[2,3.387,26,2.758,28,1.775,48,6.65,85,6.165,86,3.914,87,2.041,120,4.881,121,5.149,177,2.649,179,2.22,180,4.431,187,6.165,188,3.914,189,3.133,192,2.525,198,4.017,205,5.622,214,4.431,224,3.508,238,5.149,255,2.758,282,3.508,311,4.752,318,4.414,323,4.752,324,5.138,325,3.914,335,5.447,347,5.622,348,5.138,356,5.138,376,7.823,420,4.431,468,5.622,487,4.752,512,5.138,528,5.138,562,5.138,604,6.269,605,3.914,607,5.138,638,5.622,639,3.333,671,5.138,672,5.138,678,4.752,682,5.138,687,6.612,688,4.881,689,5.138,690,7.823,691,6.269,692,7.252,693,7.252,694,3.172,695,5.622,696,4.752,697,5.138,698,6.269,699,6.269,700,6.269,701,6.269,702,7.252,703,7.252,704,6.269,705,6.269,706,7.252]],["keywords/35",[]],["title/36",[403,611.836]],["content/36",[2,2.688,17,5.516,53,5.042,89,3.964,124,3.613,168,4.347,177,2.622,179,3.049,192,4,196,3.27,198,2.832,200,3.27,208,5.375,213,2.832,279,6.151,286,6.151,294,3.27,312,4.077,324,5.042,355,3.113,403,4.663,571,5.042,573,6.151,586,6.151,687,6.525,707,7.116,708,7.116,709,6.151,710,7.72,711,7.116,712,7.116,713,9.958,714,11.488,715,7.116,716,7.116,717,7.116,718,7.116,719,7.116,720,7.116,721,7.116,722,7.116,723,7.116,724,7.116,725,7.116,726,7.116,727,7.116,728,7.116,729,7.116,730,7.116,731,7.116,732,7.116,733,7.116,734,7.116,735,7.116]],["keywords/36",[]],["title/37",[120,451.639]],["content/37",[]],["keywords/37",[]],["title/38",[664,534.997]],["content/38",[26,3.746,28,1.732,89,3.921,90,6.508,96,4.764,158,5.643,169,3.583,251,4.121,266,6.978,270,7.635,371,6.454,400,4.764,534,6.454,544,6.454,605,5.316,664,8.115,669,7.635,736,6.454,737,7.55,738,8.514,739,8.514,740,8.098,741,8.514,742,8.514,743,6.978,744,7.635]],["keywords/38",[]],["title/39",[192,180.193,318,226.398,589,316.197,671,366.694]],["content/39",[78,7.42,96,5.477,100,9.789,192,3.943,193,3.776,318,4.953,400,5.477,589,6.918,605,6.112,662,8.778,664,6.488,669,8.778,671,8.023,741,9.789,745,9.789]],["keywords/39",[]],["title/40",[169,339.663]],["content/40",[54,6.332,78,6.496,90,4.556,96,6.002,124,2.263,133,4.134,166,4.337,169,4.928,179,3.035,185,5.059,193,3.305,251,3.305,255,3.771,270,7.685,278,6.496,357,7.024,639,4.556,664,7.761,737,6.057,740,8.131,745,8.57,746,8.57,747,8.57,748,8.57,749,8.57,750,8.57,751,8.57]],["keywords/40",[]],["title/41",[142,611.836]],["content/41",[28,1.616,54,6.035,87,2.587,89,3.659,90,6.01,96,5.721,104,3.659,124,2.098,133,3.833,142,9.361,148,4.974,157,4.932,165,6.777,166,4.02,179,2.814,185,4.69,235,6.023,251,3.064,255,3.496,263,6.512,278,6.023,570,7.125,636,6.023,639,4.224,737,5.615,740,6.023,743,6.512,746,7.945,747,7.945,748,7.945,749,7.945,750,7.945,751,7.945,752,6.512]],["keywords/41",[]],["title/42",[753,807.171]],["content/42",[31,7.32,54,7.364,87,2.925,90,5.871,96,5.026,133,4.333,157,4.333,165,5.953,169,3.78,213,4.136,256,6.809,317,7.362,355,4.545,753,11.044,754,10.39,755,10.39,756,10.39,757,10.39,758,10.39,759,10.39,760,7.362]],["keywords/42",[]],["title/43",[227,503.989]],["content/43",[]],["keywords/43",[]],["title/44",[227,328.104,437,471.213,761,525.48]],["content/44",[28,1.449,87,2.319,107,7.123,114,7.123,121,4.204,130,7.123,136,3.436,143,4.204,150,8.784,158,6.308,169,4.51,171,2.419,189,2.972,213,3.28,217,5.034,226,5.034,230,3.371,242,5.617,247,5.838,251,2.747,263,5.838,273,6.726,280,6.387,289,5.838,323,5.399,333,7.214,347,6.387,348,5.838,361,5.838,415,6.387,559,6.387,581,4.721,660,5.838,672,5.838,737,5.034,744,6.387,752,7.8,762,8.24,763,8.24,764,6.387,765,12.398,766,8.24,767,5.838,768,7.123,769,8.24,770,7.123,771,8.24,772,8.24,773,8.24,774,8.24,775,6.387,776,8.24]],["keywords/44",[]],["title/45",[104,241.965,251,202.673,744,471.213]],["content/45",[26,3.433,58,5.172,104,4.653,121,4.606,136,3.764,143,5.965,169,3.284,171,3.431,176,3.433,179,2.764,189,2.437,206,7.803,211,5.515,227,4.872,238,4.606,244,6.395,246,5.915,247,6.395,251,3.01,285,4.366,317,6.395,333,7.66,363,5.172,364,7.803,401,6.997,414,7.803,415,6.997,474,6.395,500,7.803,695,6.997,736,5.915,737,5.515,768,10.106,777,9.026,778,9.026,779,6.997,780,9.026,781,9.026,782,9.026,783,7.803,784,7.803,785,7.803,786,9.026,787,6.997]],["keywords/45",[]],["title/46",[636,611.836]],["content/46",[26,2.315,28,1.07,48,3.487,87,1.713,88,3.105,104,4.612,110,3.987,113,3.386,117,6.308,124,2.032,136,2.538,141,3.487,143,3.105,150,4.311,158,3.487,168,3.718,171,4.004,176,3.386,179,2.726,180,3.718,189,3.128,197,4.311,211,3.718,213,3.544,224,5.093,251,3.863,252,2.943,253,5.439,255,3.386,259,4.092,262,3.487,278,3.987,285,2.943,287,5.834,294,2.796,310,5.26,312,5.101,313,3.718,318,2.662,321,3.987,325,3.285,326,4.311,354,4.311,355,3.895,356,4.311,373,5.093,394,5.26,395,5.26,405,6.902,433,4.717,471,3.987,487,5.834,501,4.717,514,4.311,562,4.311,589,5.439,622,4.717,632,4.717,634,3.987,635,6.308,636,7.592,664,3.487,679,5.26,682,4.311,736,3.987,788,5.26,789,5.26,790,5.26,791,6.085,792,7.697,793,6.085,794,6.085,795,6.085,796,6.085,797,5.26,798,6.085,799,4.717,800,6.085,801,4.717,802,6.085,803,4.311,804,6.085,805,6.085,806,4.311,807,6.085,808,6.085,809,5.26,810,5.26,811,5.26,812,6.085]],["keywords/46",[]],["title/47",[230,225.457,813,736.357]],["content/47",[2,2.642,116,6.412,124,3.392,141,5.607,150,6.933,176,3.722,177,2.233,189,3.322,200,4.497,203,6.412,208,5.282,209,5.282,217,5.978,230,2.996,232,4.285,322,4.733,478,7.586,488,6.933,636,6.412,806,8.72,814,7.586,815,9.786,816,9.786,817,9.786,818,9.786,819,9.786,820,12.308]],["keywords/47",[]],["title/48",[221,421.912,806,521.715]],["content/48",[0,2.745,25,5.455,28,0.998,31,3.251,45,4.02,88,2.895,89,2.259,104,4.999,110,3.718,121,2.895,143,4.314,149,8.682,164,4.399,171,2.482,173,4.399,179,3.429,213,2.259,217,3.467,218,4.905,221,3.251,227,3.063,230,1.737,232,1.976,251,2.819,255,2.158,257,4.399,261,4.02,264,4.399,289,4.02,294,2.608,306,4.02,318,2.482,329,3.467,342,3.718,346,4.399,349,4.399,355,2.482,371,5.541,373,2.745,381,5.166,382,3.467,389,5.991,405,4.399,406,6.843,412,5.166,420,7.318,453,4.399,475,4.905,476,4.399,477,4.399,485,4.905,502,7.309,528,4.02,538,4.905,540,7.309,562,4.02,634,3.718,638,4.399,639,2.608,647,4.399,694,3.699,704,4.905,737,3.467,739,4.905,752,4.02,764,4.399,767,4.02,775,4.399,806,8.486,821,5.674,822,5.674,823,4.905,824,5.674,825,5.674,826,4.905,827,4.905,828,8.455,829,5.674,830,5.674,831,5.674,832,8.455,833,4.905,834,5.674,835,7.309,836,4.905,837,5.674,838,5.674,839,5.674,840,4.905,841,5.674,842,4.905,843,5.674,844,5.674,845,5.674,846,8.455,847,5.674,848,5.674,849,5.674,850,5.674,851,5.674,852,4.399,853,5.674,854,5.674,855,5.674,856,5.674,857,4.905,858,5.674,859,4.905,860,5.674,861,5.674]],["keywords/48",[]],["title/49",[862,570.45]],["content/49",[]],["keywords/49",[]],["title/50",[87,207.269,862,449.87]],["content/50",[28,2.147,87,2.719,89,3.845,124,2.786,135,6.33,157,4.029,176,3.674,250,5.905,316,8.65,322,4.673,344,6.33,360,6.33,593,6.845,688,4.673,691,8.351,694,5.341,696,6.33,862,8.592,863,8.351,864,8.351,865,9.661,866,8.351,867,13.386,868,9.661,869,7.489,870,12.209,871,5.902]],["keywords/50",[]],["title/51",[866,807.171]],["content/51",[28,2.247,124,2.916,166,5.589,177,2.916,192,5.025,193,3.464,194,5.026,198,5.086,204,6.809,250,6.18,872,9.802,873,11.044,874,8.982,875,8.982,876,10.39]],["keywords/51",[]],["title/52",[688,451.639]],["content/52",[2,3.434,28,1.815,45,9.014,124,2.904,166,4.514,193,4.242,194,4.992,196,4.742,198,5.49,201,6.154,204,6.762,208,5.57,209,5.57,210,4.992,250,4.992,608,6.762,676,6.762,688,4.992,877,6.762,878,10.32,879,10.32]],["keywords/52",[]],["title/53",[696,611.836]],["content/53",[2,3.8,48,4.596,62,6.218,76,4.901,104,3.193,124,2.988,127,2.918,151,6.606,177,2.468,192,4.258,193,4.364,194,5.23,195,4.901,196,3.686,198,3.193,199,5.517,201,5.23,208,4.33,209,4.33,255,3.051,259,3.686,273,4.901,276,4.33,282,6.332,283,4.093,335,5.836,471,5.256,514,5.683,656,6.218,687,7.085,688,5.23,689,5.683,696,5.256,862,6.606,877,5.256,880,8.021,881,8.021,882,8.021,883,6.218,884,8.021,885,8.021,886,5.683,887,8.021,888,8.021,889,8.021]],["keywords/53",[]],["title/54",[869,723.812]],["content/54",[110,6.671,124,2.879,133,4.246,134,9.78,135,8.267,142,6.671,148,5.214,166,4.453,177,2.879,181,5.833,192,3.545,193,3.394,195,6.22,210,4.924,252,4.924,363,5.833,534,8.267,676,6.671,890,10.181,891,10.181,892,10.181,893,10.181,894,10.181]],["keywords/54",[]],["title/55",[871,570.45]],["content/55",[28,1.815,45,9.014,86,5.57,87,2.905,124,2.904,127,3.754,148,4.839,177,2.355,181,5.913,185,5.266,189,2.786,192,3.593,193,3.441,194,4.992,252,4.992,282,6.154,517,6.762,601,8,862,6.305,871,7.773,895,10.32,896,10.32,897,10.32]],["keywords/55",[]],["title/56",[694,408.444]],["content/56",[]],["keywords/56",[]],["title/57",[148,355.151]],["content/57",[25,2.081,26,1.466,27,6.615,28,0.911,29,1.332,32,1.885,40,1.691,58,1.25,59,1.429,74,1.545,78,4.682,85,1.332,87,2.811,88,3.192,91,2.988,101,2.988,104,2.062,113,2.379,118,1.429,121,1.113,124,2.809,127,1.402,128,1.885,133,1.608,134,4.849,135,4.099,136,0.909,141,1.25,143,3.192,148,3.638,156,2.988,157,2.609,158,2.968,159,6.824,160,1.885,165,5.937,166,2.736,169,4.189,171,0.64,176,2.379,177,0.498,179,0.668,185,3.192,187,1.332,188,2.081,189,0.589,192,4.732,193,1.285,194,1.055,196,1.002,198,1.534,200,1.002,210,1.055,211,1.332,213,0.868,214,1.332,228,1.332,230,1.18,232,0.759,235,2.526,238,3.192,240,1.885,242,3.192,246,1.429,250,3.026,252,1.055,267,2.731,269,1.25,273,3.822,276,1.177,283,3.646,284,1.691,285,1.865,309,1.885,314,1.332,316,2.731,317,1.545,318,0.954,322,1.865,325,1.177,328,1.429,333,4.682,334,1.885,335,2.081,338,3.332,352,1.002,353,1.429,355,2.266,356,1.545,357,3.67,359,2.988,363,2.968,371,1.429,372,2.988,373,2.506,381,1.332,385,1.885,396,1.429,403,1.429,406,3.822,412,3.165,424,1.691,436,1.691,443,1.885,462,1.885,466,1.885,471,1.429,488,1.545,494,1.885,499,1.885,506,1.885,507,1.885,527,1.545,528,2.731,534,7.384,544,3.394,581,1.25,585,1.885,594,1.545,601,2.988,618,4.478,620,1.885,622,1.691,626,3.332,627,1.885,639,2.875,642,1.885,650,1.885,651,1.429,660,1.545,664,1.25,673,1.885,677,1.545,688,3.819,694,2.266,736,4.682,738,1.885,740,1.429,742,3.332,743,3.67,760,5.593,761,1.885,767,2.731,775,1.691,779,1.691,784,1.885,788,1.885,789,1.885,797,1.885,799,2.988,801,1.691,810,1.885,811,3.332,814,1.691,842,1.885,852,1.691,863,3.332,864,1.885,869,1.691,871,4.366,886,1.545,898,2.181,899,3.855,900,2.181,901,2.181,902,2.181,903,9.405,904,1.885,905,1.885,906,3.855,907,2.181,908,1.885,909,2.181,910,1.885,911,3.855,912,3.855,913,3.855,914,2.181,915,1.885,916,2.181,917,2.181,918,2.181,919,2.181,920,2.181,921,2.181,922,3.855,923,1.885,924,2.181,925,2.181,926,1.885,927,2.988,928,2.181,929,5.408,930,3.855,931,7.146,932,1.885,933,2.181,934,2.181,935,2.181,936,7.146,937,5.18,938,1.885,939,3.332,940,2.181,941,3.855,942,2.181,943,2.181,944,2.181,945,2.181,946,2.181,947,2.181,948,2.181,949,3.855,950,3.855,951,2.181,952,2.181,953,1.885,954,2.181,955,2.181,956,5.18,957,2.181,958,2.181,959,3.855,960,2.181,961,2.181,962,2.181,963,2.181,964,2.181,965,2.181,966,3.332,967,6.256,968,1.885,969,2.181,970,2.181,971,1.885,972,2.181,973,2.181,974,2.181,975,3.855,976,2.181,977,2.181,978,2.181,979,5.18,980,3.332,981,5.18,982,2.181,983,2.181,984,2.181,985,2.181,986,2.181,987,2.181,988,2.181,989,2.181,990,3.855,991,2.181,992,2.181,993,2.181,994,2.181,995,5.18,996,1.885,997,1.885,998,3.855,999,2.181,1000,2.181,1001,2.181,1002,1.885,1003,2.181,1004,3.855,1005,1.885,1006,1.885,1007,2.181,1008,1.885,1009,1.885,1010,2.181,1011,2.181,1012,2.181]],["keywords/57",[]],["title/58",[927,723.812]],["content/58",[0,1.212,25,1.353,27,1.943,28,0.766,47,1.943,58,1.436,59,1.642,78,3.783,87,0.705,104,0.998,113,0.953,118,1.642,124,3.171,127,0.912,133,1.816,136,2.408,141,4.475,143,2.946,148,2.196,151,1.531,158,1.436,165,2.495,166,1.905,169,4.389,171,2.025,173,1.943,176,1.656,177,0.572,179,2.112,181,1.436,185,4.37,186,3.375,187,5.233,188,5.259,189,2.312,190,4.475,191,8.756,192,4.863,210,1.212,213,0.998,214,2.66,232,0.873,233,3.375,238,2.222,239,3.375,242,3.519,246,2.853,252,1.212,259,1.152,283,1.279,284,6.639,287,1.642,289,1.776,294,1.152,325,1.353,329,5.621,333,3.783,335,1.353,352,2.001,355,2.525,357,1.776,359,1.943,360,3.783,361,1.776,363,1.436,371,1.642,382,1.531,384,1.776,389,4.09,393,2.166,396,1.642,410,1.943,412,1.531,424,1.943,474,3.085,512,1.776,514,1.776,527,3.085,530,4.991,534,5.612,581,1.436,596,1.776,607,1.776,635,1.776,639,2.001,678,5.117,682,1.776,688,2.793,694,1.905,697,1.776,740,1.642,743,3.085,752,4.887,760,4.09,779,1.943,783,2.166,785,2.166,787,1.943,809,2.166,814,5.347,823,2.166,826,2.166,836,2.166,857,2.166,859,2.166,871,6.238,886,1.776,903,10.828,910,2.166,923,2.166,927,7.132,953,3.764,966,2.166,968,2.166,980,2.166,996,2.166,997,4.991,1002,2.166,1006,2.166,1008,3.764,1009,2.166,1013,10.978,1014,6.751,1015,7.81,1016,2.506,1017,2.506,1018,2.506,1019,2.506,1020,2.506,1021,6.897,1022,4.354,1023,5.773,1024,2.506,1025,9.2,1026,10.611,1027,2.506,1028,2.506,1029,2.506,1030,2.506,1031,5.963,1032,2.506,1033,2.506,1034,2.506,1035,2.506,1036,2.506,1037,2.506,1038,2.506,1039,2.506,1040,2.506,1041,2.506,1042,5.773,1043,2.166,1044,2.506,1045,2.506,1046,2.166,1047,2.506,1048,2.506,1049,2.506,1050,2.506,1051,2.506,1052,2.506,1053,2.506,1054,2.506,1055,2.506,1056,2.506,1057,2.506,1058,2.506,1059,6.897,1060,5.773,1061,2.506,1062,2.506,1063,2.506,1064,3.764,1065,2.506,1066,2.166,1067,2.506,1068,2.506,1069,2.506,1070,2.506,1071,2.506,1072,2.506,1073,2.166,1074,2.506,1075,2.506,1076,2.506,1077,2.506,1078,2.166,1079,2.506,1080,2.506,1081,2.506,1082,2.506,1083,4.354,1084,2.166,1085,2.506,1086,2.506,1087,2.506,1088,2.166]],["keywords/58",[]],["title/59",[188,503.989]],["content/59",[2,2.707,26,1.131,28,1.855,59,3.305,77,2.571,85,1.817,86,1.605,87,1.42,104,1.184,120,2.44,124,3.108,127,1.082,133,4.182,135,4.303,136,2.739,148,2.942,151,1.817,157,2.103,158,2.89,166,4.809,167,1.949,170,5.091,171,3.227,176,1.918,177,3.05,180,3.082,181,4.961,185,4.418,186,3.91,187,5.29,188,5.078,189,2.968,192,4.18,193,3.905,194,5.103,195,6.445,196,3.555,198,3.992,199,1.518,200,3.555,201,2.44,209,4.175,210,1.439,213,1.184,232,1.756,252,3.741,255,1.918,258,3.305,268,2.107,276,1.605,282,1.439,283,1.518,287,4.303,294,1.367,312,1.704,318,2.206,335,5.413,355,2.206,379,2.306,382,1.817,384,2.107,412,3.082,487,1.949,501,2.306,559,5.996,581,1.704,589,1.817,593,2.107,598,2.306,608,3.305,635,2.107,639,1.367,647,2.306,648,2.571,656,2.306,672,6.135,676,1.949,678,1.949,680,2.571,687,4.303,688,5.665,689,3.574,690,5.091,694,3.384,695,2.306,696,1.949,697,2.107,698,2.571,699,2.571,700,2.571,701,2.571,760,3.574,764,2.306,770,2.571,827,2.571,833,7.485,862,1.817,871,6.445,872,4.653,873,5.677,874,6.687,875,2.571,877,1.949,883,2.306,903,6.712,904,6.687,908,2.571,938,2.571,1026,4.36,1064,4.36,1066,2.571,1073,2.571,1078,2.571,1088,4.36,1089,5.044,1090,5.044,1091,2.974,1092,7.735,1093,5.044,1094,2.974,1095,2.974,1096,5.044,1097,6.567,1098,6.567,1099,5.044,1100,5.044,1101,5.044,1102,2.974,1103,2.974,1104,2.974,1105,2.974,1106,5.044,1107,2.974,1108,2.974,1109,2.974,1110,2.974,1111,2.974]],["keywords/59",[]],["title/60",[685,611.836]],["content/60",[28,2.162,76,4.228,124,2.806,136,2.886,157,5.61,163,5.365,169,4.894,176,4.304,177,2.229,193,3.256,196,6.354,198,4.504,199,4.983,200,5.649,230,2.99,250,3.347,252,3.347,261,6.919,282,3.347,340,4.903,353,4.535,355,3.027,370,5.982,517,4.535,595,5.982,608,6.399,668,8.442,677,4.903,685,7.415,694,5.377,787,5.365,835,5.982,840,8.442,852,5.365,872,6.919,877,7.415,883,7.57,929,8.442,971,5.982,1014,5.982,1112,6.92,1113,6.92,1114,6.92,1115,8.442,1116,6.92,1117,9.765,1118,6.92,1119,6.92,1120,6.92,1121,9.765]],["keywords/60",[]],["title/61",[803,661.551]],["content/61",[0,2.363,2,3.2,22,3.202,76,2.985,113,1.858,124,3.292,127,3.355,133,3.846,136,2.038,169,4.643,176,4.265,177,2.913,185,3.851,192,4.444,193,4.461,194,2.363,195,2.985,196,5.679,197,3.462,198,3.005,199,5.294,200,2.245,201,5.977,203,3.202,230,1.496,250,2.363,253,5.635,259,2.245,267,3.462,269,2.8,276,2.637,288,3.202,293,3.788,325,2.637,328,3.202,353,3.202,401,3.788,412,2.985,453,3.788,517,3.202,571,3.462,598,3.788,608,3.202,628,8.693,676,3.202,677,3.462,685,3.202,694,4.538,705,4.224,709,4.224,710,3.788,767,3.462,790,4.224,799,3.788,803,9.281,872,3.462,877,3.202,886,3.462,932,6.525,939,4.224,1084,4.224,1122,4.886,1123,4.886,1124,4.224,1125,7.548,1126,4.886,1127,7.548,1128,4.886,1129,7.548,1130,6.525,1131,4.886,1132,4.886,1133,4.886,1134,7.548,1135,4.886,1136,4.886,1137,4.886,1138,4.886,1139,4.886,1140,9.223,1141,7.548,1142,4.886,1143,4.886,1144,4.886,1145,4.886,1146,4.886,1147,4.886,1148,4.886,1149,4.886,1150,4.886]],["keywords/61",[]],["title/62",[1151,807.171]],["content/62",[124,3.29,163,8.857,169,4.637,177,2.909,192,4.438,193,4.25,196,5.25,199,4.447,200,5.25,201,4.215,232,3.034,238,4.447,329,5.324,340,6.174,355,4.998,396,5.71,488,6.174,639,4.005,688,5.526,694,4.998,697,6.174,736,5.71,792,7.533,801,6.755,926,9.877,1031,7.533,1151,9.877,1152,8.714,1153,8.714,1154,8.714,1155,8.714,1156,8.714,1157,8.714,1158,8.714]],["keywords/62",[]],["title/63",[251,245.513,694,322.109]],["content/63",[2,3.036,28,2.09,29,3.005,62,3.812,85,4.635,97,3.812,104,3.686,105,3.812,124,2.919,127,3.369,133,2.051,157,3.862,164,3.812,166,2.151,169,3.787,176,3.96,177,3.201,185,2.509,188,4.095,189,2.5,193,4.13,194,3.669,196,5.692,198,3.686,199,5.312,200,5.878,201,5.035,202,8.07,216,3.812,217,3.005,229,3.812,232,3.224,251,2.529,254,3.484,255,1.871,259,2.26,262,2.818,263,3.484,269,2.818,277,4.251,282,5.44,287,6.068,294,4.256,314,4.635,322,2.379,328,3.223,340,3.484,349,3.812,363,2.818,411,4.251,474,3.484,477,3.812,478,5.881,571,3.484,594,3.484,596,3.484,607,3.484,639,3.486,651,3.223,685,3.223,694,5.418,710,5.881,803,3.484,905,4.251,915,4.251,1005,4.251,1043,4.251,1046,4.251,1115,6.558,1124,6.558,1130,6.558,1159,4.918,1160,4.918,1161,7.586,1162,7.586,1163,4.918,1164,4.918,1165,4.918,1166,4.918,1167,4.918,1168,4.918,1169,4.918,1170,4.918,1171,4.918,1172,4.918,1173,4.918,1174,4.918,1175,4.918]],["keywords/63",[]]],"invertedIndex":[["",{"_index":124,"title":{"27":{"position":[[11,1]]}},"content":{"7":{"position":[[149,1]]},"9":{"position":[[423,1],[541,1],[556,1],[569,1],[571,1],[661,1],[663,1],[736,1],[794,1],[838,1],[953,1],[955,1],[1028,1],[1068,1]]},"12":{"position":[[750,1],[801,1],[833,1],[997,1],[1036,1],[1251,1],[1302,1],[1342,1]]},"24":{"position":[[744,1]]},"26":{"position":[[243,2],[282,2]]},"32":{"position":[[131,1],[146,1],[159,1],[207,1],[219,1],[307,1],[319,1],[432,1]]},"33":{"position":[[161,1],[175,1],[428,1],[441,1],[449,1],[456,1],[458,1],[561,1],[569,1],[576,1],[578,2]]},"34":{"position":[[341,1],[531,1],[533,1]]},"36":{"position":[[104,1],[112,1],[128,1],[136,1],[138,1],[140,1],[184,1],[204,1],[225,1],[227,1],[312,1],[314,1],[422,2],[425,3],[429,1],[431,2],[434,1],[518,1],[520,1],[586,2],[589,1],[660,2],[663,3],[667,1],[669,1],[671,1],[673,1],[675,1]]},"40":{"position":[[145,3]]},"41":{"position":[[278,3]]},"46":{"position":[[356,1],[380,1]]},"47":{"position":[[220,1],[268,1],[286,1],[299,1],[301,1],[303,1]]},"50":{"position":[[276,1],[402,1]]},"51":{"position":[[132,1],[198,1]]},"52":{"position":[[71,1],[184,1]]},"53":{"position":[[56,1],[104,1],[116,1],[340,1]]},"54":{"position":[[113,1],[205,1]]},"55":{"position":[[90,1],[179,1]]},"57":{"position":[[264,1],[651,1],[685,1],[1324,1],[1358,1],[1902,1],[1936,1],[2572,1],[2606,1],[2619,1],[2772,1],[3788,1],[3822,1],[4662,1],[4696,1],[5389,1],[5423,1],[5948,1],[5982,1]]},"58":{"position":[[295,1],[574,1],[608,1],[803,1],[837,1],[1042,1],[1076,1],[1285,1],[1319,1],[1549,1],[1583,1],[1967,1],[2001,1],[2623,1],[2657,1],[2831,1],[2865,1],[3064,1],[3098,1],[3281,1],[3315,1],[3738,1],[3772,1],[4448,1],[4482,1],[5162,1],[5196,1],[5536,1],[5570,1]]},"59":{"position":[[122,1],[176,1],[701,1],[814,1],[946,1],[1000,1],[1204,1],[1270,1],[1460,1],[1556,1],[1772,1],[1901,1],[2146,1],[2276,1],[2649,1],[2788,1],[3069,1],[3262,1],[3507,1],[3528,1],[3692,1]]},"60":{"position":[[427,1],[472,1],[861,1],[892,1]]},"61":{"position":[[310,1],[325,1],[337,1],[360,1],[372,1],[430,1],[445,1],[492,1],[505,1],[613,1],[869,1],[884,1],[897,1],[931,1],[1553,1],[1671,1]]},"62":{"position":[[91,1],[106,1],[119,1],[180,1],[192,1],[216,1]]},"63":{"position":[[357,1],[380,1],[392,1],[531,1],[1337,1],[1360,1],[1372,1],[1404,1]]}},"keywords":{}}],["0.0.0.0:8000",{"_index":575,"title":{},"content":{"26":{"position":[[267,14]]}},"keywords":{}}],["05",{"_index":65,"title":{},"content":{"3":{"position":[[239,2],[260,2]]}},"keywords":{}}],["1",{"_index":312,"title":{"14":{"position":[[0,2]]},"18":{"position":[[0,2]]},"27":{"position":[[13,1]]}},"content":{"33":{"position":[[163,2],[166,1],[177,2],[180,1],[430,2],[433,1]]},"36":{"position":[[245,2]]},"46":{"position":[[358,1],[382,1]]},"59":{"position":[[3509,1]]}},"keywords":{}}],["10",{"_index":1087,"title":{},"content":{"58":{"position":[[5471,3]]}},"keywords":{}}],["100",{"_index":468,"title":{},"content":{"22":{"position":[[207,4]]},"30":{"position":[[176,3],[229,3],[495,3]]},"35":{"position":[[760,3]]}},"keywords":{}}],["1000",{"_index":1086,"title":{},"content":{"58":{"position":[[5458,5]]}},"keywords":{}}],["101",{"_index":604,"title":{},"content":{"30":{"position":[[306,3],[582,3]]},"35":{"position":[[751,3]]}},"keywords":{}}],["12",{"_index":1155,"title":{},"content":{"62":{"position":[[175,4]]}},"keywords":{}}],["2",{"_index":324,"title":{"15":{"position":[[0,2]]},"19":{"position":[[0,2]]}},"content":{"35":{"position":[[822,2]]},"36":{"position":[[452,2]]}},"keywords":{}}],["2019",{"_index":64,"title":{},"content":{"3":{"position":[[234,4]]}},"keywords":{}}],["256",{"_index":822,"title":{},"content":{"48":{"position":[[8,3]]}},"keywords":{}}],["3",{"_index":331,"title":{"16":{"position":[[0,2]]},"20":{"position":[[0,2]]}},"content":{},"keywords":{}}],["30",{"_index":66,"title":{},"content":{"3":{"position":[[242,2],[263,2]]}},"keywords":{}}],["4",{"_index":440,"title":{"21":{"position":[[0,2]]}},"content":{},"keywords":{}}],["5",{"_index":462,"title":{"22":{"position":[[0,2]]}},"content":{"57":{"position":[[6066,1]]}},"keywords":{}}],["5000",{"_index":1004,"title":{},"content":{"57":{"position":[[5942,5],[6044,4]]}},"keywords":{}}],["6",{"_index":482,"title":{"23":{"position":[[0,2]]}},"content":{},"keywords":{}}],["60",{"_index":1025,"title":{},"content":{"58":{"position":[[512,3],[741,3],[980,3],[1223,3],[2561,3],[2769,3],[3002,3]]}},"keywords":{}}],["7",{"_index":495,"title":{"24":{"position":[[0,2]]}},"content":{},"keywords":{}}],["8",{"_index":523,"title":{"25":{"position":[[0,2]]}},"content":{},"keywords":{}}],["80",{"_index":919,"title":{},"content":{"57":{"position":[[884,2]]}},"keywords":{}}],["8000",{"_index":911,"title":{},"content":{"57":{"position":[[618,5],[1857,5]]}},"keywords":{}}],["8080",{"_index":160,"title":{},"content":{"8":{"position":[[662,5]]},"57":{"position":[[890,5]]}},"keywords":{}}],["8080:8080",{"_index":153,"title":{},"content":{"8":{"position":[[457,9]]}},"keywords":{}}],["8081:8081",{"_index":154,"title":{},"content":{"8":{"position":[[470,9]]}},"keywords":{}}],["8090",{"_index":913,"title":{},"content":{"57":{"position":[[645,5],[724,5]]}},"keywords":{}}],["abov",{"_index":210,"title":{},"content":{"9":{"position":[[1074,5],[1344,5]]},"12":{"position":[[868,5]]},"26":{"position":[[130,6]]},"29":{"position":[[101,5]]},"33":{"position":[[543,5]]},"52":{"position":[[202,6]]},"54":{"position":[[215,5]]},"57":{"position":[[4714,6]]},"58":{"position":[[3790,6]]},"59":{"position":[[2294,6]]}},"keywords":{}}],["access",{"_index":250,"title":{},"content":{"11":{"position":[[635,6]]},"16":{"position":[[290,6]]},"17":{"position":[[767,6]]},"19":{"position":[[759,10]]},"50":{"position":[[78,10],[132,6]]},"51":{"position":[[73,6],[237,6]]},"52":{"position":[[229,6]]},"57":{"position":[[767,10],[1631,6],[3123,6],[3355,11]]},"60":{"position":[[1002,10]]},"61":{"position":[[246,8]]}},"keywords":{}}],["accord",{"_index":1078,"title":{},"content":{"58":{"position":[[4956,10]]},"59":{"position":[[3336,9]]}},"keywords":{}}],["accur",{"_index":839,"title":{},"content":{"48":{"position":[[653,8]]}},"keywords":{}}],["acquir",{"_index":609,"title":{},"content":{"30":{"position":[[485,9]]}},"keywords":{}}],["act",{"_index":235,"title":{},"content":{"11":{"position":[[179,4],[585,4]]},"12":{"position":[[220,4]]},"23":{"position":[[54,3]]},"41":{"position":[[48,6]]},"57":{"position":[[5709,4],[6339,4]]}},"keywords":{}}],["activ",{"_index":923,"title":{},"content":{"57":{"position":[[1010,10]]},"58":{"position":[[4871,10]]}},"keywords":{}}],["actual",{"_index":164,"title":{},"content":{"8":{"position":[[787,6]]},"48":{"position":[[965,8]]},"63":{"position":[[1234,6]]}},"keywords":{}}],["ad",{"_index":59,"title":{},"content":{"3":{"position":[[151,5]]},"17":{"position":[[876,5]]},"57":{"position":[[2149,5]]},"58":{"position":[[3589,5]]},"59":{"position":[[218,5],[1730,5]]}},"keywords":{}}],["adapt",{"_index":520,"title":{},"content":{"24":{"position":[[736,7]]}},"keywords":{}}],["add",{"_index":53,"title":{},"content":{"3":{"position":[[68,3]]},"6":{"position":[[82,3]]},"14":{"position":[[348,3]]},"36":{"position":[[689,3]]}},"keywords":{}}],["addit",{"_index":213,"title":{},"content":{"9":{"position":[[1125,9]]},"16":{"position":[[3,9]]},"22":{"position":[[372,10]]},"30":{"position":[[450,10],[748,10]]},"32":{"position":[[629,10]]},"33":{"position":[[716,10]]},"36":{"position":[[693,10]]},"42":{"position":[[177,10]]},"44":{"position":[[53,8]]},"46":{"position":[[486,10],[589,10]]},"48":{"position":[[1035,10]]},"57":{"position":[[1818,10]]},"58":{"position":[[1778,10]]},"59":{"position":[[2844,10]]}},"keywords":{}}],["addition",{"_index":401,"title":{},"content":{"19":{"position":[[292,13]]},"45":{"position":[[262,13]]},"61":{"position":[[1292,13]]}},"keywords":{}}],["address",{"_index":628,"title":{},"content":{"30":{"position":[[1038,7]]},"34":{"position":[[176,7]]},"61":{"position":[[412,8],[421,8],[437,7],[963,7],[1075,7]]}},"keywords":{}}],["adipisc",{"_index":9,"title":{},"content":{"0":{"position":[[40,10]]},"2":{"position":[[166,10],[345,10],[524,10],[703,10],[882,10],[1061,10],[1240,10],[1419,10],[1598,10],[1777,10],[1956,10],[2135,10],[2314,10],[2493,10],[2672,10],[2851,10]]}},"keywords":{}}],["adjust",{"_index":908,"title":{},"content":{"57":{"position":[[390,6]]},"59":{"position":[[3329,6]]}},"keywords":{}}],["advantag",{"_index":368,"title":{},"content":{"17":{"position":[[735,9]]}},"keywords":{}}],["adversari",{"_index":1011,"title":{},"content":{"57":{"position":[[6416,11]]}},"keywords":{}}],["affect",{"_index":540,"title":{},"content":{"25":{"position":[[334,9]]},"48":{"position":[[424,6],[1532,6]]}},"keywords":{}}],["ag",{"_index":926,"title":{},"content":{"57":{"position":[[1100,3]]},"62":{"position":[[170,4],[207,4]]}},"keywords":{}}],["against",{"_index":981,"title":{},"content":{"57":{"position":[[4292,7],[5729,7],[6366,7]]}},"keywords":{}}],["agent",{"_index":1056,"title":{},"content":{"58":{"position":[[3121,5]]}},"keywords":{}}],["aim",{"_index":1045,"title":{},"content":{"58":{"position":[[2138,5]]}},"keywords":{}}],["alert("button",{"_index":36,"title":{},"content":{"1":{"position":[[152,18]]}},"keywords":{}}],["algorithm",{"_index":422,"title":{},"content":{"20":{"position":[[172,11]]}},"keywords":{}}],["align",{"_index":695,"title":{},"content":{"35":{"position":[[251,6]]},"45":{"position":[[464,6]]},"59":{"position":[[3832,6]]}},"keywords":{}}],["aliquam",{"_index":19,"title":{},"content":{"0":{"position":[[133,7]]},"2":{"position":[[259,7],[438,7],[617,7],[796,7],[975,7],[1154,7],[1333,7],[1512,7],[1691,7],[1870,7],[2049,7],[2228,7],[2407,7],[2586,7],[2765,7],[2944,7]]}},"keywords":{}}],["aliv",{"_index":1015,"title":{},"content":{"58":{"position":[[150,5],[897,5],[1158,5],[1387,5],[2924,5]]}},"keywords":{}}],["allow",{"_index":639,"title":{},"content":{"31":{"position":[[207,6]]},"32":{"position":[[447,6]]},"35":{"position":[[611,6]]},"40":{"position":[[182,6]]},"41":{"position":[[315,6]]},"48":{"position":[[796,6]]},"57":{"position":[[2232,6],[3518,8],[5221,6],[5640,7]]},"58":{"position":[[23,6],[3826,5]]},"59":{"position":[[2462,6]]},"62":{"position":[[21,6]]},"63":{"position":[[70,6],[1793,6]]}},"keywords":{}}],["allowedhead",{"_index":1059,"title":{},"content":{"58":{"position":[[3318,15],[3338,14],[3472,14],[3801,14]]}},"keywords":{}}],["alreadi",{"_index":82,"title":{},"content":{"5":{"position":[[13,7]]},"6":{"position":[[13,7]]},"24":{"position":[[191,7]]},"31":{"position":[[405,8]]}},"keywords":{}}],["alter",{"_index":835,"title":{},"content":{"48":{"position":[[482,5],[1340,7]]},"60":{"position":[[60,5]]}},"keywords":{}}],["although",{"_index":971,"title":{},"content":{"57":{"position":[[3829,8]]},"60":{"position":[[528,8]]}},"keywords":{}}],["alway",{"_index":915,"title":{},"content":{"57":{"position":[[808,6]]},"63":{"position":[[1739,6]]}},"keywords":{}}],["amet",{"_index":7,"title":{},"content":{"0":{"position":[[22,5],[174,4]]},"2":{"position":[[148,5],[300,4],[327,5],[479,4],[506,5],[658,4],[685,5],[837,4],[864,5],[1016,4],[1043,5],[1195,4],[1222,5],[1374,4],[1401,5],[1553,4],[1580,5],[1732,4],[1759,5],[1911,4],[1938,5],[2090,4],[2117,5],[2269,4],[2296,5],[2448,4],[2475,5],[2627,4],[2654,5],[2806,4],[2833,5],[2985,4]]}},"keywords":{}}],["amount",{"_index":377,"title":{},"content":{"18":{"position":[[117,6]]}},"keywords":{}}],["anoth",{"_index":326,"title":{},"content":{"15":{"position":[[0,7]]},"19":{"position":[[0,7]]},"30":{"position":[[521,7]]},"46":{"position":[[610,7]]}},"keywords":{}}],["anticip",{"_index":780,"title":{},"content":{"45":{"position":[[190,13]]}},"keywords":{}}],["anyth",{"_index":434,"title":{},"content":{"20":{"position":[[391,8]]}},"keywords":{}}],["api",{"_index":171,"title":{"12":{"position":[[0,3]]}},"content":{"9":{"position":[[92,4],[157,3],[198,3],[722,3],[1014,3]]},"11":{"position":[[134,3],[150,3],[381,3],[561,3],[573,3]]},"12":{"position":[[0,3],[60,4],[81,3],[158,4],[211,3],[256,5],[267,3],[300,3],[625,4],[1093,4],[1236,4]]},"13":{"position":[[283,3]]},"14":{"position":[[32,3],[113,3],[306,4]]},"15":{"position":[[23,3],[198,5],[279,4]]},"16":{"position":[[13,3],[165,3],[488,3]]},"17":{"position":[[48,3],[192,3],[307,4],[851,4],[1005,4],[1064,5]]},"18":{"position":[[156,3]]},"24":{"position":[[78,3],[207,3],[263,3],[732,3]]},"28":{"position":[[91,4]]},"29":{"position":[[148,4]]},"30":{"position":[[377,4],[419,3],[1131,3]]},"44":{"position":[[265,4]]},"45":{"position":[[94,5],[447,3]]},"46":{"position":[[324,4],[395,3],[462,3],[541,3],[618,4],[732,4],[921,3],[1342,3]]},"48":{"position":[[263,3],[470,4]]},"57":{"position":[[2109,4]]},"58":{"position":[[3722,3],[3857,3],[4168,5],[4578,3]]},"59":{"position":[[93,4],[317,4],[380,4],[600,4],[842,3],[1011,3],[1319,3],[1611,3],[1926,3]]}},"keywords":{}}],["api/data"",{"_index":952,"title":{},"content":{"57":{"position":[[2668,15]]}},"keywords":{}}],["api_endpoint",{"_index":894,"title":{},"content":{"54":{"position":[[288,13]]}},"keywords":{}}],["apikey",{"_index":956,"title":{},"content":{"57":{"position":[[2817,6],[3001,6],[3083,7]]}},"keywords":{}}],["appli",{"_index":799,"title":{},"content":{"46":{"position":[[993,5]]},"57":{"position":[[28,7],[5895,8]]},"61":{"position":[[655,7]]}},"keywords":{}}],["applic",{"_index":269,"title":{},"content":{"12":{"position":[[433,11]]},"14":{"position":[[206,12]]},"30":{"position":[[621,12],[1099,12]]},"31":{"position":[[89,12]]},"57":{"position":[[3629,12]]},"61":{"position":[[829,12]]},"63":{"position":[[1917,12]]}},"keywords":{}}],["application'",{"_index":706,"title":{},"content":{"35":{"position":[[915,13]]}},"keywords":{}}],["approach",{"_index":638,"title":{},"content":{"31":{"position":[[198,8]]},"35":{"position":[[698,9]]},"48":{"position":[[609,8]]}},"keywords":{}}],["appropri",{"_index":240,"title":{},"content":{"11":{"position":[[278,11]]},"57":{"position":[[6216,11]]}},"keywords":{}}],["architectur",{"_index":227,"title":{"11":{"position":[[13,13]]},"43":{"position":[[0,12]]},"44":{"position":[[11,13]]}},"content":{"11":{"position":[[37,12],[520,13]]},"17":{"position":[[380,13]]},"21":{"position":[[245,12]]},"45":{"position":[[451,12]]},"48":{"position":[[1616,12]]}},"keywords":{}}],["arg",{"_index":866,"title":{"51":{"position":[[0,5]]}},"content":{"50":{"position":[[278,5]]}},"keywords":{}}],["args.id",{"_index":876,"title":{},"content":{"51":{"position":[[218,7]]}},"keywords":{}}],["argument",{"_index":872,"title":{},"content":{"51":{"position":[[14,9],[84,9],[251,8]]},"59":{"position":[[331,8],[2996,9],[3358,8]]},"60":{"position":[[245,8],[727,8]]},"61":{"position":[[729,9]]}},"keywords":{}}],["aris",{"_index":684,"title":{},"content":{"34":{"position":[[211,6]]}},"keywords":{}}],["array",{"_index":1084,"title":{},"content":{"58":{"position":[[5372,5]]},"61":{"position":[[1361,5]]}},"keywords":{}}],["aspect",{"_index":783,"title":{},"content":{"45":{"position":[[310,8]]},"58":{"position":[[53,7]]}},"keywords":{}}],["assist",{"_index":665,"title":{},"content":{"33":{"position":[[41,6]]}},"keywords":{}}],["associ",{"_index":660,"title":{},"content":{"32":{"position":[[517,10],[661,10]]},"33":{"position":[[748,10]]},"44":{"position":[[399,10]]},"57":{"position":[[4113,10]]}},"keywords":{}}],["attack",{"_index":338,"title":{},"content":{"16":{"position":[[233,7]]},"57":{"position":[[4061,9],[6402,7]]}},"keywords":{}}],["attempt",{"_index":515,"title":{},"content":{"24":{"position":[[606,9]]}},"keywords":{}}],["attribut",{"_index":1112,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["aut",{"_index":716,"title":{},"content":{"36":{"position":[[346,3]]}},"keywords":{}}],["autem"",{"_index":730,"title":{},"content":{"36":{"position":[[574,11]]}},"keywords":{}}],["authent",{"_index":244,"title":{},"content":{"11":{"position":[[424,15]]},"16":{"position":[[178,14]]},"24":{"position":[[113,15]]},"45":{"position":[[329,14]]}},"keywords":{}}],["author",{"_index":58,"title":{},"content":{"3":{"position":[[136,7]]},"28":{"position":[[155,7]]},"29":{"position":[[206,6]]},"30":{"position":[[266,6],[553,6]]},"45":{"position":[[348,13]]},"57":{"position":[[3015,13]]},"58":{"position":[[3837,13]]}},"keywords":{}}],["author'",{"_index":599,"title":{},"content":{"30":{"position":[[40,8]]}},"keywords":{}}],["authors.yml",{"_index":60,"title":{},"content":{"3":{"position":[[160,12]]}},"keywords":{}}],["automat",{"_index":811,"title":{},"content":{"46":{"position":[[1299,13]]},"57":{"position":[[5036,13],[6149,13]]}},"keywords":{}}],["avail",{"_index":626,"title":{},"content":{"30":{"position":[[997,13]]},"57":{"position":[[1753,10],[3690,10]]}},"keywords":{}}],["avoid",{"_index":98,"title":{},"content":{"5":{"position":[[241,5]]}},"keywords":{}}],["backend",{"_index":241,"title":{"17":{"position":[[0,7]]}},"content":{"11":{"position":[[290,7],[347,7]]},"17":{"position":[[88,7]]},"19":{"position":[[709,8]]},"21":{"position":[[85,8]]},"22":{"position":[[33,7]]},"25":{"position":[[4,8]]}},"keywords":{}}],["base",{"_index":186,"title":{},"content":{"9":{"position":[[435,4]]},"58":{"position":[[4150,4],[4672,4]]},"59":{"position":[[584,4],[635,4]]}},"keywords":{}}],["baseurl",{"_index":1026,"title":{},"content":{"58":{"position":[[516,8],[745,8],[984,8],[1227,8],[1491,8],[1909,8],[2162,7],[2232,7],[2565,8],[2773,8],[3006,8],[3223,8],[4114,8],[4280,8],[4329,8],[4513,7]]},"59":{"position":[[556,8],[755,8]]}},"keywords":{}}],["bash",{"_index":125,"title":{},"content":{"7":{"position":[[151,4]]}},"keywords":{}}],["basic",{"_index":215,"title":{},"content":{"9":{"position":[[1176,9]]},"19":{"position":[[732,9]]},"31":{"position":[[362,6]]}},"keywords":{}}],["batch",{"_index":678,"title":{"34":{"position":[[14,9]]}},"content":{"34":{"position":[[0,8]]},"35":{"position":[[302,5]]},"58":{"position":[[5199,6],[5235,5],[5294,7],[5348,7],[5416,7]]},"59":{"position":[[3883,5]]}},"keywords":{}}],["be",{"_index":514,"title":{},"content":{"24":{"position":[[600,5]]},"46":{"position":[[506,5]]},"53":{"position":[[645,5]]},"58":{"position":[[2385,5]]}},"keywords":{}}],["becom",{"_index":453,"title":{},"content":{"21":{"position":[[204,6]]},"48":{"position":[[1083,7]]},"61":{"position":[[853,8]]}},"keywords":{}}],["befor",{"_index":141,"title":{},"content":{"8":{"position":[[69,6]]},"20":{"position":[[384,6]]},"31":{"position":[[107,6],[285,6]]},"46":{"position":[[1078,6]]},"47":{"position":[[135,6]]},"57":{"position":[[5655,6]]},"58":{"position":[[445,6],[1172,6],[1693,6],[2378,6],[2509,6]]}},"keywords":{}}],["behalf",{"_index":358,"title":{},"content":{"17":{"position":[[211,6]]}},"keywords":{}}],["behav",{"_index":900,"title":{},"content":{"57":{"position":[[137,7]]}},"keywords":{}}],["behind",{"_index":829,"title":{},"content":{"48":{"position":[[252,6]]}},"keywords":{}}],["below",{"_index":118,"title":{},"content":{"7":{"position":[[17,5]]},"8":{"position":[[62,6]]},"26":{"position":[[236,6]]},"57":{"position":[[504,6]]},"58":{"position":[[366,6]]}},"keywords":{}}],["benchmark",{"_index":432,"title":{},"content":{"20":{"position":[[354,12]]}},"keywords":{}}],["benefici",{"_index":972,"title":{},"content":{"57":{"position":[[3855,10]]}},"keywords":{}}],["best",{"_index":394,"title":{},"content":{"19":{"position":[[153,4]]},"46":{"position":[[902,4]]}},"keywords":{}}],["better",{"_index":1149,"title":{},"content":{"61":{"position":[[1800,6]]}},"keywords":{}}],["between",{"_index":360,"title":{},"content":{"17":{"position":[[394,7]]},"23":{"position":[[70,7]]},"24":{"position":[[338,7]]},"50":{"position":[[168,7]]},"58":{"position":[[879,7],[2902,7],[5335,7]]}},"keywords":{}}],["beyond",{"_index":565,"title":{},"content":{"25":{"position":[[873,6]]}},"keywords":{}}],["bff",{"_index":351,"title":{"17":{"position":[[21,6]]}},"content":{"17":{"position":[[2,3],[177,3],[316,3],[589,4],[722,3],[1113,3]]},"18":{"position":[[35,3],[190,3],[249,3],[403,3]]},"19":{"position":[[31,3],[99,3],[310,3],[584,3],[669,3]]},"20":{"position":[[8,3]]},"22":{"position":[[72,3],[152,3],[521,3]]},"23":{"position":[[0,3],[244,3],[385,3]]},"24":{"position":[[0,3],[282,3],[366,3],[383,3],[634,3],[650,4]]},"25":{"position":[[26,5],[248,3],[415,3]]}},"keywords":{}}],["big",{"_index":444,"title":{},"content":{"21":{"position":[[41,3]]}},"keywords":{}}],["bit",{"_index":582,"title":{},"content":{"26":{"position":[[438,4]]}},"keywords":{}}],["blog",{"_index":1,"title":{"0":{"position":[[6,4]]},"1":{"position":[[4,4]]},"2":{"position":[[5,4]]}},"content":{"1":{"position":[[0,4],[111,4]]},"2":{"position":[[35,4],[93,4]]},"3":{"position":[[11,8],[48,4],[107,4],[131,4],[177,4],[285,4],[333,4],[355,4],[407,5],[449,5]]}},"keywords":{}}],["blue",{"_index":472,"title":{},"content":{"22":{"position":[[334,4]]}},"keywords":{}}],["blueprint",{"_index":744,"title":{"45":{"position":[[26,12]]}},"content":{"38":{"position":[[286,10]]},"44":{"position":[[127,13]]}},"keywords":{}}],["bodi",{"_index":209,"title":{},"content":{"9":{"position":[[1054,5]]},"12":{"position":[[775,5],[1276,5]]},"32":{"position":[[358,5]]},"34":{"position":[[380,5]]},"47":{"position":[[276,4]]},"52":{"position":[[96,5]]},"53":{"position":[[155,5]]},"59":{"position":[[1904,5],[1914,4],[2242,5],[2425,5]]}},"keywords":{}}],["boolean",{"_index":1036,"title":{},"content":{"58":{"position":[[1344,7]]}},"keywords":{}}],["booleandefault",{"_index":745,"title":{},"content":{"39":{"position":[[54,15]]},"40":{"position":[[77,15]]}},"keywords":{}}],["bootstrap",{"_index":754,"title":{},"content":{"42":{"position":[[17,10]]}},"keywords":{}}],["both",{"_index":362,"title":{},"content":{"17":{"position":[[469,4]]}},"keywords":{}}],["bottleneck",{"_index":791,"title":{},"content":{"46":{"position":[[301,11]]}},"keywords":{}}],["box",{"_index":383,"title":{},"content":{"18":{"position":[[235,4]]}},"keywords":{}}],["break",{"_index":851,"title":{},"content":{"48":{"position":[[1495,8]]}},"keywords":{}}],["brew",{"_index":108,"title":{},"content":{"6":{"position":[[173,4],[202,4],[341,4],[353,4]]}},"keywords":{}}],["bridg",{"_index":486,"title":{},"content":{"23":{"position":[[63,6]]}},"keywords":{}}],["browser",{"_index":585,"title":{},"content":{"26":{"position":[[497,7]]},"57":{"position":[[1512,7]]}},"keywords":{}}],["bug",{"_index":399,"title":{},"content":{"19":{"position":[[263,4]]},"23":{"position":[[323,3]]}},"keywords":{}}],["build",{"_index":105,"title":{},"content":{"5":{"position":[[349,7]]},"14":{"position":[[3,5]]},"63":{"position":[[148,5]]}},"keywords":{}}],["built",{"_index":466,"title":{},"content":{"22":{"position":[[103,5]]},"57":{"position":[[1487,5]]}},"keywords":{}}],["busi",{"_index":978,"title":{},"content":{"57":{"position":[[4124,8]]}},"keywords":{}}],["bypass",{"_index":987,"title":{},"content":{"57":{"position":[[4760,9]]}},"keywords":{}}],["cach",{"_index":246,"title":{},"content":{"11":{"position":[[459,8]]},"20":{"position":[[196,8]]},"45":{"position":[[242,7]]},"57":{"position":[[1052,5]]},"58":{"position":[[4915,7],[4981,7]]}},"keywords":{}}],["call",{"_index":181,"title":{},"content":{"9":{"position":[[350,6]]},"13":{"position":[[287,5]]},"34":{"position":[[124,6]]},"54":{"position":[[281,6]]},"55":{"position":[[222,6]]},"58":{"position":[[4582,5]]},"59":{"position":[[871,5],[1323,5],[1615,5],[1930,5],[3465,5]]}},"keywords":{}}],["can't",{"_index":484,"title":{},"content":{"23":{"position":[[11,5]]}},"keywords":{}}],["canari",{"_index":463,"title":{"22":{"position":[[3,6]]}},"content":{"22":{"position":[[456,6]]}},"keywords":{}}],["capabl",{"_index":683,"title":{},"content":{"34":{"position":[[162,10]]}},"keywords":{}}],["care",{"_index":1139,"title":{},"content":{"61":{"position":[[1174,5]]}},"keywords":{}}],["case",{"_index":276,"title":{},"content":{"12":{"position":[[560,5]]},"20":{"position":[[61,5]]},"23":{"position":[[307,4]]},"33":{"position":[[549,5]]},"53":{"position":[[351,5]]},"57":{"position":[[185,6]]},"59":{"position":[[393,5]]},"61":{"position":[[646,5]]}},"keywords":{}}],["caus",{"_index":536,"title":{},"content":{"25":{"position":[[274,7]]}},"keywords":{}}],["certain",{"_index":1119,"title":{},"content":{"60":{"position":[[800,7]]}},"keywords":{}}],["chain",{"_index":1135,"title":{},"content":{"61":{"position":[[754,5]]}},"keywords":{}}],["challeng",{"_index":320,"title":{},"content":{"14":{"position":[[97,10]]},"15":{"position":[[8,9]]},"16":{"position":[[389,11]]},"17":{"position":[[34,10],[1095,10]]},"18":{"position":[[11,10]]},"19":{"position":[[8,9]]},"25":{"position":[[624,11],[847,9]]}},"keywords":{}}],["chang",{"_index":420,"title":{},"content":{"20":{"position":[[137,7],[469,8]]},"21":{"position":[[282,6]]},"22":{"position":[[6,6],[137,7],[177,7]]},"23":{"position":[[191,6]]},"35":{"position":[[14,7]]},"48":{"position":[[368,7],[555,7],[844,6],[1430,8],[1504,7]]}},"keywords":{}}],["channel",{"_index":859,"title":{},"content":{"48":{"position":[[1720,8]]},"58":{"position":[[2180,9]]}},"keywords":{}}],["characterist",{"_index":848,"title":{},"content":{"48":{"position":[[1365,14]]}},"keywords":{}}],["check",{"_index":664,"title":{"38":{"position":[[0,6]]}},"content":{"33":{"position":[[9,5],[110,5],[356,5]]},"38":{"position":[[4,5],[114,5],[152,5],[189,5]]},"39":{"position":[[79,5]]},"40":{"position":[[102,5],[168,5],[286,5]]},"46":{"position":[[174,5]]},"57":{"position":[[4569,7]]}},"keywords":{}}],["chosen",{"_index":920,"title":{},"content":{"57":{"position":[[908,6]]}},"keywords":{}}],["citi",{"_index":1128,"title":{},"content":{"61":{"position":[[463,5]]}},"keywords":{}}],["class",{"_index":475,"title":{},"content":{"22":{"position":[[436,5]]},"48":{"position":[[1099,5]]}},"keywords":{}}],["clear",{"_index":506,"title":{},"content":{"24":{"position":[[244,5]]},"57":{"position":[[857,5]]}},"keywords":{}}],["cli",{"_index":120,"title":{"31":{"position":[[10,4]]},"33":{"position":[[21,4]]},"37":{"position":[[0,3]]}},"content":{"7":{"position":[[47,3]]},"31":{"position":[[13,3],[385,4]]},"32":{"position":[[749,3]]},"33":{"position":[[33,3],[215,3]]},"34":{"position":[[144,3]]},"35":{"position":[[197,3],[322,3]]},"59":{"position":[[3778,3],[3903,3]]}},"keywords":{}}],["click",{"_index":39,"title":{},"content":{"1":{"position":[[216,5]]}},"keywords":{}}],["clicked!")}>click",{"_index":37,"title":{},"content":{"1":{"position":[[171,25]]}},"keywords":{}}],["client",{"_index":230,"title":{"13":{"position":[[15,8]]},"47":{"position":[[0,6]]}},"content":{"11":{"position":[[67,7],[370,7],[624,7]]},"12":{"position":[[426,6],[570,6],[1042,6]]},"13":{"position":[[23,6],[111,6],[253,6],[532,6]]},"14":{"position":[[68,6],[136,6],[199,6],[239,6],[394,6]]},"15":{"position":[[46,6],[146,6]]},"16":{"position":[[36,6],[111,6],[270,6]]},"17":{"position":[[149,7],[225,7],[415,6],[487,6]]},"18":{"position":[[337,7]]},"22":{"position":[[116,6]]},"23":{"position":[[82,7]]},"24":{"position":[[350,7]]},"32":{"position":[[454,7]]},"44":{"position":[[4,7],[501,6]]},"47":{"position":[[9,6]]},"48":{"position":[[1548,8]]},"57":{"position":[[3527,7],[3622,6]]},"60":{"position":[[829,7],[1020,7]]},"61":{"position":[[1115,6]]}},"keywords":{}}],["client'",{"_index":776,"title":{},"content":{"44":{"position":[[696,8]]}},"keywords":{}}],["close",{"_index":1022,"title":{},"content":{"58":{"position":[[452,7],[1179,8]]}},"keywords":{}}],["co",{"_index":70,"title":{},"content":{"3":{"position":[[323,2]]}},"keywords":{}}],["code",{"_index":221,"title":{"48":{"position":[[5,5]]}},"content":{"9":{"position":[[1301,5]]},"14":{"position":[[401,5]]},"18":{"position":[[140,5]]},"20":{"position":[[132,4]]},"21":{"position":[[144,4]]},"48":{"position":[[997,4]]}},"keywords":{}}],["combin",{"_index":254,"title":{},"content":{"12":{"position":[[41,9],[167,9],[634,8],[1058,7]]},"14":{"position":[[315,9]]},"17":{"position":[[1013,9]]},"63":{"position":[[84,7]]}},"keywords":{}}],["come",{"_index":808,"title":{},"content":{"46":{"position":[[1216,6]]}},"keywords":{}}],["command",{"_index":90,"title":{},"content":{"5":{"position":[[122,7]]},"6":{"position":[[147,7]]},"7":{"position":[[168,7]]},"8":{"position":[[226,8],[291,7],[434,8],[524,7],[769,7]]},"26":{"position":[[30,7],[179,7]]},"31":{"position":[[532,9]]},"33":{"position":[[15,8]]},"38":{"position":[[10,7],[62,7],[120,8],[195,7]]},"40":{"position":[[174,7]]},"41":{"position":[[10,7],[232,8],[307,7]]},"42":{"position":[[9,7],[157,7]]}},"keywords":{}}],["comment",{"_index":45,"title":{},"content":{"2":{"position":[[76,7]]},"48":{"position":[[379,8]]},"52":{"position":[[110,9],[120,9]]},"55":{"position":[[109,9],[315,8]]}},"keywords":{}}],["commentsforus",{"_index":895,"title":{},"content":{"55":{"position":[[92,16]]}},"keywords":{}}],["commit",{"_index":553,"title":{},"content":{"25":{"position":[[666,9]]}},"keywords":{}}],["common",{"_index":470,"title":{},"content":{"22":{"position":[[291,6]]}},"keywords":{}}],["commonli",{"_index":1095,"title":{},"content":{"59":{"position":[[1329,8]]}},"keywords":{}}],["commun",{"_index":361,"title":{},"content":{"17":{"position":[[452,11]]},"25":{"position":[[152,13]]},"44":{"position":[[675,11]]},"58":{"position":[[4040,12]]}},"keywords":{}}],["compani",{"_index":430,"title":{},"content":{"20":{"position":[[327,9]]},"22":{"position":[[546,9]]},"24":{"position":[[456,7]]}},"keywords":{}}],["compat",{"_index":489,"title":{},"content":{"23":{"position":[[201,10]]}},"keywords":{}}],["compel",{"_index":557,"title":{},"content":{"25":{"position":[[743,10]]}},"keywords":{}}],["compelet",{"_index":161,"title":{},"content":{"8":{"position":[[698,11]]}},"keywords":{}}],["compil",{"_index":697,"title":{},"content":{"35":{"position":[[326,8]]},"58":{"position":[[4354,11]]},"59":{"position":[[3907,8]]},"62":{"position":[[279,7]]}},"keywords":{}}],["complet",{"_index":131,"title":{},"content":{"7":{"position":[[298,10]]},"12":{"position":[[1321,8]]}},"keywords":{}}],["complex",{"_index":314,"title":{"14":{"position":[[13,11]]}},"content":{"14":{"position":[[181,10],[376,10]]},"18":{"position":[[421,7]]},"22":{"position":[[402,7]]},"57":{"position":[[6438,7]]},"63":{"position":[[159,7],[1457,7]]}},"keywords":{}}],["compon",{"_index":247,"title":{},"content":{"11":{"position":[[491,9]]},"17":{"position":[[355,9]]},"44":{"position":[[71,10]]},"45":{"position":[[430,9]]}},"keywords":{}}],["compos",{"_index":168,"title":{},"content":{"9":{"position":[[53,7],[293,7]]},"12":{"position":[[1227,8]]},"15":{"position":[[270,8]]},"17":{"position":[[298,8],[842,8]]},"36":{"position":[[716,7]]},"46":{"position":[[333,8]]}},"keywords":{}}],["composit",{"_index":251,"title":{"12":{"position":[[4,12]]},"13":{"position":[[0,11]]},"45":{"position":[[0,11]]},"63":{"position":[[9,12]]}},"content":{"12":{"position":[[4,11],[271,11]]},"13":{"position":[[4,11]]},"14":{"position":[[36,11],[117,11]]},"15":{"position":[[27,11]]},"16":{"position":[[17,11],[359,11],[492,11]]},"17":{"position":[[52,11],[196,11],[915,11]]},"38":{"position":[[30,11],[326,11]]},"40":{"position":[[53,11]]},"41":{"position":[[174,11]]},"44":{"position":[[91,11]]},"45":{"position":[[4,11]]},"46":{"position":[[9,11],[219,11],[399,11],[925,11]]},"48":{"position":[[25,11],[267,12]]},"63":{"position":[[40,11],[1422,11]]}},"keywords":{}}],["comprehens",{"_index":898,"title":{},"content":{"57":{"position":[[66,13]]}},"keywords":{}}],["compris",{"_index":777,"title":{},"content":{"45":{"position":[[103,9]]}},"keywords":{}}],["concept",{"_index":1159,"title":{},"content":{"63":{"position":[[29,7]]}},"keywords":{}}],["concern",{"_index":499,"title":{},"content":{"24":{"position":[[63,8]]},"57":{"position":[[5803,9]]}},"keywords":{}}],["conclus",{"_index":1145,"title":{},"content":{"61":{"position":[[1677,11]]}},"keywords":{}}],["condit",{"_index":305,"title":{},"content":{"13":{"position":[[406,10],[514,10]]}},"keywords":{}}],["config",{"_index":79,"title":{},"content":{"3":{"position":[[480,7]]}},"keywords":{}}],["configur",{"_index":165,"title":{"9":{"position":[[0,13]]}},"content":{"9":{"position":[[0,13]]},"31":{"position":[[139,14]]},"41":{"position":[[89,15],[144,15]]},"42":{"position":[[206,14]]},"57":{"position":[[94,15],[341,14],[990,14],[1382,13],[2218,13],[2394,15],[2895,13],[3184,15],[3329,13],[4208,13],[5583,13]]},"58":{"position":[[2098,13],[3353,13]]}},"keywords":{}}],["confin",{"_index":566,"title":{},"content":{"25":{"position":[[884,8]]}},"keywords":{}}],["conform",{"_index":982,"title":{},"content":{"57":{"position":[[4354,10]]}},"keywords":{}}],["confus",{"_index":504,"title":{},"content":{"24":{"position":[[175,9]]}},"keywords":{}}],["conjunct",{"_index":302,"title":{},"content":{"13":{"position":[[375,11]]}},"keywords":{}}],["connect",{"_index":1013,"title":{},"content":{"58":{"position":[[84,11],[124,10],[419,10],[465,12],[658,11],[932,11],[1126,10],[1427,10],[2473,10],[2706,10],[2959,11]]}},"keywords":{}}],["connecttimeout",{"_index":1049,"title":{},"content":{"58":{"position":[[2428,15]]}},"keywords":{}}],["consectetur",{"_index":8,"title":{},"content":{"0":{"position":[[28,11]]},"2":{"position":[[154,11],[333,11],[512,11],[691,11],[870,11],[1049,11],[1228,11],[1407,11],[1586,11],[1765,11],[1944,11],[2123,11],[2302,11],[2481,11],[2660,11],[2839,11]]}},"keywords":{}}],["consequat",{"_index":20,"title":{},"content":{"0":{"position":[[141,10]]},"2":{"position":[[267,10],[446,10],[625,10],[804,10],[983,10],[1162,10],[1341,10],[1520,10],[1699,10],[1878,10],[2057,10],[2236,10],[2415,10],[2594,10],[2773,10],[2952,10]]}},"keywords":{}}],["consid",{"_index":267,"title":{},"content":{"12":{"position":[[398,8],[1195,10]]},"28":{"position":[[0,8]]},"57":{"position":[[3920,8],[4953,8]]},"61":{"position":[[284,8]]}},"keywords":{}}],["consist",{"_index":836,"title":{},"content":{"48":{"position":[[527,10]]},"58":{"position":[[4101,12]]}},"keywords":{}}],["consol",{"_index":1158,"title":{},"content":{"62":{"position":[[455,8]]}},"keywords":{}}],["consolid",{"_index":699,"title":{},"content":{"35":{"position":[[396,13]]},"59":{"position":[[3977,13]]}},"keywords":{}}],["const",{"_index":1151,"title":{"62":{"position":[[0,7]]}},"content":{"62":{"position":[[4,6],[223,5]]}},"keywords":{}}],["const(data",{"_index":1153,"title":{},"content":{"62":{"position":[[132,12]]}},"keywords":{}}],["constant",{"_index":801,"title":{},"content":{"46":{"position":[[1032,8]]},"57":{"position":[[2385,8]]},"62":{"position":[[42,8]]}},"keywords":{}}],["construct",{"_index":206,"title":{},"content":{"9":{"position":[[869,9]]},"45":{"position":[[81,12]]}},"keywords":{}}],["consum",{"_index":592,"title":{},"content":{"28":{"position":[[50,9]]}},"keywords":{}}],["consumpt",{"_index":813,"title":{"47":{"position":[[7,12]]}},"content":{},"keywords":{}}],["contain",{"_index":151,"title":{},"content":{"8":{"position":[[405,9],[571,10]]},"12":{"position":[[1131,8]]},"21":{"position":[[104,8]]},"53":{"position":[[583,9],[696,10]]},"58":{"position":[[3899,10]]},"59":{"position":[[1024,8]]}},"keywords":{}}],["content",{"_index":184,"title":{},"content":{"9":{"position":[[405,8]]}},"keywords":{}}],["context",{"_index":862,"title":{"49":{"position":[[0,7]]},"50":{"position":[[0,7]]}},"content":{"50":{"position":[[48,7],[191,7],[268,7],[328,7]]},"53":{"position":[[17,7],[437,7]]},"55":{"position":[[266,8]]},"59":{"position":[[3009,7]]}},"keywords":{}}],["control",{"_index":371,"title":{},"content":{"17":{"position":[[898,7]]},"38":{"position":[[231,7]]},"48":{"position":[[862,11],[1164,7]]},"57":{"position":[[1058,7]]},"58":{"position":[[37,7]]}},"keywords":{}}],["conundrum",{"_index":556,"title":{},"content":{"25":{"position":[[728,9]]}},"keywords":{}}],["conveni",{"_index":69,"title":{},"content":{"3":{"position":[[309,10]]}},"keywords":{}}],["convent",{"_index":567,"title":{},"content":{"25":{"position":[[896,12]]}},"keywords":{}}],["convert",{"_index":700,"title":{},"content":{"35":{"position":[[504,7]]},"59":{"position":[[2379,9]]}},"keywords":{}}],["coordin",{"_index":551,"title":{},"content":{"25":{"position":[[591,13]]}},"keywords":{}}],["correct",{"_index":989,"title":{},"content":{"57":{"position":[[4893,7]]}},"keywords":{}}],["correctli",{"_index":95,"title":{},"content":{"5":{"position":[[211,9]]},"6":{"position":[[258,9]]}},"keywords":{}}],["correspond",{"_index":773,"title":{},"content":{"44":{"position":[[568,13]]}},"keywords":{}}],["cost",{"_index":620,"title":{},"content":{"30":{"position":[[856,6]]},"57":{"position":[[4556,4]]}},"keywords":{}}],["costlier",{"_index":457,"title":{},"content":{"21":{"position":[[263,9]]}},"keywords":{}}],["coupl",{"_index":483,"title":{"23":{"position":[[3,7]]}},"content":{"23":{"position":[[430,8]]}},"keywords":{}}],["cover",{"_index":579,"title":{},"content":{"26":{"position":[[411,5]]}},"keywords":{}}],["cpu",{"_index":341,"title":{},"content":{"16":{"position":[[309,4]]},"17":{"position":[[759,3]]}},"keywords":{}}],["creat",{"_index":31,"title":{},"content":{"1":{"position":[[92,6]]},"9":{"position":[[336,6],[665,6],[957,6]]},"12":{"position":[[68,6],[196,8],[1101,6]]},"17":{"position":[[994,6]]},"26":{"position":[[122,7]]},"42":{"position":[[55,7],[221,8]]},"48":{"position":[[57,7]]}},"keywords":{}}],["createus",{"_index":1105,"title":{},"content":{"59":{"position":[[2305,10]]}},"keywords":{}}],["createuser(input",{"_index":1097,"title":{},"content":{"59":{"position":[[1462,17],[2148,17],[2651,17]]}},"keywords":{}}],["creation",{"_index":758,"title":{},"content":{"42":{"position":[[193,8]]}},"keywords":{}}],["credenti",{"_index":336,"title":{},"content":{"16":{"position":[[193,12]]}},"keywords":{}}],["critic",{"_index":782,"title":{},"content":{"45":{"position":[[292,8]]}},"keywords":{}}],["cross",{"_index":497,"title":{},"content":{"24":{"position":[[49,5]]}},"keywords":{}}],["crucial",{"_index":627,"title":{},"content":{"30":{"position":[[1027,7]]},"57":{"position":[[6198,7]]}},"keywords":{}}],["culmin",{"_index":610,"title":{},"content":{"30":{"position":[[568,10]]}},"keywords":{}}],["curl",{"_index":116,"title":{"7":{"position":[[0,5]]}},"content":{"7":{"position":[[67,4]]},"29":{"position":[[48,4]]},"30":{"position":[[110,4]]},"47":{"position":[[170,4]]}},"keywords":{}}],["current",{"_index":204,"title":{},"content":{"9":{"position":[[848,7]]},"23":{"position":[[221,7]]},"32":{"position":[[551,9]]},"51":{"position":[[38,7]]},"52":{"position":[[33,7]]}},"keywords":{}}],["custom",{"_index":384,"title":{},"content":{"18":{"position":[[276,6]]},"20":{"position":[[33,6]]},"58":{"position":[[1805,6]]},"59":{"position":[[2476,9]]}},"keywords":{}}],["cut",{"_index":498,"title":{},"content":{"24":{"position":[[55,7]]}},"keywords":{}}],["cycl",{"_index":429,"title":{},"content":{"20":{"position":[[310,6]]}},"keywords":{}}],["data",{"_index":176,"title":{},"content":{"9":{"position":[[176,5]]},"13":{"position":[[146,5],[309,4]]},"28":{"position":[[60,4]]},"32":{"position":[[533,5],[677,5]]},"33":{"position":[[764,5]]},"45":{"position":[[63,4]]},"46":{"position":[[600,4],[1060,4]]},"47":{"position":[[224,4]]},"50":{"position":[[139,4]]},"57":{"position":[[2635,4],[2948,4],[4142,4],[5528,5]]},"58":{"position":[[3642,4],[5054,4]]},"59":{"position":[[1985,4],[3437,4]]},"60":{"position":[[338,4],[585,4],[808,4]]},"61":{"position":[[32,4],[173,4],[238,4],[1127,4],[1751,4]]},"63":{"position":[[186,5],[225,4],[1114,4],[1608,4]]}},"keywords":{}}],["date",{"_index":61,"title":{},"content":{"3":{"position":[[187,4]]}},"keywords":{}}],["day",{"_index":798,"title":{},"content":{"46":{"position":[[976,3]]}},"keywords":{}}],["debug",{"_index":973,"title":{},"content":{"57":{"position":[[3889,9]]}},"keywords":{}}],["decis",{"_index":510,"title":{},"content":{"24":{"position":[[436,9]]}},"keywords":{}}],["deeper",{"_index":670,"title":{},"content":{"33":{"position":[[263,6]]}},"keywords":{}}],["default",{"_index":760,"title":{},"content":{"42":{"position":[[260,8]]},"57":{"position":[[602,7],[1221,8],[3704,8],[4582,8],[5287,7],[5876,7]]},"58":{"position":[[195,7],[4142,7],[5102,8]]},"59":{"position":[[627,7],[1410,7]]}},"keywords":{}}],["defin",{"_index":363,"title":{},"content":{"17":{"position":[[527,7]]},"32":{"position":[[561,8]]},"45":{"position":[[480,7]]},"54":{"position":[[318,7]]},"57":{"position":[[2246,6],[4304,7],[5831,8]]},"58":{"position":[[1611,7]]},"63":{"position":[[212,8]]}},"keywords":{}}],["degrad",{"_index":621,"title":{},"content":{"30":{"position":[[869,8]]}},"keywords":{}}],["delay",{"_index":530,"title":{},"content":{"25":{"position":[[166,6]]},"58":{"position":[[5302,5],[5313,5],[5464,6]]}},"keywords":{}}],["delet",{"_index":77,"title":{},"content":{"3":{"position":[[418,6]]},"59":{"position":[[1375,7]]}},"keywords":{}}],["demand",{"_index":550,"title":{},"content":{"25":{"position":[[574,7]]}},"keywords":{}}],["demonstr",{"_index":606,"title":{},"content":{"30":{"position":[[337,12]]},"32":{"position":[[691,11]]}},"keywords":{}}],["denial",{"_index":1010,"title":{},"content":{"57":{"position":[[6384,6]]}},"keywords":{}}],["denot",{"_index":880,"title":{},"content":{"53":{"position":[[5,7]]}},"keywords":{}}],["depend",{"_index":393,"title":{},"content":{"19":{"position":[[115,9]]},"58":{"position":[[4056,9]]}},"keywords":{}}],["deploy",{"_index":381,"title":{},"content":{"18":{"position":[[215,8]]},"21":{"position":[[313,10]]},"22":{"position":[[54,10],[345,12]]},"23":{"position":[[20,8]]},"48":{"position":[[1288,8],[1485,9]]},"57":{"position":[[4004,11]]}},"keywords":{}}],["depth",{"_index":1147,"title":{},"content":{"61":{"position":[[1783,6]]}},"keywords":{}}],["deriv",{"_index":827,"title":{},"content":{"48":{"position":[[141,7]]},"59":{"position":[[2979,7]]}},"keywords":{}}],["describ",{"_index":691,"title":{},"content":{"35":{"position":[[4,9]]},"50":{"position":[[206,9]]}},"keywords":{}}],["descript",{"_index":1156,"title":{},"content":{"62":{"position":[[414,11]]}},"keywords":{}}],["design",{"_index":527,"title":{},"content":{"25":{"position":[[47,8]]},"30":{"position":[[1073,6]]},"57":{"position":[[1582,11]]},"58":{"position":[[2151,10],[4998,8]]}},"keywords":{}}],["desir",{"_index":1114,"title":{},"content":{"60":{"position":[[368,7]]}},"keywords":{}}],["destin",{"_index":1048,"title":{},"content":{"58":{"position":[[2415,12]]}},"keywords":{}}],["detail",{"_index":581,"title":{},"content":{"26":{"position":[[426,6]]},"28":{"position":[[140,7]]},"30":{"position":[[49,8],[273,8],[560,7]]},"44":{"position":[[346,7]]},"57":{"position":[[482,7]]},"58":{"position":[[344,7]]},"59":{"position":[[3480,7]]}},"keywords":{}}],["detect",{"_index":669,"title":{},"content":{"33":{"position":[[223,8]]},"38":{"position":[[74,6]]},"39":{"position":[[23,9]]}},"keywords":{}}],["determin",{"_index":996,"title":{},"content":{"57":{"position":[[5597,10]]},"58":{"position":[[1363,10]]}},"keywords":{}}],["dev",{"_index":673,"title":{},"content":{"33":{"position":[[352,3]]},"57":{"position":[[4843,3]]}},"keywords":{}}],["develop",{"_index":373,"title":{},"content":{"17":{"position":[[971,10]]},"19":{"position":[[132,10]]},"20":{"position":[[298,11]]},"25":{"position":[[185,12],[918,11]]},"28":{"position":[[15,10]]},"30":{"position":[[1084,11]]},"31":{"position":[[38,11],[266,11]]},"46":{"position":[[261,10],[945,10],[1168,9]]},"48":{"position":[[1196,9]]},"57":{"position":[[1554,11],[1995,12],[3873,11]]}},"keywords":{}}],["devop",{"_index":481,"title":{},"content":{"22":{"position":[[564,6]]}},"keywords":{}}],["dictat",{"_index":899,"title":{},"content":{"57":{"position":[[113,8],[1396,8]]}},"keywords":{}}],["differ",{"_index":266,"title":{},"content":{"12":{"position":[[342,9],[615,9]]},"15":{"position":[[188,9]]},"24":{"position":[[754,9]]},"38":{"position":[[239,9]]}},"keywords":{}}],["differenti",{"_index":704,"title":{},"content":{"35":{"position":[[632,13]]},"48":{"position":[[748,14]]}},"keywords":{}}],["difficult",{"_index":388,"title":{},"content":{"18":{"position":[[433,9]]},"20":{"position":[[77,9]]}},"keywords":{}}],["dignissim",{"_index":13,"title":{},"content":{"0":{"position":[[80,9]]},"2":{"position":[[206,9],[385,9],[564,9],[743,9],[922,9],[1101,9],[1280,9],[1459,9],[1638,9],[1817,9],[1996,9],[2175,9],[2354,9],[2533,9],[2712,9],[2891,9]]}},"keywords":{}}],["diminish",{"_index":537,"title":{},"content":{"25":{"position":[[304,10]]}},"keywords":{}}],["direct",{"_index":214,"title":{},"content":{"9":{"position":[[1161,11]]},"17":{"position":[[684,6]]},"34":{"position":[[273,9]]},"35":{"position":[[64,9]]},"57":{"position":[[12,10]]},"58":{"position":[[13,9],[4882,7]]}},"keywords":{}}],["directli",{"_index":939,"title":{},"content":{"57":{"position":[[2114,8],[3573,9]]},"61":{"position":[[1032,8]]}},"keywords":{}}],["directori",{"_index":56,"title":{},"content":{"3":{"position":[[112,10],[430,10]]},"7":{"position":[[282,10],[399,10]]}},"keywords":{}}],["disabl",{"_index":936,"title":{},"content":{"57":{"position":[[2028,7],[3929,9],[4486,7],[4962,9],[5430,9]]}},"keywords":{}}],["discern",{"_index":977,"title":{},"content":{"57":{"position":[[4083,10]]}},"keywords":{}}],["discord",{"_index":858,"title":{},"content":{"48":{"position":[[1712,7]]}},"keywords":{}}],["discov",{"_index":427,"title":{},"content":{"20":{"position":[[270,10]]}},"keywords":{}}],["discuss",{"_index":630,"title":{},"content":{"30":{"position":[[1177,9]]}},"keywords":{}}],["display",{"_index":270,"title":{},"content":{"12":{"position":[[454,7]]},"38":{"position":[[271,7]]},"40":{"position":[[24,7]]}},"keywords":{}}],["dive",{"_index":643,"title":{},"content":{"31":{"position":[[292,6]]}},"keywords":{}}],["do",{"_index":511,"title":{},"content":{"24":{"position":[[510,5]]},"25":{"position":[[268,5]]}},"keywords":{}}],["docker",{"_index":140,"title":{"8":{"position":[[0,7]]}},"content":{"8":{"position":[[37,7],[93,6],[193,6],[235,6],[342,6],[364,6],[398,6],[443,6],[564,6]]}},"keywords":{}}],["document",{"_index":786,"title":{},"content":{"45":{"position":[[408,8]]}},"keywords":{}}],["docusauru",{"_index":23,"title":{},"content":{"1":{"position":[[19,10]]},"3":{"position":[[0,10],[469,10]]}},"keywords":{}}],["doesn't",{"_index":340,"title":{},"content":{"16":{"position":[[277,7]]},"60":{"position":[[350,7]]},"62":{"position":[[375,7]]},"63":{"position":[[1697,7]]}},"keywords":{}}],["dolor",{"_index":5,"title":{},"content":{"0":{"position":[[12,5],[164,5]]},"2":{"position":[[138,5],[290,5],[317,5],[469,5],[496,5],[648,5],[675,5],[827,5],[854,5],[1006,5],[1033,5],[1185,5],[1212,5],[1364,5],[1391,5],[1543,5],[1570,5],[1722,5],[1749,5],[1901,5],[1928,5],[2080,5],[2107,5],[2259,5],[2286,5],[2438,5],[2465,5],[2617,5],[2644,5],[2796,5],[2823,5],[2975,5]]}},"keywords":{}}],["dolorem"",{"_index":735,"title":{},"content":{"36":{"position":[[646,13]]}},"keywords":{}}],["don't",{"_index":75,"title":{},"content":{"3":{"position":[[394,5]]},"5":{"position":[[7,5]]},"6":{"position":[[7,5]]}},"keywords":{}}],["done",{"_index":111,"title":{},"content":{"6":{"position":[[304,5]]},"12":{"position":[[121,4]]}},"keywords":{}}],["door"",{"_index":249,"title":{},"content":{"11":{"position":[[609,10]]}},"keywords":{}}],["down",{"_index":411,"title":{},"content":{"19":{"position":[[727,4]]},"63":{"position":[[663,4]]}},"keywords":{}}],["download",{"_index":144,"title":{},"content":{"8":{"position":[[145,8]]}},"keywords":{}}],["downstream",{"_index":425,"title":{},"content":{"20":{"position":[[221,10]]}},"keywords":{}}],["downtim",{"_index":623,"title":{},"content":{"30":{"position":[[934,8]]}},"keywords":{}}],["dramat",{"_index":366,"title":{},"content":{"17":{"position":[[598,12]]}},"keywords":{}}],["drill",{"_index":1164,"title":{},"content":{"63":{"position":[[657,5]]}},"keywords":{}}],["due",{"_index":624,"title":{},"content":{"30":{"position":[[943,3]]}},"keywords":{}}],["durat",{"_index":998,"title":{},"content":{"57":{"position":[[5620,8],[6132,8]]}},"keywords":{}}],["dure",{"_index":101,"title":{},"content":{"5":{"position":[[270,6]]},"30":{"position":[[1062,6]]},"57":{"position":[[2291,6],[3866,6]]}},"keywords":{}}],["dynam",{"_index":559,"title":{},"content":{"25":{"position":[[779,8]]},"44":{"position":[[542,11]]},"59":{"position":[[1033,7],[1685,7],[2951,7],[3317,11]]}},"keywords":{}}],["ea",{"_index":726,"title":{},"content":{"36":{"position":[[550,2]]}},"keywords":{}}],["each",{"_index":179,"title":{},"content":{"9":{"position":[[278,4]]},"11":{"position":[[540,4]]},"12":{"position":[[514,4]]},"17":{"position":[[126,4]]},"18":{"position":[[244,4]]},"20":{"position":[[52,4]]},"24":{"position":[[451,4]]},"29":{"position":[[153,4]]},"30":{"position":[[10,4],[254,4],[541,4],[695,4]]},"32":{"position":[[493,4],[603,4]]},"33":{"position":[[689,4]]},"35":{"position":[[646,4]]},"36":{"position":[[74,4],[87,4]]},"40":{"position":[[217,4]]},"41":{"position":[[350,4]]},"45":{"position":[[425,4]]},"46":{"position":[[576,4],[659,4]]},"48":{"position":[[690,4],[839,4],[1005,4],[1442,4]]},"57":{"position":[[4331,4]]},"58":{"position":[[887,4],[2910,4],[4239,4],[5343,4]]}},"keywords":{}}],["easier",{"_index":1174,"title":{},"content":{"63":{"position":[[1846,6]]}},"keywords":{}}],["easili",{"_index":976,"title":{},"content":{"57":{"position":[[4076,6]]}},"keywords":{}}],["easily.immut",{"_index":844,"title":{},"content":{"48":{"position":[[1214,20]]}},"keywords":{}}],["effect",{"_index":348,"title":{},"content":{"16":{"position":[[467,9]]},"34":{"position":[[15,9]]},"35":{"position":[[855,11]]},"44":{"position":[[663,11]]}},"keywords":{}}],["effici",{"_index":347,"title":{},"content":{"16":{"position":[[453,9]]},"35":{"position":[[929,10]]},"44":{"position":[[729,9]]}},"keywords":{}}],["effort",{"_index":407,"title":{},"content":{"19":{"position":[[512,6]]}},"keywords":{}}],["eg",{"_index":792,"title":{},"content":{"46":{"position":[[346,3],[1018,3]]},"62":{"position":[[80,3]]}},"keywords":{}}],["elementum",{"_index":12,"title":{},"content":{"0":{"position":[[70,9]]},"2":{"position":[[196,9],[375,9],[554,9],[733,9],[912,9],[1091,9],[1270,9],[1449,9],[1628,9],[1807,9],[1986,9],[2165,9],[2344,9],[2523,9],[2702,9],[2881,9]]}},"keywords":{}}],["elimin",{"_index":1138,"title":{},"content":{"61":{"position":[[981,10]]}},"keywords":{}}],["elit",{"_index":10,"title":{},"content":{"0":{"position":[[51,5]]},"2":{"position":[[177,5],[356,5],[535,5],[714,5],[893,5],[1072,5],[1251,5],[1430,5],[1609,5],[1788,5],[1967,5],[2146,5],[2325,5],[2504,5],[2683,5],[2862,5]]}},"keywords":{}}],["email",{"_index":203,"title":{},"content":{"9":{"position":[[779,6]]},"12":{"position":[[1021,6]]},"32":{"position":[[262,6]]},"47":{"position":[[293,5]]},"61":{"position":[[397,6]]}},"keywords":{}}],["emb",{"_index":1152,"title":{},"content":{"62":{"position":[[34,5]]}},"keywords":{}}],["emphas",{"_index":1069,"title":{},"content":{"58":{"position":[[4076,11]]}},"keywords":{}}],["enabl",{"_index":357,"title":{},"content":{"17":{"position":[[166,6]]},"40":{"position":[[12,7]]},"57":{"position":[[3729,7],[4832,7],[5199,8]]},"58":{"position":[[1796,8]]}},"keywords":{}}],["enablecachecontrolhead",{"_index":922,"title":{},"content":{"57":{"position":[[935,25],[965,24]]}},"keywords":{}}],["enablegraphiql",{"_index":930,"title":{},"content":{"57":{"position":[[1361,15],[1863,15]]}},"keywords":{}}],["enablehttpcach",{"_index":1077,"title":{},"content":{"58":{"position":[[4849,16]]}},"keywords":{}}],["enableintrospect",{"_index":964,"title":{},"content":{"57":{"position":[[3367,20]]}},"keywords":{}}],["enablequeryvalid",{"_index":979,"title":{},"content":{"57":{"position":[[4159,22],[4186,21],[4721,21]]}},"keywords":{}}],["enableresponsevalid",{"_index":990,"title":{},"content":{"57":{"position":[[5001,25],[5307,24]]}},"keywords":{}}],["encapsul",{"_index":781,"title":{},"content":{"45":{"position":[[279,12]]}},"keywords":{}}],["encompass",{"_index":768,"title":{},"content":{"44":{"position":[[300,11]]},"45":{"position":[[37,11],[395,12]]}},"keywords":{}}],["end",{"_index":292,"title":{},"content":{"13":{"position":[[167,4],[260,3]]},"24":{"position":[[17,3],[464,4]]}},"keywords":{}}],["endpoint",{"_index":158,"title":{},"content":{"8":{"position":[[645,8]]},"38":{"position":[[297,10]]},"44":{"position":[[372,9],[419,9]]},"46":{"position":[[1287,8]]},"57":{"position":[[1671,9],[2975,9],[5083,9]]},"58":{"position":[[1724,9]]},"59":{"position":[[846,8],[1015,8]]}},"keywords":{}}],["engin",{"_index":452,"title":{},"content":{"21":{"position":[[189,9]]}},"keywords":{}}],["enhanc",{"_index":528,"title":{},"content":{"25":{"position":[[59,7],[582,8]]},"35":{"position":[[900,9]]},"48":{"position":[[1380,8]]},"57":{"position":[[4020,7],[4522,7]]}},"keywords":{}}],["ensur",{"_index":143,"title":{},"content":{"8":{"position":[[86,6]]},"19":{"position":[[423,6]]},"31":{"position":[[315,6]]},"44":{"position":[[720,8]]},"45":{"position":[[417,7],[504,8]]},"46":{"position":[[1324,8]]},"48":{"position":[[618,7],[1269,8]]},"57":{"position":[[896,6],[2138,7],[3200,6],[4342,7]]},"58":{"position":[[2112,7],[4001,7],[4655,6]]}},"keywords":{}}],["entri",{"_index":237,"title":{},"content":{"11":{"position":[[205,5]]},"19":{"position":[[685,5]]}},"keywords":{}}],["env",{"_index":869,"title":{"54":{"position":[[0,4]]}},"content":{"50":{"position":[[336,4]]},"57":{"position":[[4938,4]]}},"keywords":{}}],["env.api_endpoint",{"_index":893,"title":{},"content":{"54":{"position":[[230,16]]}},"keywords":{}}],["environ",{"_index":134,"title":{},"content":{"7":{"position":[[347,11]]},"54":{"position":[[23,11],[260,11]]},"57":{"position":[[2053,13],[3956,13],[4847,11],[6271,13]]}},"keywords":{}}],["equival",{"_index":1165,"title":{},"content":{"63":{"position":[[737,10]]}},"keywords":{}}],["ero",{"_index":18,"title":{},"content":{"0":{"position":[[128,4]]},"2":{"position":[[254,4],[433,4],[612,4],[791,4],[970,4],[1149,4],[1328,4],[1507,4],[1686,4],[1865,4],[2044,4],[2223,4],[2402,4],[2581,4],[2760,4],[2939,4]]}},"keywords":{}}],["error",{"_index":396,"title":{},"content":{"19":{"position":[[183,5]]},"33":{"position":[[145,6],[412,6]]},"57":{"position":[[4391,6]]},"58":{"position":[[4366,6]]},"62":{"position":[[426,5]]}},"keywords":{}}],["especi",{"_index":937,"title":{},"content":{"57":{"position":[[2067,10],[3301,10],[6246,10]]}},"keywords":{}}],["essenc",{"_index":703,"title":{},"content":{"35":{"position":[[599,8]]}},"keywords":{}}],["essenti",{"_index":886,"title":{},"content":{"53":{"position":[[463,12]]},"57":{"position":[[5693,12]]},"58":{"position":[[3632,9]]},"61":{"position":[[202,11]]}},"keywords":{}}],["est",{"_index":734,"title":{},"content":{"36":{"position":[[642,3]]}},"keywords":{}}],["etc",{"_index":501,"title":{},"content":{"24":{"position":[[141,4]]},"46":{"position":[[1073,4]]},"59":{"position":[[1383,4]]}},"keywords":{}}],["even",{"_index":343,"title":{},"content":{"16":{"position":[[379,4]]},"20":{"position":[[454,4]]},"23":{"position":[[376,4]]},"30":{"position":[[914,4]]},"31":{"position":[[102,4]]}},"keywords":{}}],["eventu",{"_index":442,"title":{},"content":{"21":{"position":[[0,11]]}},"keywords":{}}],["exactli",{"_index":992,"title":{},"content":{"57":{"position":[[5243,7]]}},"keywords":{}}],["examin",{"_index":655,"title":{},"content":{"32":{"position":[[45,10]]}},"keywords":{}}],["exampl",{"_index":166,"title":{"32":{"position":[[16,8]]}},"content":{"9":{"position":[[28,8]]},"12":{"position":[[389,8]]},"40":{"position":[[274,8]]},"41":{"position":[[407,8]]},"51":{"position":[[112,8],[209,8]]},"52":{"position":[[194,7]]},"54":{"position":[[221,8]]},"57":{"position":[[696,8],[2791,8],[4706,7],[5999,8]]},"58":{"position":[[2020,8],[3782,7]]},"59":{"position":[[102,8],[187,8],[1111,8],[1437,8],[1752,8],[2123,8],[2286,7],[2799,8],[3046,8]]},"63":{"position":[[5,7]]}},"keywords":{}}],["except",{"_index":416,"title":{},"content":{"19":{"position":[[833,11]]}},"keywords":{}}],["excepturi",{"_index":720,"title":{},"content":{"36":{"position":[[386,9]]}},"keywords":{}}],["exclud",{"_index":1118,"title":{},"content":{"60":{"position":[[661,7]]}},"keywords":{}}],["execut",{"_index":128,"title":{},"content":{"7":{"position":[[188,8]]},"57":{"position":[[6098,9]]}},"keywords":{}}],["exhaust",{"_index":1012,"title":{},"content":{"57":{"position":[[6457,7]]}},"keywords":{}}],["exist",{"_index":853,"title":{},"content":{"48":{"position":[[1539,8]]}},"keywords":{}}],["expand",{"_index":909,"title":{},"content":{"57":{"position":[[401,6]]}},"keywords":{}}],["expans",{"_index":549,"title":{},"content":{"25":{"position":[[525,9]]}},"keywords":{}}],["expect",{"_index":1068,"title":{},"content":{"58":{"position":[[4019,8]]}},"keywords":{}}],["expens",{"_index":494,"title":{},"content":{"23":{"position":[[467,9]]},"57":{"position":[[5517,7]]}},"keywords":{}}],["experi",{"_index":311,"title":{},"content":{"13":{"position":[[565,11]]},"17":{"position":[[706,11]]},"25":{"position":[[72,11]]},"30":{"position":[[883,11]]},"35":{"position":[[949,11]]}},"keywords":{}}],["expertis",{"_index":408,"title":{},"content":{"19":{"position":[[523,10]]}},"keywords":{}}],["explain",{"_index":910,"title":{},"content":{"57":{"position":[[494,9]]},"58":{"position":[[356,9]]}},"keywords":{}}],["explicitli",{"_index":1002,"title":{},"content":{"57":{"position":[[5820,10]]},"58":{"position":[[4186,10]]}},"keywords":{}}],["export",{"_index":138,"title":{},"content":{"7":{"position":[[410,6]]}},"keywords":{}}],["expos",{"_index":156,"title":{},"content":{"8":{"position":[[623,7]]},"22":{"position":[[196,7]]},"57":{"position":[[2092,8],[3276,7]]}},"keywords":{}}],["exposur",{"_index":842,"title":{},"content":{"48":{"position":[[1176,8]]},"57":{"position":[[2197,9]]}},"keywords":{}}],["extend",{"_index":132,"title":{},"content":{"7":{"position":[[330,6]]},"9":{"position":[[796,6]]}},"keywords":{}}],["extern",{"_index":960,"title":{},"content":{"57":{"position":[[3133,8]]}},"keywords":{}}],["externaldata",{"_index":950,"title":{},"content":{"57":{"position":[[2621,13],[2962,12]]}},"keywords":{}}],["extract",{"_index":62,"title":{},"content":{"3":{"position":[[199,9]]},"53":{"position":[[481,10]]},"63":{"position":[[1500,7]]}},"keywords":{}}],["facad",{"_index":518,"title":{},"content":{"24":{"position":[[675,7]]}},"keywords":{}}],["facer",{"_index":717,"title":{},"content":{"36":{"position":[[350,6]]}},"keywords":{}}],["failur",{"_index":392,"title":{},"content":{"19":{"position":[[86,8],[625,8]]}},"keywords":{}}],["fake",{"_index":175,"title":{},"content":{"9":{"position":[[171,4]]}},"keywords":{}}],["fals",{"_index":78,"title":{},"content":{"3":{"position":[[455,5]]},"39":{"position":[[70,5]]},"40":{"position":[[93,5]]},"57":{"position":[[1245,5],[3781,6],[4655,6],[4753,6],[5335,6]]},"58":{"position":[[1484,6],[5114,6],[5155,6]]}},"keywords":{}}],["familiar",{"_index":645,"title":{},"content":{"31":{"position":[[331,12]]}},"keywords":{}}],["fast",{"_index":369,"title":{},"content":{"17":{"position":[[779,4]]}},"keywords":{}}],["façad",{"_index":260,"title":{},"content":{"12":{"position":[[230,6]]}},"keywords":{}}],["featur",{"_index":25,"title":{},"content":{"1":{"position":[[39,9]]},"3":{"position":[[20,8]]},"22":{"position":[[87,7]]},"28":{"position":[[28,7],[100,7]]},"34":{"position":[[247,8]]},"48":{"position":[[763,7],[1105,7],[1206,7]]},"57":{"position":[[1784,7],[3498,7]]},"58":{"position":[[5094,7]]}},"keywords":{}}],["feel",{"_index":856,"title":{},"content":{"48":{"position":[[1676,4]]}},"keywords":{}}],["fervent",{"_index":552,"title":{},"content":{"25":{"position":[[656,9]]}},"keywords":{}}],["fetch",{"_index":127,"title":{"29":{"position":[[0,8]]},"30":{"position":[[0,8]]}},"content":{"7":{"position":[[176,7]]},"8":{"position":[[299,7]]},"13":{"position":[[92,8],[234,8]]},"28":{"position":[[117,8]]},"29":{"position":[[115,7]]},"32":{"position":[[465,5],[651,5]]},"33":{"position":[[738,5]]},"53":{"position":[[680,5]]},"55":{"position":[[309,5]]},"57":{"position":[[2940,7],[3538,5]]},"58":{"position":[[5059,8]]},"59":{"position":[[1123,5]]},"61":{"position":[[52,5],[1132,5],[1756,8]]},"63":{"position":[[751,8],[1099,5],[1598,5]]}},"keywords":{}}],["few",{"_index":212,"title":{},"content":{"9":{"position":[[1121,3]]},"17":{"position":[[1091,3]]}},"keywords":{}}],["field",{"_index":196,"title":{},"content":{"9":{"position":[[693,6],[832,5],[985,6]]},"29":{"position":[[185,5]]},"36":{"position":[[704,7]]},"52":{"position":[[243,5]]},"53":{"position":[[530,6]]},"57":{"position":[[3667,7]]},"59":{"position":[[49,5],[236,5],[286,5],[538,5]]},"60":{"position":[[86,5],[191,5],[308,5],[376,5],[541,5],[671,5],[941,5]]},"61":{"position":[[98,5],[685,5],[763,6],[803,5],[1201,7],[1223,6],[1393,5]]},"62":{"position":[[332,6],[405,6]]},"63":{"position":[[271,6],[323,6],[592,6],[722,6],[866,5],[907,5],[959,5]]}},"keywords":{}}],["file",{"_index":54,"title":{},"content":{"3":{"position":[[81,5]]},"7":{"position":[[245,5]]},"9":{"position":[[345,4],[1080,4],[1108,5],[1267,5]]},"26":{"position":[[108,4]]},"32":{"position":[[26,4]]},"33":{"position":[[101,5]]},"40":{"position":[[202,6],[222,4]]},"41":{"position":[[335,6],[355,4]]},"42":{"position":[[92,5],[114,4],[188,4],[252,4]]}},"keywords":{}}],["filenam",{"_index":63,"title":{},"content":{"3":{"position":[[214,10]]}},"keywords":{}}],["fill",{"_index":516,"title":{},"content":{"24":{"position":[[622,6]]}},"keywords":{}}],["final",{"_index":809,"title":{},"content":{"46":{"position":[[1238,5]]},"58":{"position":[[2409,5]]}},"keywords":{}}],["find",{"_index":84,"title":{},"content":{"5":{"position":[[52,4]]},"6":{"position":[[54,4]]}},"keywords":{}}],["first",{"_index":0,"title":{"0":{"position":[[0,5]]}},"content":{"9":{"position":[[22,5]]},"12":{"position":[[669,5]]},"22":{"position":[[430,5]]},"23":{"position":[[148,6]]},"29":{"position":[[0,6]]},"30":{"position":[[195,5]]},"48":{"position":[[1093,5]]},"58":{"position":[[2174,5]]},"61":{"position":[[1451,5]]}},"keywords":{}}],["firstus",{"_index":1143,"title":{},"content":{"61":{"position":[[1555,10]]}},"keywords":{}}],["fix",{"_index":546,"title":{},"content":{"25":{"position":[[493,4]]}},"keywords":{}}],["flag",{"_index":100,"title":{},"content":{"5":{"position":[[265,4]]},"39":{"position":[[5,4]]}},"keywords":{}}],["flaki",{"_index":303,"title":{},"content":{"13":{"position":[[392,5],[500,5]]}},"keywords":{}}],["flatten",{"_index":1122,"title":{},"content":{"61":{"position":[[85,10]]}},"keywords":{}}],["fledg",{"_index":460,"title":{},"content":{"21":{"position":[[305,7]]}},"keywords":{}}],["flexibl",{"_index":370,"title":{},"content":{"17":{"position":[[882,11]]},"60":{"position":[[45,11]]}},"keywords":{}}],["flow",{"_index":1062,"title":{},"content":{"58":{"position":[[3647,5]]}},"keywords":{}}],["fold",{"_index":802,"title":{},"content":{"46":{"position":[[1041,8]]}},"keywords":{}}],["folder",{"_index":55,"title":{},"content":{"3":{"position":[[91,8],[295,6]]}},"keywords":{}}],["follow",{"_index":89,"title":{},"content":{"5":{"position":[[112,9]]},"6":{"position":[[137,9]]},"7":{"position":[[0,6]]},"8":{"position":[[45,6],[216,9],[424,9]]},"9":{"position":[[395,9]]},"12":{"position":[[660,8],[720,9],[967,9]]},"19":{"position":[[146,6],[570,9]]},"26":{"position":[[20,9],[226,9]]},"34":{"position":[[322,8]]},"36":{"position":[[19,9],[173,10]]},"38":{"position":[[129,6]]},"41":{"position":[[222,9]]},"48":{"position":[[816,10]]},"50":{"position":[[226,9]]}},"keywords":{}}],["foolproof",{"_index":545,"title":{},"content":{"25":{"position":[[483,9]]}},"keywords":{}}],["forc",{"_index":99,"title":{},"content":{"5":{"position":[[259,5]]}},"keywords":{}}],["format",{"_index":739,"title":{},"content":{"38":{"position":[[141,7]]},"48":{"position":[[388,11]]}},"keywords":{}}],["forward",{"_index":1060,"title":{},"content":{"58":{"position":[[3416,9],[3532,9],[3929,7]]}},"keywords":{}}],["found",{"_index":666,"title":{},"content":{"33":{"position":[[152,6],[419,6]]}},"keywords":{}}],["fragil",{"_index":390,"title":{"19":{"position":[[3,8]]}},"content":{"19":{"position":[[59,7],[604,7]]}},"keywords":{}}],["free",{"_index":173,"title":{},"content":{"9":{"position":[[140,4]]},"48":{"position":[[1681,4]]},"58":{"position":[[4689,4]]}},"keywords":{}}],["frequent",{"_index":467,"title":{},"content":{"22":{"position":[[168,8]]}},"keywords":{}}],["friction",{"_index":525,"title":{"25":{"position":[[18,9]]}},"content":{"25":{"position":[[121,9]]}},"keywords":{}}],["frontend",{"_index":350,"title":{"17":{"position":[[12,8]]}},"content":{"17":{"position":[[140,8],[406,8],[478,8]]},"18":{"position":[[328,8]]},"24":{"position":[[695,8]]},"25":{"position":[[17,8],[348,8],[432,8],[555,8]]}},"keywords":{}}],["full",{"_index":459,"title":{},"content":{"21":{"position":[[300,4]]},"26":{"position":[[67,4]]}},"keywords":{}}],["function",{"_index":257,"title":{},"content":{"12":{"position":[[94,14]]},"17":{"position":[[1027,13]]},"48":{"position":[[443,8]]}},"keywords":{}}],["fusc",{"_index":15,"title":{},"content":{"0":{"position":[[101,5]]},"2":{"position":[[227,5],[406,5],[585,5],[764,5],[943,5],[1122,5],[1301,5],[1480,5],[1659,5],[1838,5],[2017,5],[2196,5],[2375,5],[2554,5],[2733,5],[2912,5]]}},"keywords":{}}],["fusion",{"_index":558,"title":{},"content":{"25":{"position":[[754,6]]}},"keywords":{}}],["g",{"_index":92,"title":{},"content":{"5":{"position":[[155,1]]}},"keywords":{}}],["gap",{"_index":513,"title":{},"content":{"24":{"position":[[589,3]]}},"keywords":{}}],["gateway",{"_index":234,"title":{"24":{"position":[[10,8]]}},"content":{"11":{"position":[[138,8],[154,7],[385,7],[577,7]]},"18":{"position":[[160,8]]},"24":{"position":[[82,7],[211,8],[267,7],[565,8]]}},"keywords":{}}],["gener",{"_index":487,"title":{},"content":{"23":{"position":[[108,10]]},"30":{"position":[[431,9]]},"35":{"position":[[218,8]]},"46":{"position":[[1120,9],[1313,10]]},"59":{"position":[[3799,8]]}},"keywords":{}}],["get",{"_index":456,"title":{},"content":{"21":{"position":[[258,4]]}},"keywords":{}}],["ghcr.io/tailcallhq/tailcall/tc",{"_index":147,"title":{},"content":{"8":{"position":[[247,30],[480,30]]}},"keywords":{}}],["given",{"_index":1005,"title":{},"content":{"57":{"position":[[5993,5]]},"63":{"position":[[196,5]]}},"keywords":{}}],["global",{"_index":890,"title":{},"content":{"54":{"position":[[16,6]]}},"keywords":{}}],["globalresponsetimeout",{"_index":995,"title":{},"content":{"57":{"position":[[5534,22],[5561,21],[6012,21]]}},"keywords":{}}],["go",{"_index":167,"title":{},"content":{"9":{"position":[[44,5]]},"19":{"position":[[721,5]]},"20":{"position":[[245,2]]},"23":{"position":[[140,2]]},"59":{"position":[[862,5]]}},"keywords":{}}],["goe",{"_index":435,"title":{},"content":{"20":{"position":[[400,4]]}},"keywords":{}}],["good",{"_index":1074,"title":{},"content":{"58":{"position":[[4723,5]]}},"keywords":{}}],["govern",{"_index":965,"title":{},"content":{"57":{"position":[[3401,7]]}},"keywords":{}}],["graham"",{"_index":712,"title":{},"content":{"36":{"position":[[279,13]]}},"keywords":{}}],["grant",{"_index":933,"title":{},"content":{"57":{"position":[[1625,5]]}},"keywords":{}}],["graphiql",{"_index":931,"title":{},"content":{"57":{"position":[[1427,8],[1473,8],[1610,10],[1735,8],[1953,8]]}},"keywords":{}}],["graphql",{"_index":157,"title":{},"content":{"8":{"position":[[637,7]]},"9":{"position":[[63,7],[320,7],[1099,8],[1201,7],[1240,7]]},"31":{"position":[[81,7]]},"32":{"position":[[17,8]]},"33":{"position":[[93,7]]},"34":{"position":[[221,8],[304,7]]},"41":{"position":[[61,7],[136,7]]},"42":{"position":[[77,7]]},"50":{"position":[[23,7]]},"57":{"position":[[1520,7],[2101,7],[3509,8],[4276,7]]},"59":{"position":[[439,7],[2100,7]]},"60":{"position":[[24,7],[114,7],[215,7],[515,7],[697,7],[921,7]]},"63":{"position":[[55,8],[1583,7],[1817,7]]}},"keywords":{}}],["green",{"_index":473,"title":{},"content":{"22":{"position":[[339,5]]}},"keywords":{}}],["group",{"_index":680,"title":{},"content":{"34":{"position":[[38,5]]},"59":{"position":[[3421,6]]}},"keywords":{}}],["groupbi",{"_index":690,"title":{},"content":{"34":{"position":[[505,8]]},"35":{"position":[[94,8],[438,8]]},"59":{"position":[[3390,8],[3403,7],[3665,8]]}},"keywords":{}}],["grpc",{"_index":365,"title":{},"content":{"17":{"position":[[577,5]]}},"keywords":{}}],["gt",{"_index":35,"title":{},"content":{"1":{"position":[[146,5]]},"2":{"position":[[71,4]]}},"keywords":{}}],["guid",{"_index":648,"title":{},"content":{"31":{"position":[[447,6]]},"59":{"position":[[3511,6]]}},"keywords":{}}],["hand",{"_index":378,"title":{},"content":{"18":{"position":[[127,4]]}},"keywords":{}}],["handi",{"_index":945,"title":{},"content":{"57":{"position":[[2356,5]]}},"keywords":{}}],["handl",{"_index":323,"title":{},"content":{"14":{"position":[[255,6]]},"16":{"position":[[127,6]]},"19":{"position":[[172,6]]},"35":{"position":[[867,7]]},"44":{"position":[[758,9]]}},"keywords":{}}],["handwritten",{"_index":447,"title":{},"content":{"21":{"position":[[122,11]]}},"keywords":{}}],["happen",{"_index":465,"title":{},"content":{"22":{"position":[[18,7]]}},"keywords":{}}],["hard",{"_index":450,"title":{},"content":{"21":{"position":[[156,4]]}},"keywords":{}}],["harder",{"_index":454,"title":{},"content":{"21":{"position":[[211,6]]}},"keywords":{}}],["hardwar",{"_index":301,"title":{},"content":{"13":{"position":[[359,8],[487,8]]}},"keywords":{}}],["hash",{"_index":806,"title":{"48":{"position":[[0,4]]}},"content":{"46":{"position":[[1112,4]]},"47":{"position":[[58,4],[114,4]]},"48":{"position":[[12,4],[355,4],[492,5],[502,5],[635,4]]}},"keywords":{}}],["have",{"_index":219,"title":{},"content":{"9":{"position":[[1281,6]]},"17":{"position":[[675,6]]}},"keywords":{}}],["haven't",{"_index":646,"title":{},"content":{"31":{"position":[[397,7]]}},"keywords":{}}],["header",{"_index":871,"title":{"55":{"position":[[0,8]]}},"content":{"50":{"position":[[367,8]]},"55":{"position":[[14,7],[215,6]]},"57":{"position":[[1066,7],[1117,7],[1262,6],[2684,8],[3029,6]]},"58":{"position":[[3127,6],[3388,7],[3516,7],[3865,8],[3916,7],[4028,7],[5360,7],[5386,7],[5475,8]]},"59":{"position":[[2431,8],[2444,7],[2490,7],[2590,6],[2719,8],[2860,6],[2970,8],[3129,8]]}},"keywords":{}}],["header'",{"_index":1111,"title":{},"content":{"59":{"position":[[3297,8]]}},"keywords":{}}],["headers.userid",{"_index":897,"title":{},"content":{"55":{"position":[[188,14]]}},"keywords":{}}],["hear",{"_index":861,"title":{},"content":{"48":{"position":[[1746,4]]}},"keywords":{}}],["help",{"_index":353,"title":{},"content":{"17":{"position":[[16,4],[243,4]]},"31":{"position":[[50,7],[504,4]]},"57":{"position":[[149,5]]},"60":{"position":[[291,7]]},"61":{"position":[[1710,5]]}},"keywords":{}}],["here",{"_index":86,"title":{},"content":{"5":{"position":[[74,5]]},"6":{"position":[[76,5]]},"8":{"position":[[162,5]]},"9":{"position":[[1307,4]]},"32":{"position":[[0,4]]},"35":{"position":[[182,5]]},"55":{"position":[[182,5]]},"59":{"position":[[3763,5]]}},"keywords":{}}],["here'",{"_index":595,"title":{},"content":{"28":{"position":[[179,6]]},"60":{"position":[[130,6]]}},"keywords":{}}],["hidden",{"_index":1120,"title":{},"content":{"60":{"position":[[813,6]]}},"keywords":{}}],["high",{"_index":437,"title":{"44":{"position":[[0,4]]}},"content":{"20":{"position":[[434,4]]},"30":{"position":[[954,4]]}},"keywords":{}}],["higher",{"_index":619,"title":{},"content":{"30":{"position":[[842,6]]}},"keywords":{}}],["highli",{"_index":374,"title":{"18":{"position":[[3,6]]}},"content":{"18":{"position":[[61,6]]}},"keywords":{}}],["hinder",{"_index":531,"title":{},"content":{"25":{"position":[[178,6]]}},"keywords":{}}],["hold",{"_index":889,"title":{},"content":{"53":{"position":[[598,5]]}},"keywords":{}}],["homebrew",{"_index":106,"title":{"6":{"position":[[0,9]]}},"content":{"6":{"position":[[26,8],[113,8]]},"8":{"position":[[597,8]]}},"keywords":{}}],["hope",{"_index":854,"title":{},"content":{"48":{"position":[[1607,4]]}},"keywords":{}}],["host",{"_index":779,"title":{},"content":{"45":{"position":[[157,4]]},"57":{"position":[[1449,6]]},"58":{"position":[[698,5]]}},"keywords":{}}],["howell"",{"_index":724,"title":{},"content":{"36":{"position":[[485,13]]}},"keywords":{}}],["http",{"_index":188,"title":{"59":{"position":[[0,6]]}},"content":{"9":{"position":[[452,4],[585,4],[1155,5]]},"34":{"position":[[267,5],[405,6]]},"35":{"position":[[58,5]]},"57":{"position":[[3043,4],[5078,4]]},"58":{"position":[[3154,4],[3383,4],[4244,5],[4312,5],[4596,5],[4910,4],[4976,4],[5381,4]]},"59":{"position":[[5,5],[200,5],[1300,4],[2505,4],[2530,5],[2855,4]]},"63":{"position":[[1083,4],[1622,4]]}},"keywords":{}}],["http(baseurl",{"_index":891,"title":{},"content":{"54":{"position":[[130,14]]}},"keywords":{}}],["http(method",{"_index":1099,"title":{},"content":{"59":{"position":[[1498,13],[2184,13]]}},"keywords":{}}],["http(path",{"_index":194,"title":{},"content":{"9":{"position":[[629,11],[902,11]]},"32":{"position":[[175,11],[383,11]]},"51":{"position":[[154,11]]},"52":{"position":[[130,11]]},"53":{"position":[[72,11],[180,11]]},"55":{"position":[[119,11]]},"57":{"position":[[2640,11]]},"59":{"position":[[144,11],[723,11],[968,11],[1226,11],[1801,11],[2687,11],[3097,11],[3564,11]]},"61":{"position":[[1639,11]]},"63":{"position":[[475,11],[987,11]]}},"keywords":{}}],["http://0.0.0.0:8000",{"_index":577,"title":{},"content":{"26":{"position":[[297,19]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com",{"_index":1070,"title":{},"content":{"58":{"position":[[4531,36]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com)bad",{"_index":1075,"title":{},"content":{"58":{"position":[[4748,40]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com/api",{"_index":1076,"title":{},"content":{"58":{"position":[[4808,40]]}},"keywords":{}}],["http://localhost:8000/graphiql",{"_index":934,"title":{},"content":{"57":{"position":[[1686,31]]}},"keywords":{}}],["http://localhost:8090",{"_index":914,"title":{},"content":{"57":{"position":[[781,22]]}},"keywords":{}}],["https://cloud.tailcall.com/graphql/d5fb012",{"_index":817,"title":{},"content":{"47":{"position":[[175,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com",{"_index":172,"title":{},"content":{"9":{"position":[[100,37]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/post",{"_index":597,"title":{},"content":{"29":{"position":[[53,42]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/us",{"_index":1090,"title":{},"content":{"59":{"position":[[481,42],[890,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/users/1",{"_index":600,"title":{},"content":{"30":{"position":[[115,44]]}},"keywords":{}}],["https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh",{"_index":123,"title":{},"content":{"7":{"position":[[77,71]]}},"keywords":{}}],["hundr",{"_index":616,"title":{},"content":{"30":{"position":[[723,8]]}},"keywords":{}}],["i.",{"_index":1168,"title":{},"content":{"63":{"position":[[1141,6]]}},"keywords":{}}],["id",{"_index":198,"title":{},"content":{"9":{"position":[[738,3],[863,2],[1030,3]]},"12":{"position":[[752,3],[756,3],[797,3],[829,3],[999,3],[1003,3],[1253,3],[1257,3]]},"32":{"position":[[221,3],[321,3]]},"34":{"position":[[343,3]]},"35":{"position":[[248,2],[574,2]]},"36":{"position":[[114,2]]},"51":{"position":[[143,5],[248,2]]},"52":{"position":[[73,3],[77,3],[240,2]]},"53":{"position":[[118,3]]},"57":{"position":[[1528,3],[1646,3]]},"59":{"position":[[133,5],[712,5],[957,5],[1215,5],[1788,5],[3530,3],[3829,2]]},"60":{"position":[[429,3],[863,3],[938,2]]},"61":{"position":[[339,3],[374,3]]},"63":{"position":[[278,2],[359,3],[1339,3]]}},"keywords":{}}],["identifi",{"_index":634,"title":{},"content":{"31":{"position":[[58,8]]},"32":{"position":[[710,8]]},"33":{"position":[[55,11]]},"46":{"position":[[280,8]]},"48":{"position":[[675,10]]}},"keywords":{}}],["idin",{"_index":1116,"title":{},"content":{"60":{"position":[[565,4]]}},"keywords":{}}],["idl",{"_index":1023,"title":{},"content":{"58":{"position":[[460,4],[653,4],[1441,5]]}},"keywords":{}}],["ignor",{"_index":1067,"title":{},"content":{"58":{"position":[[3989,8]]}},"keywords":{}}],["illustr",{"_index":596,"title":{},"content":{"28":{"position":[[189,12]]},"33":{"position":[[648,11]]},"58":{"position":[[2213,11]]},"63":{"position":[[13,11]]}},"keywords":{}}],["imag",{"_index":72,"title":{},"content":{"3":{"position":[[343,7]]},"8":{"position":[[200,5],[349,5]]}},"keywords":{}}],["immut",{"_index":845,"title":{},"content":{"48":{"position":[[1258,10]]}},"keywords":{}}],["impact",{"_index":367,"title":{},"content":{"17":{"position":[[691,6]]},"20":{"position":[[114,6]]},"30":{"position":[[979,9]]}},"keywords":{}}],["implement",{"_index":344,"title":{},"content":{"16":{"position":[[404,9]]},"18":{"position":[[253,14]]},"24":{"position":[[24,12]]},"28":{"position":[[233,12]]},"50":{"position":[[31,16]]}},"keywords":{}}],["impli",{"_index":957,"title":{},"content":{"57":{"position":[[2909,7]]}},"keywords":{}}],["import",{"_index":477,"title":{},"content":{"22":{"position":[[480,9]]},"48":{"position":[[734,9]]},"63":{"position":[[1647,9]]}},"keywords":{}}],["improv",{"_index":359,"title":{},"content":{"17":{"position":[[251,7],[611,7],[795,7]]},"57":{"position":[[4979,8],[5482,13]]},"58":{"position":[[5010,7]]}},"keywords":{}}],["includ",{"_index":136,"title":{},"content":{"7":{"position":[[371,7]]},"19":{"position":[[350,9]]},"25":{"position":[[144,7]]},"29":{"position":[[167,8]]},"32":{"position":[[503,9]]},"44":{"position":[[336,9]]},"45":{"position":[[319,9]]},"46":{"position":[[1022,9]]},"57":{"position":[[2988,8]]},"58":{"position":[[101,8],[5251,9],[5400,8]]},"59":{"position":[[1351,7],[2401,8],[2833,7]]},"60":{"position":[[961,8]]},"61":{"position":[[713,8]]}},"keywords":{}}],["incom",{"_index":980,"title":{},"content":{"57":{"position":[[4267,8],[4795,8]]},"58":{"position":[[3507,8]]}},"keywords":{}}],["incompat",{"_index":532,"title":{},"content":{"25":{"position":[[198,12]]}},"keywords":{}}],["incorpor",{"_index":693,"title":{},"content":{"35":{"position":[[78,11]]}},"keywords":{}}],["increas",{"_index":313,"title":{"14":{"position":[[3,9]]},"16":{"position":[[3,9]]}},"content":{"14":{"position":[[171,9]]},"15":{"position":[[107,9]]},"16":{"position":[[65,9]]},"46":{"position":[[710,9]]}},"keywords":{}}],["independ",{"_index":485,"title":{},"content":{"23":{"position":[[29,13]]},"48":{"position":[[1470,14]]}},"keywords":{}}],["index",{"_index":1141,"title":{},"content":{"61":{"position":[[1323,9],[1367,5]]}},"keywords":{}}],["indic",{"_index":598,"title":{},"content":{"29":{"position":[[191,10]]},"59":{"position":[[33,10]]},"61":{"position":[[739,10]]}},"keywords":{}}],["ineffici",{"_index":423,"title":{},"content":{"20":{"position":[[184,11]]},"25":{"position":[[282,15]]}},"keywords":{}}],["infer",{"_index":991,"title":{},"content":{"57":{"position":[[5054,5]]}},"keywords":{}}],["info",{"_index":262,"title":{},"content":{"12":{"position":[[262,4]]},"13":{"position":[[475,4]]},"17":{"position":[[584,4]]},"24":{"position":[[645,4]]},"30":{"position":[[602,4]]},"46":{"position":[[369,4]]},"63":{"position":[[1636,4]]}},"keywords":{}}],["inform",{"_index":273,"title":{},"content":{"12":{"position":[[499,11],[945,12],[1157,12]]},"16":{"position":[[144,12]]},"26":{"position":[[390,12]]},"44":{"position":[[323,12],[628,11]]},"53":{"position":[[397,11]]},"57":{"position":[[2435,11],[3222,11],[3544,11],[5107,11]]}},"keywords":{}}],["infrastructur",{"_index":461,"title":{},"content":{"21":{"position":[[332,15]]},"22":{"position":[[383,14]]}},"keywords":{}}],["infrastructure.canari",{"_index":841,"title":{},"content":{"48":{"position":[[1046,21]]}},"keywords":{}}],["init",{"_index":753,"title":{"42":{"position":[[0,5]]}},"content":{"42":{"position":[[4,4],[128,4]]}},"keywords":{}}],["initi",{"_index":607,"title":{},"content":{"30":{"position":[[411,7]]},"35":{"position":[[779,7]]},"58":{"position":[[2326,9]]},"63":{"position":[[309,9]]}},"keywords":{}}],["inlin",{"_index":803,"title":{"61":{"position":[[0,8]]}},"content":{"46":{"position":[[1050,9]]},"61":{"position":[[4,7],[71,10],[620,7],[815,8],[1147,7],[1306,7],[1379,8],[1440,6],[1693,7]]},"63":{"position":[[853,7]]}},"keywords":{}}],["inline(path",{"_index":1130,"title":{},"content":{"61":{"position":[[538,13],[1571,13]]},"63":{"position":[[405,13],[603,13]]}},"keywords":{}}],["input",{"_index":770,"title":{},"content":{"44":{"position":[[386,5]]},"59":{"position":[[2366,5]]}},"keywords":{}}],["insid",{"_index":1170,"title":{},"content":{"63":{"position":[[1482,6]]}},"keywords":{}}],["instal",{"_index":80,"title":{"4":{"position":[[0,12]]}},"content":{"5":{"position":[[33,10],[80,7],[201,9],[281,14],[315,12]]},"6":{"position":[[35,10],[207,7],[248,9],[288,12]]},"7":{"position":[[35,7],[210,12],[235,9],[316,13]]},"8":{"position":[[15,7],[103,9],[606,13],[682,12],[794,9]]},"31":{"position":[[434,12]]}},"keywords":{}}],["instanc",{"_index":608,"title":{},"content":{"30":{"position":[[475,9]]},"52":{"position":[[51,9]]},"59":{"position":[[881,8],[2625,9]]},"60":{"position":[[407,9],[841,9]]},"61":{"position":[[274,9]]}},"keywords":{}}],["instead",{"_index":349,"title":{},"content":{"16":{"position":[[523,8]]},"48":{"position":[[126,8]]},"63":{"position":[[889,7]]}},"keywords":{}}],["instruct",{"_index":85,"title":{},"content":{"5":{"position":[[61,12]]},"6":{"position":[[63,12]]},"35":{"position":[[204,10],[480,9]]},"57":{"position":[[1021,9]]},"59":{"position":[[3785,10]]},"63":{"position":[[1050,8],[1574,8]]}},"keywords":{}}],["instrument",{"_index":959,"title":{},"content":{"57":{"position":[[3098,12],[3595,12]]}},"keywords":{}}],["int",{"_index":199,"title":{},"content":{"9":{"position":[[742,4],[1034,4]]},"32":{"position":[[225,4],[325,4],[338,4]]},"34":{"position":[[347,4],[360,4]]},"53":{"position":[[122,4],[135,4]]},"59":{"position":[[3534,4]]},"60":{"position":[[433,4],[867,4]]},"61":{"position":[[343,4],[378,4],[526,5],[918,5]]},"62":{"position":[[212,3]]},"63":{"position":[[363,3],[526,4],[1343,3],[1399,4]]}},"keywords":{}}],["integr",{"_index":405,"title":{},"content":{"19":{"position":[[399,11]]},"46":{"position":[[960,9],[1346,12]]},"48":{"position":[[1595,10]]}},"keywords":{}}],["intend",{"_index":1039,"title":{},"content":{"58":{"position":[[1715,8]]}},"keywords":{}}],["intensifi",{"_index":614,"title":{},"content":{"30":{"position":[[682,12]]}},"keywords":{}}],["interact",{"_index":32,"title":{},"content":{"1":{"position":[[99,11]]},"57":{"position":[[1497,11]]}},"keywords":{}}],["interest",{"_index":490,"title":{},"content":{"23":{"position":[[281,11]]}},"keywords":{}}],["interfac",{"_index":316,"title":{},"content":{"14":{"position":[[21,10]]},"17":{"position":[[535,10]]},"50":{"position":[[247,10],[258,9]]},"57":{"position":[[1436,9],[1962,9]]}},"keywords":{}}],["intermediari",{"_index":1038,"title":{},"content":{"58":{"position":[[1622,12]]}},"keywords":{}}],["intern",{"_index":702,"title":{},"content":{"35":{"position":[[545,11]]}},"keywords":{}}],["interv",{"_index":1016,"title":{},"content":{"58":{"position":[[156,10]]}},"keywords":{}}],["intric",{"_index":555,"title":{},"content":{"25":{"position":[[718,9]]}},"keywords":{}}],["intricaci",{"_index":561,"title":{},"content":{"25":{"position":[[802,12]]}},"keywords":{}}],["intrins",{"_index":969,"title":{},"content":{"57":{"position":[[3488,9]]}},"keywords":{}}],["introduc",{"_index":512,"title":{},"content":{"24":{"position":[[577,9]]},"25":{"position":[[84,10]]},"35":{"position":[[22,9]]},"58":{"position":[[1765,9]]}},"keywords":{}}],["introspect",{"_index":967,"title":{},"content":{"57":{"position":[[3417,13],[3468,13],[3838,13],[3982,13]]}},"keywords":{}}],["invalid",{"_index":789,"title":{},"content":{"46":{"position":[[197,7]]},"57":{"position":[[4403,7]]}},"keywords":{}}],["involv",{"_index":591,"title":{},"content":{"28":{"position":[[41,8]]},"30":{"position":[[1112,9]]}},"keywords":{}}],["ipsum",{"_index":4,"title":{},"content":{"0":{"position":[[6,5],[115,5],[158,5]]},"2":{"position":[[132,5],[241,5],[284,5],[311,5],[420,5],[463,5],[490,5],[599,5],[642,5],[669,5],[778,5],[821,5],[848,5],[957,5],[1000,5],[1027,5],[1136,5],[1179,5],[1206,5],[1315,5],[1358,5],[1385,5],[1494,5],[1537,5],[1564,5],[1673,5],[1716,5],[1743,5],[1852,5],[1895,5],[1922,5],[2031,5],[2074,5],[2101,5],[2210,5],[2253,5],[2280,5],[2389,5],[2432,5],[2459,5],[2568,5],[2611,5],[2638,5],[2747,5],[2790,5],[2817,5],[2926,5],[2969,5]]}},"keywords":{}}],["isn't",{"_index":823,"title":{},"content":{"48":{"position":[[51,5]]},"58":{"position":[[3487,5]]}},"keywords":{}}],["issu",{"_index":400,"title":{},"content":{"19":{"position":[[284,7]]},"20":{"position":[[145,6]]},"25":{"position":[[137,6],[694,6]]},"30":{"position":[[396,5],[1163,5]]},"31":{"position":[[71,6],[228,6]]},"32":{"position":[[724,5]]},"33":{"position":[[81,6],[250,6],[293,7]]},"34":{"position":[[200,5]]},"38":{"position":[[95,7]]},"39":{"position":[[40,7]]}},"keywords":{}}],["it'",{"_index":283,"title":{},"content":{"12":{"position":[[824,4]]},"19":{"position":[[640,4]]},"24":{"position":[[230,4],[531,4]]},"25":{"position":[[472,4]]},"30":{"position":[[1022,4]]},"53":{"position":[[476,4]]},"57":{"position":[[1764,4],[2008,4],[3907,4],[5662,4],[6193,4]]},"58":{"position":[[4177,4]]},"59":{"position":[[1936,4]]}},"keywords":{}}],["json",{"_index":593,"title":{},"content":{"28":{"position":[[74,4]]},"30":{"position":[[360,4]]},"50":{"position":[[315,4]]},"59":{"position":[[2392,4]]}},"keywords":{}}],["json>",{"_index":868,"title":{},"content":{"50":{"position":[[299,8]]}},"keywords":{}}],["jsonplacehold",{"_index":652,"title":{"32":{"position":[[0,15]]}},"content":{},"keywords":{}}],["jsonplaceholder.graphql",{"_index":182,"title":{},"content":{"9":{"position":[[357,23]]},"26":{"position":[[84,23],[146,25]]},"33":{"position":[[116,25],[362,25]]}},"keywords":{}}],["keep",{"_index":1014,"title":{},"content":{"58":{"position":[[145,4],[892,4],[1153,4],[1382,4],[2919,4]]},"60":{"position":[[795,4]]}},"keywords":{}}],["keepaliveinterv",{"_index":1030,"title":{},"content":{"58":{"position":[[840,18]]}},"keywords":{}}],["keepalivetimeout",{"_index":1033,"title":{},"content":{"58":{"position":[[1079,17]]}},"keywords":{}}],["keepalivewhileidl",{"_index":1035,"title":{},"content":{"58":{"position":[[1322,19]]}},"keywords":{}}],["key",{"_index":335,"title":{},"content":{"16":{"position":[[169,4]]},"31":{"position":[[528,3]]},"34":{"position":[[444,6]]},"35":{"position":[[120,6],[591,4]]},"53":{"position":[[219,6],[664,3]]},"57":{"position":[[2507,5],[2693,6]]},"58":{"position":[[3861,3]]},"59":{"position":[[1840,6],[2573,3],[2728,6],[3138,6],[3197,5],[3603,6],[3702,5]]}},"keywords":{}}],["key"",{"_index":1065,"title":{},"content":{"58":{"position":[[3726,11]]}},"keywords":{}}],["kind",{"_index":492,"title":{},"content":{"23":{"position":[[422,4]]}},"keywords":{}}],["known",{"_index":263,"title":{},"content":{"12":{"position":[[291,5]]},"41":{"position":[[165,5]]},"44":{"position":[[114,5]]},"63":{"position":[[112,6]]}},"keywords":{}}],["lack",{"_index":386,"title":{"22":{"position":[[18,5]]}},"content":{"18":{"position":[[350,4]]}},"keywords":{}}],["late",{"_index":428,"title":{},"content":{"20":{"position":[[286,4]]}},"keywords":{}}],["latenc",{"_index":327,"title":{},"content":{"15":{"position":[[117,8]]}},"keywords":{}}],["latest",{"_index":146,"title":{},"content":{"8":{"position":[[177,6],[311,6]]}},"keywords":{}}],["laudantium",{"_index":729,"title":{},"content":{"36":{"position":[[563,10]]}},"keywords":{}}],["launch",{"_index":570,"title":{"26":{"position":[[0,6]]}},"content":{"26":{"position":[[0,6],[255,8]]},"41":{"position":[[18,8]]}},"keywords":{}}],["layer",{"_index":352,"title":{},"content":{"17":{"position":[[6,5],[320,5],[1117,6]]},"18":{"position":[[39,5]]},"19":{"position":[[35,5],[673,5],[791,5]]},"20":{"position":[[12,6]]},"21":{"position":[[17,5],[98,5]]},"22":{"position":[[76,6],[156,6],[525,6]]},"23":{"position":[[4,6],[248,5],[389,5]]},"24":{"position":[[4,6],[286,6],[370,5],[387,5],[638,6],[668,6],[704,6],[725,6]]},"25":{"position":[[252,5]]},"57":{"position":[[2155,5]]},"58":{"position":[[1789,6],[3595,5]]}},"keywords":{}}],["lead",{"_index":321,"title":{},"content":{"14":{"position":[[163,4]]},"16":{"position":[[57,4]]},"30":{"position":[[808,7],[919,4]]},"33":{"position":[[621,4]]},"46":{"position":[[681,4]]}},"keywords":{}}],["lean",{"_index":916,"title":{},"content":{"57":{"position":[[815,4]]}},"keywords":{}}],["learn",{"_index":807,"title":{},"content":{"46":{"position":[[1187,5]]}},"keywords":{}}],["left",{"_index":1080,"title":{},"content":{"58":{"position":[[5071,4]]}},"keywords":{}}],["legaci",{"_index":496,"title":{"24":{"position":[[3,6]]}},"content":{"24":{"position":[[558,6]]}},"keywords":{}}],["let'",{"_index":707,"title":{},"content":{"36":{"position":[[5,5]]}},"keywords":{}}],["level",{"_index":761,"title":{"44":{"position":[[5,5]]}},"content":{"57":{"position":[[50,6]]}},"keywords":{}}],["leverag",{"_index":942,"title":{},"content":{"57":{"position":[[2281,9]]}},"keywords":{}}],["librari",{"_index":455,"title":{},"content":{"21":{"position":[[232,9]]}},"keywords":{}}],["limit",{"_index":46,"title":{},"content":{"2":{"position":[[87,5]]},"11":{"position":[[445,9]]},"24":{"position":[[103,9]]}},"keywords":{}}],["line",{"_index":667,"title":{},"content":{"33":{"position":[[182,4]]}},"keywords":{}}],["list",{"_index":48,"title":{},"content":{"2":{"position":[[115,4]]},"9":{"position":[[221,4]]},"29":{"position":[[125,4]]},"32":{"position":[[473,4]]},"35":{"position":[[516,4],[678,5],[808,5]]},"46":{"position":[[555,4]]},"53":{"position":[[494,4]]}},"keywords":{}}],["liter",{"_index":830,"title":{},"content":{"48":{"position":[[296,7]]}},"keywords":{}}],["live",{"_index":436,"title":{},"content":{"20":{"position":[[405,5]]},"23":{"position":[[143,4]]},"57":{"position":[[3999,4]]}},"keywords":{}}],["load",{"_index":433,"title":{},"content":{"20":{"position":[[371,4]]},"26":{"position":[[377,4]]},"46":{"position":[[720,4]]}},"keywords":{}}],["loader",{"_index":804,"title":{},"content":{"46":{"position":[[1065,7]]}},"keywords":{}}],["loading"",{"_index":795,"title":{},"content":{"46":{"position":[[803,13]]}},"keywords":{}}],["local",{"_index":941,"title":{},"content":{"57":{"position":[[2253,5],[3061,5]]}},"keywords":{}}],["locat",{"_index":71,"title":{},"content":{"3":{"position":[[326,6]]},"7":{"position":[[255,7]]}},"keywords":{}}],["log",{"_index":574,"title":{},"content":{"26":{"position":[[212,4]]}},"keywords":{}}],["logic",{"_index":775,"title":{},"content":{"44":{"position":[[653,5]]},"48":{"position":[[222,6]]},"57":{"position":[[4133,5]]}},"keywords":{}}],["long",{"_index":40,"title":{"2":{"position":[[0,4]]}},"content":{"2":{"position":[[30,4]]},"57":{"position":[[5737,4]]}},"keywords":{}}],["longer",{"_index":1007,"title":{},"content":{"57":{"position":[[6115,6]]}},"keywords":{}}],["look",{"_index":229,"title":{},"content":{"11":{"position":[[50,5]]},"30":{"position":[[94,4]]},"63":{"position":[[1310,5]]}},"keywords":{}}],["lorem",{"_index":3,"title":{},"content":{"0":{"position":[[0,5],[152,5]]},"2":{"position":[[126,5],[278,5],[305,5],[457,5],[484,5],[636,5],[663,5],[815,5],[842,5],[994,5],[1021,5],[1173,5],[1200,5],[1352,5],[1379,5],[1531,5],[1558,5],[1710,5],[1737,5],[1889,5],[1916,5],[2068,5],[2095,5],[2247,5],[2274,5],[2426,5],[2453,5],[2605,5],[2632,5],[2784,5],[2811,5],[2963,5]]}},"keywords":{}}],["lot",{"_index":446,"title":{},"content":{"21":{"position":[[115,3]]}},"keywords":{}}],["love",{"_index":860,"title":{},"content":{"48":{"position":[[1738,4]]}},"keywords":{}}],["lt",{"_index":43,"title":{},"content":{"2":{"position":[[52,5]]}},"keywords":{}}],["lt;button",{"_index":33,"title":{},"content":{"1":{"position":[[123,10]]}},"keywords":{}}],["lt;file>",{"_index":741,"title":{},"content":{"38":{"position":[[168,15]]},"39":{"position":[[106,15]]}},"keywords":{}}],["lt;file1>",{"_index":746,"title":{},"content":{"40":{"position":[[117,13]]},"41":{"position":[[250,13]]}},"keywords":{}}],["lt;file2>",{"_index":747,"title":{},"content":{"40":{"position":[[131,13]]},"41":{"position":[[264,13]]}},"keywords":{}}],["lt;file_path>",{"_index":756,"title":{},"content":{"42":{"position":[[133,17]]}},"keywords":{}}],["lt;filen>",{"_index":748,"title":{},"content":{"40":{"position":[[149,13]]},"41":{"position":[[282,13]]}},"keywords":{}}],["made",{"_index":635,"title":{},"content":{"31":{"position":[[131,4]]},"46":{"position":[[512,5],[874,5]]},"58":{"position":[[4588,4]]},"59":{"position":[[2518,4]]}},"keywords":{}}],["main",{"_index":319,"title":{},"content":{"14":{"position":[[92,4]]}},"keywords":{}}],["maintain",{"_index":389,"title":{},"content":{"18":{"position":[[446,9]]},"21":{"position":[[164,9]]},"48":{"position":[[974,11],[1557,11]]},"58":{"position":[[683,10],[919,8],[2946,8]]}},"keywords":{}}],["major",{"_index":994,"title":{},"content":{"57":{"position":[[5464,5]]}},"keywords":{}}],["make",{"_index":232,"title":{},"content":{"11":{"position":[[88,4],[473,5]]},"12":{"position":[[889,4]]},"13":{"position":[[118,5],[267,6],[417,5]]},"15":{"position":[[162,4]]},"16":{"position":[[349,5]]},"17":{"position":[[945,4]]},"18":{"position":[[394,4]]},"23":{"position":[[172,4],[439,5]]},"24":{"position":[[151,5],[472,6]]},"30":{"position":[[224,4],[514,6]]},"47":{"position":[[16,5],[44,4]]},"48":{"position":[[1629,5]]},"57":{"position":[[4862,4]]},"58":{"position":[[3452,6]]},"59":{"position":[[459,4],[2909,4]]},"62":{"position":[[295,4]]},"63":{"position":[[1075,4],[1253,6],[1807,4]]}},"keywords":{}}],["malform",{"_index":983,"title":{},"content":{"57":{"position":[[4414,9]]}},"keywords":{}}],["manag",{"_index":345,"title":{},"content":{"16":{"position":[[418,7]]},"23":{"position":[[480,7]]}},"keywords":{}}],["mani",{"_index":800,"title":{},"content":{"46":{"position":[[999,4]]}},"keywords":{}}],["manual",{"_index":119,"title":{},"content":{"7":{"position":[[26,8]]}},"keywords":{}}],["map",{"_index":701,"title":{},"content":{"35":{"position":[[541,3]]},"59":{"position":[[2583,3]]}},"keywords":{}}],["map<str",{"_index":867,"title":{},"content":{"50":{"position":[[284,14],[341,14],[376,14]]}},"keywords":{}}],["markdown",{"_index":24,"title":{},"content":{"1":{"position":[[30,8]]},"3":{"position":[[72,8]]}},"keywords":{}}],["market",{"_index":438,"title":{},"content":{"20":{"position":[[447,6]]}},"keywords":{}}],["match",{"_index":163,"title":{},"content":{"8":{"position":[[777,5]]},"60":{"position":[[358,5]]},"62":{"position":[[313,7],[383,5]]}},"keywords":{}}],["matchkey",{"_index":882,"title":{},"content":{"53":{"position":[[310,9]]}},"keywords":{}}],["matchpath",{"_index":881,"title":{},"content":{"53":{"position":[[281,10]]}},"keywords":{}}],["matter",{"_index":1172,"title":{},"content":{"63":{"position":[[1705,7]]}},"keywords":{}}],["max",{"_index":925,"title":{},"content":{"57":{"position":[[1096,3]]}},"keywords":{}}],["maximum",{"_index":997,"title":{},"content":{"57":{"position":[[5612,7]]},"58":{"position":[[635,7],[2673,7],[5274,7]]}},"keywords":{}}],["maxsiz",{"_index":1083,"title":{},"content":{"58":{"position":[[5261,7],[5448,9]]}},"keywords":{}}],["mdx",{"_index":21,"title":{"1":{"position":[[0,3]]}},"content":{"1":{"position":[[57,4]]}},"keywords":{}}],["me!</button>",{"_index":38,"title":{},"content":{"1":{"position":[[197,18]]}},"keywords":{}}],["mean",{"_index":412,"title":{},"content":{"19":{"position":[[742,5]]},"48":{"position":[[167,7],[595,8]]},"57":{"position":[[735,5],[1251,7],[6082,5]]},"58":{"position":[[3879,5]]},"59":{"position":[[266,5],[424,5]]},"61":{"position":[[1333,7]]}},"keywords":{}}],["measur",{"_index":784,"title":{},"content":{"45":{"position":[[362,9]]},"57":{"position":[[6358,7]]}},"keywords":{}}],["mechan",{"_index":474,"title":{},"content":{"22":{"position":[[418,11]]},"45":{"position":[[250,11]]},"58":{"position":[[4923,11],[4941,11]]},"63":{"position":[[1778,9]]}},"keywords":{}}],["media",{"_index":275,"title":{},"content":{"12":{"position":[[536,5]]}},"keywords":{}}],["mention",{"_index":410,"title":{},"content":{"19":{"position":[[651,10]]},"24":{"position":[[542,10]]},"58":{"position":[[4197,9]]}},"keywords":{}}],["mere",{"_index":824,"title":{},"content":{"48":{"position":[[65,6]]}},"keywords":{}}],["mesh",{"_index":508,"title":{},"content":{"24":{"position":[[409,5]]}},"keywords":{}}],["messag",{"_index":1031,"title":{},"content":{"58":{"position":[[903,7],[1164,7],[1393,8],[2930,7]]},"62":{"position":[[432,7]]}},"keywords":{}}],["meta",{"_index":578,"title":{},"content":{"26":{"position":[[385,4]]}},"keywords":{}}],["metadata",{"_index":765,"title":{},"content":{"44":{"position":[[234,8],[291,8],[582,8]]}},"keywords":{}}],["method",{"_index":833,"title":{},"content":{"48":{"position":[[325,6]]},"59":{"position":[[1273,7],[1305,6],[1343,7],[1418,6],[1950,7]]}},"keywords":{}}],["microservic",{"_index":226,"title":{"11":{"position":[[0,12]]}},"content":{"11":{"position":[[23,13],[109,13],[506,13]]},"12":{"position":[[357,12]]},"17":{"position":[[430,14],[502,13]]},"23":{"position":[[334,12]]},"44":{"position":[[705,14]]}},"keywords":{}}],["middlewar",{"_index":519,"title":{},"content":{"24":{"position":[[683,11]]}},"keywords":{}}],["millisecond",{"_index":1006,"title":{},"content":{"57":{"position":[[6049,13]]},"58":{"position":[[5322,12]]}},"keywords":{}}],["minim",{"_index":675,"title":{},"content":{"33":{"position":[[489,7],[596,7]]}},"keywords":{}}],["minor",{"_index":439,"title":{},"content":{"20":{"position":[[463,5]]}},"keywords":{}}],["mitig",{"_index":640,"title":{},"content":{"31":{"position":[[241,9]]}},"keywords":{}}],["mobile/web",{"_index":231,"title":{},"content":{"11":{"position":[[75,12]]}},"keywords":{}}],["modern",{"_index":479,"title":{},"content":{"22":{"position":[[514,6]]}},"keywords":{}}],["modest",{"_index":300,"title":{},"content":{"13":{"position":[[352,6],[480,6]]}},"keywords":{}}],["modifi",{"_index":685,"title":{"60":{"position":[[0,8]]}},"content":{"34":{"position":[[256,6]]},"60":{"position":[[4,7],[261,7],[743,7]]},"61":{"position":[[144,9]]},"63":{"position":[[576,6]]}},"keywords":{}}],["modify(nam",{"_index":1115,"title":{},"content":{"60":{"position":[[438,13],[475,13]]},"63":{"position":[[439,13],[788,13]]}},"keywords":{}}],["modify(omit",{"_index":1121,"title":{},"content":{"60":{"position":[[872,13],[895,13]]}},"keywords":{}}],["monolith",{"_index":441,"title":{"21":{"position":[[3,9]]}},"content":{"21":{"position":[[45,8]]}},"keywords":{}}],["more",{"_index":294,"title":{},"content":{"13":{"position":[[183,4]]},"15":{"position":[[219,4]]},"16":{"position":[[384,4],[448,4]]},"18":{"position":[[416,4]]},"30":{"position":[[233,4]]},"36":{"position":[[724,4]]},"46":{"position":[[1193,4]]},"48":{"position":[[343,4]]},"58":{"position":[[171,5]]},"59":{"position":[[3475,4]]},"63":{"position":[[154,4],[1832,4],[1872,4]]}},"keywords":{}}],["moreov",{"_index":505,"title":{},"content":{"24":{"position":[[220,9]]}},"keywords":{}}],["multipl",{"_index":255,"title":{},"content":{"12":{"position":[[51,8],[149,8]]},"13":{"position":[[274,8]]},"14":{"position":[[297,8]]},"15":{"position":[[167,8]]},"17":{"position":[[1044,8]]},"30":{"position":[[441,8]]},"34":{"position":[[44,8]]},"35":{"position":[[410,8]]},"40":{"position":[[193,8]]},"41":{"position":[[326,8]]},"46":{"position":[[127,8],[477,8]]},"48":{"position":[[886,8]]},"53":{"position":[[542,8]]},"59":{"position":[[3428,8],[3991,8]]},"63":{"position":[[92,8]]}},"keywords":{}}],["mustach",{"_index":1092,"title":{},"content":{"59":{"position":[[1063,8],[1663,8],[2049,8],[2921,8]]}},"keywords":{}}],["mutat",{"_index":903,"title":{},"content":{"57":{"position":[[245,9],[255,8],[666,9],[676,8],[1339,9],[1349,8],[1917,9],[1927,8],[2587,9],[2597,8],[3803,9],[3813,8],[4677,9],[4687,8],[5404,9],[5414,8],[5963,9],[5973,8]]},"58":{"position":[[276,9],[286,8],[589,9],[599,8],[818,9],[828,8],[1057,9],[1067,8],[1300,9],[1310,8],[1564,9],[1574,8],[1982,9],[1992,8],[2638,9],[2648,8],[2846,9],[2856,8],[3079,9],[3089,8],[3296,9],[3306,8],[3753,9],[3763,8],[4463,9],[4473,8],[5177,9],[5187,8],[5551,9],[5561,8]]},"59":{"position":[[1451,8],[2137,8],[2316,8],[2640,8],[3060,8]]}},"keywords":{}}],["n",{"_index":589,"title":{"27":{"position":[[9,1]]},"39":{"position":[[2,1]]}},"content":{"33":{"position":[[159,1],[173,1],[319,1],[390,1],[426,1]]},"39":{"position":[[87,1]]},"46":{"position":[[354,1],[378,1]]},"59":{"position":[[3505,1]]}},"keywords":{}}],["n+1",{"_index":605,"title":{},"content":{"30":{"position":[[324,3],[1050,3]]},"31":{"position":[[67,3]]},"32":{"position":[[590,3]]},"33":{"position":[[77,3],[246,3],[523,3],[632,3]]},"34":{"position":[[196,3]]},"35":{"position":[[879,3]]},"38":{"position":[[91,3]]},"39":{"position":[[36,3]]}},"keywords":{}}],["name",{"_index":200,"title":{},"content":{"9":{"position":[[747,5]]},"12":{"position":[[1007,5]]},"32":{"position":[[230,5]]},"36":{"position":[[117,4]]},"47":{"position":[[288,4]]},"57":{"position":[[2811,5]]},"59":{"position":[[2597,5],[3292,4],[3353,4],[3539,5]]},"60":{"position":[[168,5],[240,4],[314,4],[382,4]]},"61":{"position":[[383,5]]},"62":{"position":[[145,6],[194,5]]},"63":{"position":[[285,5],[367,5],[717,4],[844,4],[861,4],[1347,5],[1530,7],[1538,4]]}},"keywords":{}}],["name"",{"_index":1109,"title":{},"content":{"59":{"position":[[3214,11]]}},"keywords":{}}],["necessari",{"_index":317,"title":{},"content":{"14":{"position":[[51,9]]},"42":{"position":[[67,9]]},"45":{"position":[[53,9]]},"57":{"position":[[426,10]]}},"keywords":{}}],["necessit",{"_index":548,"title":{},"content":{"25":{"position":[[509,12]]}},"keywords":{}}],["need",{"_index":322,"title":{},"content":{"14":{"position":[[246,5]]},"15":{"position":[[153,5]]},"16":{"position":[[118,5]]},"19":{"position":[[797,5]]},"23":{"position":[[132,4],[164,4],[354,5],[395,5]]},"30":{"position":[[24,4]]},"47":{"position":[[35,5]]},"50":{"position":[[149,5]]},"57":{"position":[[383,6],[2371,4]]},"63":{"position":[[1903,5]]}},"keywords":{}}],["nest",{"_index":1126,"title":{},"content":{"61":{"position":[[231,6]]}},"keywords":{}}],["network",{"_index":304,"title":{},"content":{"13":{"position":[[398,7],[506,7]]},"16":{"position":[[328,7]]},"17":{"position":[[784,7]]}},"keywords":{}}],["new",{"_index":256,"title":{},"content":{"12":{"position":[[77,3],[90,3],[207,3],[1175,3]]},"17":{"position":[[1001,3]]},"21":{"position":[[185,3]]},"26":{"position":[[481,3]]},"42":{"position":[[30,3]]}},"keywords":{}}],["newli",{"_index":843,"title":{},"content":{"48":{"position":[[1190,5]]}},"keywords":{}}],["next",{"_index":663,"title":{},"content":{"32":{"position":[[760,4]]}},"keywords":{}}],["node",{"_index":877,"title":{},"content":{"52":{"position":[[41,5]]},"53":{"position":[[39,5]]},"59":{"position":[[58,4]]},"60":{"position":[[97,4],[202,4],[682,4]]},"61":{"position":[[107,4]]}},"keywords":{}}],["nodej",{"_index":83,"title":{},"content":{"5":{"position":[[26,6]]}},"keywords":{}}],["nomenclatur",{"_index":521,"title":{},"content":{"24":{"position":[[764,13]]}},"keywords":{}}],["non",{"_index":309,"title":{},"content":{"13":{"position":[[459,3]]},"57":{"position":[[828,3]]}},"keywords":{}}],["notabl",{"_index":738,"title":{},"content":{"38":{"position":[[48,8]]},"57":{"position":[[4498,7]]}},"keywords":{}}],["note",{"_index":97,"title":{},"content":{"5":{"position":[[236,4]]},"8":{"position":[[668,4]]},"63":{"position":[[1660,4]]}},"keywords":{}}],["noth",{"_index":413,"title":{},"content":{"19":{"position":[[748,7]]}},"keywords":{}}],["now",{"_index":571,"title":{},"content":{"26":{"position":[[7,4],[447,4]]},"36":{"position":[[685,3]]},"61":{"position":[[1028,3]]},"63":{"position":[[939,3]]}},"keywords":{}}],["npm",{"_index":81,"title":{"5":{"position":[[0,4]]}},"content":{"5":{"position":[[148,3],[277,3]]}},"keywords":{}}],["nullabl",{"_index":1140,"title":{},"content":{"61":{"position":[[1183,10],[1245,9],[1282,9]]}},"keywords":{}}],["number",{"_index":682,"title":{},"content":{"34":{"position":[[107,6]]},"35":{"position":[[727,6]]},"46":{"position":[[855,6]]},"58":{"position":[[643,6]]}},"keywords":{}}],["numer",{"_index":629,"title":{},"content":{"30":{"position":[[1122,8]]}},"keywords":{}}],["object",{"_index":287,"title":{},"content":{"12":{"position":[[1335,6]]},"46":{"position":[[563,7],[664,7]]},"58":{"position":[[5209,6]]},"59":{"position":[[1649,6],[2033,6],[2372,6]]},"63":{"position":[[682,7],[928,7],[1465,6]]}},"keywords":{}}],["occaecati",{"_index":719,"title":{},"content":{"36":{"position":[[376,9]]}},"keywords":{}}],["occur",{"_index":793,"title":{},"content":{"46":{"position":[[527,5]]}},"keywords":{}}],["odit",{"_index":733,"title":{},"content":{"36":{"position":[[637,4]]}},"keywords":{}}],["offer",{"_index":742,"title":{},"content":{"38":{"position":[[203,6]]},"57":{"position":[[57,6],[5458,5]]}},"keywords":{}}],["omit",{"_index":1117,"title":{},"content":{"60":{"position":[[647,5],[722,4]]}},"keywords":{}}],["on",{"_index":318,"title":{"39":{"position":[[9,3]]}},"content":{"14":{"position":[[81,3]]},"18":{"position":[[0,3]]},"25":{"position":[[384,3]]},"33":{"position":[[232,3],[326,3],[397,3]]},"34":{"position":[[75,4]]},"35":{"position":[[433,4],[775,3]]},"39":{"position":[[94,3]]},"46":{"position":[[980,4]]},"48":{"position":[[1010,3]]},"57":{"position":[[874,4]]},"59":{"position":[[651,3],[4014,4]]}},"keywords":{}}],["onboard",{"_index":451,"title":{},"content":{"21":{"position":[[174,10]]}},"keywords":{}}],["onc",{"_index":110,"title":{},"content":{"6":{"position":[[283,4]]},"8":{"position":[[673,4]]},"46":{"position":[[0,4]]},"48":{"position":[[1283,4]]},"54":{"position":[[73,4]]}},"keywords":{}}],["onclick",{"_index":34,"title":{},"content":{"1":{"position":[[134,11]]}},"keywords":{}}],["onlin",{"_index":174,"title":{},"content":{"9":{"position":[[145,6]]}},"keywords":{}}],["open",{"_index":583,"title":{},"content":{"26":{"position":[[452,4]]}},"keywords":{}}],["oper",{"_index":694,"title":{"56":{"position":[[0,9]]},"63":{"position":[[0,8]]}},"content":{"35":{"position":[[103,9]]},"48":{"position":[[1461,8],[1569,11]]},"50":{"position":[[98,9],[176,10]]},"57":{"position":[[2311,11],[2460,10],[3679,10]]},"58":{"position":[[4224,9],[4250,8]]},"59":{"position":[[11,8],[206,8],[680,9],[2536,9]]},"60":{"position":[[12,8],[158,9],[269,9],[751,9]]},"61":{"position":[[12,8],[628,9],[1155,8],[1701,8]]},"62":{"position":[[11,9],[229,8]]},"63":{"position":[[101,10],[563,9],[637,8],[824,8],[1030,8],[1437,9],[1687,9]]}},"keywords":{}}],["operation",{"_index":493,"title":{},"content":{"23":{"position":[[448,13]]}},"keywords":{}}],["opt",{"_index":984,"title":{},"content":{"57":{"position":[[4479,3]]}},"keywords":{}}],["optim",{"_index":356,"title":{},"content":{"17":{"position":[[112,9]]},"35":{"position":[[842,12]]},"46":{"position":[[1004,13]]},"57":{"position":[[6299,9]]}},"keywords":{}}],["optio",{"_index":721,"title":{},"content":{"36":{"position":[[396,5]]}},"keywords":{}}],["option",{"_index":740,"title":{},"content":{"38":{"position":[[158,9],[218,7]]},"40":{"position":[[5,6],[265,8]]},"41":{"position":[[398,8]]},"57":{"position":[[464,7]]},"58":{"position":[[326,7]]}},"keywords":{}}],["orchestr",{"_index":264,"title":{},"content":{"12":{"position":[[304,14],[370,14]]},"24":{"position":[[711,13]]},"48":{"position":[[702,14]]}},"keywords":{}}],["order",{"_index":1171,"title":{},"content":{"63":{"position":[[1674,5]]}},"keywords":{}}],["organiz",{"_index":524,"title":{"25":{"position":[[3,14]]}},"content":{"25":{"position":[[106,14],[764,14]]}},"keywords":{}}],["other",{"_index":785,"title":{},"content":{"45":{"position":[[378,7]]},"58":{"position":[[3974,6]]}},"keywords":{}}],["out",{"_index":382,"title":{},"content":{"18":{"position":[[224,3]]},"21":{"position":[[29,3]]},"26":{"position":[[371,3],[516,3]]},"48":{"position":[[1695,3]]},"58":{"position":[[2523,4]]},"59":{"position":[[3501,3]]}},"keywords":{}}],["outlin",{"_index":766,"title":{},"content":{"44":{"position":[[248,8]]}},"keywords":{}}],["output",{"_index":286,"title":{},"content":{"12":{"position":[[1213,6]]},"36":{"position":[[157,6]]}},"keywords":{}}],["over",{"_index":291,"title":{},"content":{"13":{"position":[[87,4]]},"17":{"position":[[906,4]]}},"keywords":{}}],["overal",{"_index":306,"title":{},"content":{"13":{"position":[[427,7]]},"14":{"position":[[359,7]]},"17":{"position":[[372,7]]},"48":{"position":[[435,7]]}},"keywords":{}}],["overview",{"_index":223,"title":{},"content":{"9":{"position":[[1323,8]]}},"keywords":{}}],["ownership",{"_index":539,"title":{},"content":{"25":{"position":[[324,9],[419,9]]}},"keywords":{}}],["p",{"_index":152,"title":{},"content":{"8":{"position":[[455,1],[468,1]]}},"keywords":{}}],["pair",{"_index":778,"title":{},"content":{"45":{"position":[[150,6]]}},"keywords":{}}],["paradigm",{"_index":569,"title":{},"content":{"25":{"position":[[930,10]]}},"keywords":{}}],["paramet",{"_index":672,"title":{},"content":{"33":{"position":[[338,10],[466,9]]},"35":{"position":[[470,9]]},"44":{"position":[[471,11]]},"59":{"position":[[1592,10],[1693,11],[1711,10],[2452,9],[3411,9]]}},"keywords":{}}],["parent",{"_index":696,"title":{"53":{"position":[[0,7]]}},"content":{"35":{"position":[[283,6]]},"50":{"position":[[320,7]]},"53":{"position":[[32,6]]},"59":{"position":[[3864,6]]}},"keywords":{}}],["part",{"_index":478,"title":{},"content":{"22":{"position":[[504,4]]},"47":{"position":[[76,4]]},"63":{"position":[[1519,4],[1548,4]]}},"keywords":{}}],["particular",{"_index":299,"title":{},"content":{"13":{"position":[[320,10]]}},"keywords":{}}],["particularli",{"_index":944,"title":{},"content":{"57":{"position":[[2343,12]]}},"keywords":{}}],["pass",{"_index":873,"title":{},"content":{"51":{"position":[[24,6],[260,6]]},"59":{"position":[[1629,4],[2013,4],[3367,6]]}},"keywords":{}}],["past",{"_index":183,"title":{},"content":{"9":{"position":[[385,5]]}},"keywords":{}}],["path",{"_index":133,"title":{},"content":{"7":{"position":[[342,4]]},"9":{"position":[[590,4],[883,4]]},"26":{"position":[[72,4]]},"34":{"position":[[412,5]]},"40":{"position":[[227,5]]},"41":{"position":[[360,5]]},"42":{"position":[[119,5]]},"54":{"position":[[179,5]]},"57":{"position":[[1409,4],[1596,5]]},"58":{"position":[[4644,6],[4708,4]]},"59":{"position":[[326,4],[363,4],[403,4],[817,5],[1150,4],[1530,5],[2216,5]]},"61":{"position":[[724,4],[1237,4],[1483,4]]},"63":{"position":[[1136,4]]}},"keywords":{}}],["path/to/file1.graphql",{"_index":750,"title":{},"content":{"40":{"position":[[301,23]]},"41":{"position":[[425,23]]}},"keywords":{}}],["path/to/file2.graphql",{"_index":751,"title":{},"content":{"40":{"position":[[325,23]]},"41":{"position":[[449,23]]}},"keywords":{}}],["path=$path:~/.tailcall/bin",{"_index":139,"title":{},"content":{"7":{"position":[[417,26]]}},"keywords":{}}],["pattern",{"_index":526,"title":{},"content":{"25":{"position":[[32,8]]}},"keywords":{}}],["pellentesqu",{"_index":11,"title":{},"content":{"0":{"position":[[57,12]]},"2":{"position":[[183,12],[362,12],[541,12],[720,12],[899,12],[1078,12],[1257,12],[1436,12],[1615,12],[1794,12],[1973,12],[2152,12],[2331,12],[2510,12],[2689,12],[2868,12]]}},"keywords":{}}],["per",{"_index":1028,"title":{},"content":{"58":{"position":[[694,3]]}},"keywords":{}}],["perceiv",{"_index":554,"title":{},"content":{"25":{"position":[[704,8]]}},"keywords":{}}],["perform",{"_index":113,"title":{"15":{"position":[[11,12]]},"20":{"position":[[15,12]]}},"content":{"6":{"position":[[326,9]]},"11":{"position":[[402,7]]},"13":{"position":[[463,11]]},"15":{"position":[[91,11]]},"16":{"position":[[480,7]]},"17":{"position":[[184,7],[263,11],[639,11],[807,11]]},"19":{"position":[[272,11],[360,11],[454,8]]},"20":{"position":[[102,11],[337,7]]},"22":{"position":[[249,11]]},"46":{"position":[[289,11],[694,11]]},"57":{"position":[[4537,11],[4988,12],[5235,7],[5470,11]]},"58":{"position":[[5018,11]]},"61":{"position":[[1807,11]]}},"keywords":{}}],["permit",{"_index":968,"title":{},"content":{"57":{"position":[[3443,9]]},"58":{"position":[[3400,9]]}},"keywords":{}}],["perspect",{"_index":535,"title":{},"content":{"25":{"position":[[226,11]]}},"keywords":{}}],["pertin",{"_index":771,"title":{},"content":{"44":{"position":[[437,9]]}},"keywords":{}}],["phase",{"_index":988,"title":{},"content":{"57":{"position":[[4785,5]]}},"keywords":{}}],["phone",{"_index":657,"title":{},"content":{"32":{"position":[[277,6]]}},"keywords":{}}],["place",{"_index":507,"title":{},"content":{"24":{"position":[[309,5],[329,5]]},"57":{"position":[[3174,5]]}},"keywords":{}}],["placehold",{"_index":594,"title":{},"content":{"28":{"position":[[79,11]]},"30":{"position":[[365,11]]},"57":{"position":[[2838,11]]},"63":{"position":[[1190,11]]}},"keywords":{}}],["platform",{"_index":103,"title":{},"content":{"5":{"position":[[331,8]]},"12":{"position":[[542,9]]}},"keywords":{}}],["playground",{"_index":576,"title":{},"content":{"26":{"position":[[285,11],[461,10]]}},"keywords":{}}],["pleas",{"_index":647,"title":{},"content":{"31":{"position":[[414,6]]},"48":{"position":[[1669,6]]},"59":{"position":[[3488,6]]}},"keywords":{}}],["plu",{"_index":671,"title":{"39":{"position":[[4,4]]}},"content":{"33":{"position":[[321,4],[392,4]]},"35":{"position":[[770,4]]},"39":{"position":[[89,4]]}},"keywords":{}}],["plugin",{"_index":51,"title":{},"content":{"3":{"position":[[53,7]]}},"keywords":{}}],["point",{"_index":236,"title":{},"content":{"11":{"position":[[196,5]]},"19":{"position":[[691,5]]}},"keywords":{}}],["polici",{"_index":1040,"title":{},"content":{"58":{"position":[[1833,9]]}},"keywords":{}}],["pool",{"_index":1020,"title":{},"content":{"58":{"position":[[430,4]]}},"keywords":{}}],["poolidletimeout",{"_index":1019,"title":{},"content":{"58":{"position":[[373,16]]}},"keywords":{}}],["poolmaxidleperhost",{"_index":1027,"title":{},"content":{"58":{"position":[[611,19]]}},"keywords":{}}],["poor",{"_index":310,"title":{},"content":{"13":{"position":[[555,4]]},"46":{"position":[[689,4]]}},"keywords":{}}],["port",{"_index":159,"title":{},"content":{"8":{"position":[[657,4]]},"57":{"position":[[511,5],[536,4],[610,4],[709,4],[841,6],[915,4]]}},"keywords":{}}],["pose",{"_index":1001,"title":{},"content":{"57":{"position":[[5789,4]]}},"keywords":{}}],["post",{"_index":2,"title":{"0":{"position":[[11,4]]},"1":{"position":[[9,4]]},"2":{"position":[[10,4]]},"29":{"position":[[9,6]]}},"content":{"1":{"position":[[5,5],[116,6]]},"2":{"position":[[40,5],[98,4]]},"3":{"position":[[182,4],[290,4],[338,4]]},"9":{"position":[[268,5],[826,5],[888,6],[895,6],[966,4],[1008,5],[1023,4]]},"12":{"position":[[476,5],[678,6],[704,6],[745,4],[874,4],[1246,4]]},"28":{"position":[[126,5],[172,6]]},"29":{"position":[[41,6],[133,5],[220,5]]},"30":{"position":[[15,5],[180,5],[499,5],[652,5]]},"32":{"position":[[161,6],[168,6],[314,4],[481,6],[498,4],[608,4]]},"33":{"position":[[443,5],[563,5],[676,5],[694,4]]},"34":{"position":[[336,4]]},"35":{"position":[[290,5],[311,6],[764,5],[803,4]]},"36":{"position":[[79,4],[122,5]]},"47":{"position":[[262,5]]},"52":{"position":[[66,4],[256,4]]},"53":{"position":[[58,6],[65,6],[111,4],[452,4],[551,4],[621,4]]},"59":{"position":[[1364,5],[1794,6],[1963,4],[2333,4],[3523,4],[3871,5],[3892,6]]},"61":{"position":[[332,4],[532,5],[791,4],[824,4],[947,5],[1548,4]]},"63":{"position":[[247,5],[299,4],[387,4],[1367,4],[1493,6]]}},"keywords":{}}],["post'",{"_index":602,"title":{},"content":{"30":{"position":[[259,6],[546,6]]}},"keywords":{}}],["post.us",{"_index":686,"title":{},"content":{"34":{"position":[[286,9]]}},"keywords":{}}],["postuserstreet",{"_index":1134,"title":{},"content":{"61":{"position":[[670,14],[1013,14]]}},"keywords":{}}],["postuserstreet(id",{"_index":1129,"title":{},"content":{"61":{"position":[[507,18],[899,18]]}},"keywords":{}}],["potent",{"_index":633,"title":{},"content":{"31":{"position":[[22,6]]}},"keywords":{}}],["potenti",{"_index":544,"title":{},"content":{"25":{"position":[[452,9]]},"31":{"position":[[218,9]]},"33":{"position":[[67,9],[236,9]]},"38":{"position":[[81,9]]},"57":{"position":[[4051,9],[5507,9],[6374,9]]}},"keywords":{}}],["power",{"_index":29,"title":{},"content":{"1":{"position":[[74,5]]},"3":{"position":[[33,7]]},"16":{"position":[[300,8]]},"17":{"position":[[750,8]]},"57":{"position":[[1977,8]]},"63":{"position":[[1769,8]]}},"keywords":{}}],["practic",{"_index":395,"title":{},"content":{"19":{"position":[[158,9]]},"46":{"position":[[907,9]]}},"keywords":{}}],["precis",{"_index":1173,"title":{},"content":{"63":{"position":[[1837,8]]}},"keywords":{}}],["predict",{"_index":418,"title":{},"content":{"20":{"position":[[90,7]]}},"keywords":{}}],["prepend",{"_index":1071,"title":{},"content":{"58":{"position":[[4607,7]]}},"keywords":{}}],["present",{"_index":517,"title":{},"content":{"24":{"position":[[655,12]]},"25":{"position":[[605,10],[818,8]]},"55":{"position":[[251,7]]},"60":{"position":[[611,9]]},"61":{"position":[[259,10]]}},"keywords":{}}],["prevent",{"_index":975,"title":{},"content":{"57":{"position":[[4040,10],[4380,10]]}},"keywords":{}}],["print",{"_index":162,"title":{},"content":{"8":{"position":[[747,7]]},"26":{"position":[[364,6]]}},"keywords":{}}],["proactiv",{"_index":637,"title":{},"content":{"31":{"position":[[188,9]]}},"keywords":{}}],["problem",{"_index":224,"title":{"10":{"position":[[0,7]]}},"content":{"13":{"position":[[76,7]]},"16":{"position":[[371,7]]},"22":{"position":[[316,7]]},"23":{"position":[[293,7]]},"30":{"position":[[328,8],[674,7],[1054,7]]},"32":{"position":[[594,8]]},"33":{"position":[[527,8],[636,8]]},"35":{"position":[[883,8]]},"46":{"position":[[360,8],[384,7],[741,7]]}},"keywords":{}}],["process",{"_index":253,"title":{},"content":{"12":{"position":[[30,7]]},"14":{"position":[[266,7]]},"17":{"position":[[927,8]]},"31":{"position":[[492,7]]},"46":{"position":[[115,7],[1268,8]]},"61":{"position":[[58,9],[193,8],[1138,8]]}},"keywords":{}}],["produc",{"_index":816,"title":{},"content":{"47":{"position":[[126,8]]}},"keywords":{}}],["product",{"_index":406,"title":{},"content":{"19":{"position":[[471,11]]},"23":{"position":[[265,11]]},"25":{"position":[[364,13]]},"31":{"position":[[171,11]]},"48":{"position":[[945,11],[1315,11],[1403,7],[1515,10]]},"57":{"position":[[2042,10],[3945,10],[4927,10],[6260,10]]}},"keywords":{}}],["profil",{"_index":272,"title":{},"content":{"12":{"position":[[491,7],[937,7]]}},"keywords":{}}],["project",{"_index":755,"title":{},"content":{"42":{"position":[[43,8]]}},"keywords":{}}],["project'",{"_index":907,"title":{},"content":{"57":{"position":[[373,9]]}},"keywords":{}}],["promot",{"_index":1148,"title":{},"content":{"61":{"position":[[1790,9]]}},"keywords":{}}],["prompt",{"_index":757,"title":{},"content":{"42":{"position":[[165,7]]}},"keywords":{}}],["prone",{"_index":398,"title":{},"content":{"19":{"position":[[254,5],[616,5]]}},"keywords":{}}],["propel",{"_index":564,"title":{},"content":{"25":{"position":[[862,7]]}},"keywords":{}}],["properli",{"_index":339,"title":{},"content":{"16":{"position":[[248,8]]},"19":{"position":[[561,8]]}},"keywords":{}}],["properti",{"_index":1167,"title":{},"content":{"63":{"position":[[774,9]]}},"keywords":{}}],["protect",{"_index":961,"title":{},"content":{"57":{"position":[[3258,9]]}},"keywords":{}}],["protocol",{"_index":364,"title":{},"content":{"17":{"position":[[550,10]]},"45":{"position":[[166,8]]}},"keywords":{}}],["provid",{"_index":355,"title":{},"content":{"17":{"position":[[67,9],[868,7]]},"26":{"position":[[351,8]]},"34":{"position":[[148,8]]},"36":{"position":[[366,9]]},"42":{"position":[[105,8]]},"46":{"position":[[245,8],[1152,8]]},"48":{"position":[[332,8]]},"57":{"position":[[1725,9],[2782,8],[3154,9]]},"58":{"position":[[2011,8],[3578,7],[4318,8]]},"59":{"position":[[2943,7],[3017,8]]},"60":{"position":[[32,8]]},"62":{"position":[[261,8],[360,8]]}},"keywords":{}}],["proxi",{"_index":752,"title":{},"content":{"41":{"position":[[69,5]]},"44":{"position":[[175,6],[524,6]]},"48":{"position":[[1120,6]]},"58":{"position":[[1586,6],[1597,5],[1750,5],[2203,6]]}},"keywords":{}}],["proxy'",{"_index":1044,"title":{},"content":{"58":{"position":[[2043,7]]}},"keywords":{}}],["publicli",{"_index":963,"title":{},"content":{"57":{"position":[[3346,8]]}},"keywords":{}}],["publish",{"_index":636,"title":{"46":{"position":[[0,8]]}},"content":{"31":{"position":[[158,9]]},"41":{"position":[[120,7]]},"46":{"position":[[48,7],[104,10],[1085,10],[1257,10]]},"47":{"position":[[142,10]]}},"keywords":{}}],["pull",{"_index":145,"title":{},"content":{"8":{"position":[[168,4],[242,4]]}},"keywords":{}}],["purpos",{"_index":502,"title":{},"content":{"24":{"position":[[161,7]]},"48":{"position":[[244,7],[455,7]]}},"keywords":{}}],["put",{"_index":1096,"title":{},"content":{"59":{"position":[[1370,4],[1971,3]]}},"keywords":{}}],["queri",{"_index":192,"title":{"39":{"position":[[13,8]]}},"content":{"9":{"position":[[543,6],[550,5],[563,5],[609,5]]},"32":{"position":[[133,6],[140,5],[153,5]]},"33":{"position":[[330,7],[401,7],[435,5],[497,5],[555,5],[604,5],[682,6]]},"34":{"position":[[437,6]]},"35":{"position":[[113,6]]},"36":{"position":[[29,6],[98,5],[729,7]]},"39":{"position":[[98,7]]},"51":{"position":[[46,6],[101,6],[126,5],[279,6]]},"53":{"position":[[50,5],[212,6],[626,6]]},"54":{"position":[[107,5]]},"55":{"position":[[84,5]]},"57":{"position":[[232,6],[239,5],[653,6],[660,5],[1326,6],[1333,5],[1548,5],[1904,6],[1911,5],[2574,6],[2581,5],[2613,5],[3431,7],[3790,6],[3797,5],[4284,7],[4336,5],[4424,8],[4664,6],[4671,5],[4804,8],[4876,7],[5391,6],[5398,5],[5631,5],[5750,7],[5950,6],[5957,5],[6092,5],[6446,7]]},"58":{"position":[[263,6],[270,5],[576,6],[583,5],[805,6],[812,5],[1044,6],[1051,5],[1287,6],[1294,5],[1551,6],[1558,5],[1969,6],[1976,5],[2625,6],[2632,5],[2833,6],[2840,5],[3066,6],[3073,5],[3283,6],[3290,5],[3740,6],[3747,5],[4450,6],[4457,5],[5164,6],[5171,5],[5538,6],[5545,5]]},"59":{"position":[[116,5],[249,5],[547,8],[695,5],[940,5],[1198,5],[1559,6],[1586,5],[1766,5],[1833,6],[3596,6],[3695,6]]},"61":{"position":[[312,6],[319,5],[499,5],[698,5],[871,6],[878,5],[891,5],[1777,5]]},"62":{"position":[[93,6],[100,5],[113,5]]}},"keywords":{}}],["question",{"_index":855,"title":{},"content":{"48":{"position":[[1658,10]]}},"keywords":{}}],["quia",{"_index":728,"title":{},"content":{"36":{"position":[[558,4]]}},"keywords":{}}],["quibusdam",{"_index":732,"title":{},"content":{"36":{"position":[[619,9]]}},"keywords":{}}],["quick",{"_index":222,"title":{},"content":{"9":{"position":[[1317,5]]}},"keywords":{}}],["quit",{"_index":503,"title":{},"content":{"24":{"position":[[169,5]]}},"keywords":{}}],["quot",{"_index":820,"title":{},"content":{"47":{"position":[[254,7],[305,9]]}},"keywords":{}}],["quot;/extern",{"_index":951,"title":{},"content":{"57":{"position":[[2652,15]]}},"keywords":{}}],["quot;/graphiql"",{"_index":935,"title":{},"content":{"57":{"position":[[1879,22]]}},"keywords":{}}],["quot;/posts"",{"_index":656,"title":{},"content":{"32":{"position":[[187,19]]},"53":{"position":[[84,19]]},"59":{"position":[[1813,19]]}},"keywords":{}}],["quot;/posts/{{value.id}}/comments"",{"_index":878,"title":{},"content":{"52":{"position":[[142,41]]}},"keywords":{}}],["quot;/users"",{"_index":195,"title":{},"content":{"9":{"position":[[641,19]]},"34":{"position":[[418,18]]},"53":{"position":[[192,19]]},"54":{"position":[[185,19]]},"59":{"position":[[156,19],[735,19],[980,19],[1536,19],[2222,19],[2699,19],[3109,19],[3576,19]]},"61":{"position":[[1651,19]]}},"keywords":{}}],["quot;/users/{{args.id}}"",{"_index":875,"title":{},"content":{"51":{"position":[[166,31]]},"59":{"position":[[1238,31]]}},"keywords":{}}],["quot;/users/{{headers.userid}}/comments"",{"_index":896,"title":{},"content":{"55":{"position":[[131,47]]}},"keywords":{}}],["quot;/users/{{userid}}"",{"_index":1162,"title":{},"content":{"63":{"position":[[487,30],[999,30]]}},"keywords":{}}],["quot;/users/{{value.id}}/posts"",{"_index":207,"title":{},"content":{"9":{"position":[[914,38]]}},"keywords":{}}],["quot;/users/{{value.userid}}"",{"_index":659,"title":{},"content":{"32":{"position":[[395,36]]}},"keywords":{}}],["quot;0"",{"_index":1144,"title":{},"content":{"61":{"position":[[1605,14]]}},"keywords":{}}],["quot;address"",{"_index":1132,"title":{},"content":{"61":{"position":[[571,20]]}},"keywords":{}}],["quot;apikey"",{"_index":948,"title":{},"content":{"57":{"position":[[2513,19]]}},"keywords":{}}],["quot;array"",{"_index":887,"title":{},"content":{"53":{"position":[[502,17]]}},"keywords":{}}],["quot;authorization"",{"_index":953,"title":{},"content":{"57":{"position":[[2700,26]]},"58":{"position":[[3686,27],[5507,28]]}},"keywords":{}}],["quot;batching"",{"_index":796,"title":{},"content":{"46":{"position":[[820,20]]}},"keywords":{}}],["quot;bear",{"_index":954,"title":{},"content":{"57":{"position":[[2734,12]]}},"keywords":{}}],["quot;data"",{"_index":708,"title":{},"content":{"36":{"position":[[186,17]]}},"keywords":{}}],["quot;eag",{"_index":794,"title":{},"content":{"46":{"position":[[791,11]]}},"keywords":{}}],["quot;ervin",{"_index":723,"title":{},"content":{"36":{"position":[[473,11]]}},"keywords":{}}],["quot;et",{"_index":725,"title":{},"content":{"36":{"position":[[541,8]]}},"keywords":{}}],["quot;front",{"_index":248,"title":{},"content":{"11":{"position":[[597,11]]}},"keywords":{}}],["quot;http://jsonplaceholder.typicode.com"",{"_index":191,"title":{},"content":{"9":{"position":[[492,48]]},"32":{"position":[[82,48]]},"58":{"position":[[525,48],[754,48],[993,48],[1236,48],[1500,48],[1918,48],[2243,48],[2574,48],[2782,48],[3015,48],[3232,48],[4399,48]]}},"keywords":{}}],["quot;http://localhost:3000"",{"_index":1042,"title":{},"content":{"58":{"position":[[1873,35],[2058,34],[2344,33]]}},"keywords":{}}],["quot;https://jsonplaceholder.typicode.com"",{"_index":1091,"title":{},"content":{"59":{"position":[[764,49]]}},"keywords":{}}],["quot;id"",{"_index":687,"title":{},"content":{"34":{"position":[[451,15],[514,16]]},"35":{"position":[[127,15],[447,17]]},"36":{"position":[[229,15],[436,15]]},"53":{"position":[[226,15],[292,17]]},"59":{"position":[[3610,15],[3674,17],[3708,15]]}},"keywords":{}}],["quot;in",{"_index":731,"title":{},"content":{"36":{"position":[[610,8]]}},"keywords":{}}],["quot;john"",{"_index":1154,"title":{},"content":{"62":{"position":[[152,17]]}},"keywords":{}}],["quot;leann",{"_index":711,"title":{},"content":{"36":{"position":[[266,12]]}},"keywords":{}}],["quot;name"",{"_index":710,"title":{},"content":{"36":{"position":[[248,17],[455,17]]},"61":{"position":[[1620,18]]},"63":{"position":[[419,19],[617,19]]}},"keywords":{}}],["quot;operators"",{"_index":1160,"title":{},"content":{"63":{"position":[[122,22]]}},"keywords":{}}],["quot;parent"",{"_index":885,"title":{},"content":{"53":{"position":[[418,18]]}},"keywords":{}}],["quot;post"",{"_index":1100,"title":{},"content":{"59":{"position":[[1512,17],[2198,17]]}},"keywords":{}}],["quot;posts"",{"_index":713,"title":{},"content":{"36":{"position":[[293,18],[499,18]]}},"keywords":{}}],["quot;query"",{"_index":819,"title":{},"content":{"47":{"position":[[233,20]]}},"keywords":{}}],["quot;street"",{"_index":1133,"title":{},"content":{"61":{"position":[[592,20]]}},"keywords":{}}],["quot;sunt",{"_index":715,"title":{},"content":{"36":{"position":[[335,10]]}},"keywords":{}}],["quot;tailcall"",{"_index":1106,"title":{},"content":{"59":{"position":[[2764,23],[3174,22]]}},"keywords":{}}],["quot;tailcall/1.0"",{"_index":1058,"title":{},"content":{"58":{"position":[[3197,25]]}},"keywords":{}}],["quot;title"",{"_index":714,"title":{},"content":{"36":{"position":[[316,18],[522,18],[591,18]]}},"keywords":{}}],["quot;us",{"_index":1108,"title":{},"content":{"59":{"position":[[3203,10]]}},"keywords":{}}],["quot;user"",{"_index":1131,"title":{},"content":{"61":{"position":[[552,18]]}},"keywords":{}}],["quot;userid"",{"_index":883,"title":{},"content":{"53":{"position":[[320,19]]},"59":{"position":[[1847,19]]},"60":{"position":[[452,19],[489,19]]}},"keywords":{}}],["quot;username"",{"_index":1161,"title":{},"content":{"63":{"position":[[453,21],[802,21]]}},"keywords":{}}],["quot;users"",{"_index":709,"title":{},"content":{"36":{"position":[[206,18]]},"61":{"position":[[1585,19]]}},"keywords":{}}],["quot;users","0","name"",{"_index":1142,"title":{},"content":{"61":{"position":[[1491,51]]}},"keywords":{}}],["quot;x",{"_index":1064,"title":{},"content":{"58":{"position":[[3714,7],[5484,8]]},"59":{"position":[[2735,7],[3145,7]]}},"keywords":{}}],["quot;your_api_key_here"",{"_index":949,"title":{},"content":{"57":{"position":[[2540,31],[2859,30]]}},"keywords":{}}],["quot;{{args.id}}"",{"_index":1103,"title":{},"content":{"59":{"position":[[1874,26]]}},"keywords":{}}],["quot;{{args.input}}"",{"_index":1104,"title":{},"content":{"59":{"position":[[2248,27]]}},"keywords":{}}],["quot;{{args.name}}"",{"_index":1110,"title":{},"content":{"59":{"position":[[3233,28]]}},"keywords":{}}],["quot;{{env.api_endpoint}}"",{"_index":892,"title":{},"content":{"54":{"position":[[145,33]]}},"keywords":{}}],["quot;{{value.userid}}"",{"_index":689,"title":{},"content":{"34":{"position":[[474,30]]},"35":{"position":[[150,31]]},"53":{"position":[[249,31]]},"59":{"position":[[3633,31],[3731,31]]}},"keywords":{}}],["rang",{"_index":769,"title":{},"content":{"44":{"position":[[314,5]]}},"keywords":{}}],["rate",{"_index":245,"title":{},"content":{"11":{"position":[[440,4]]},"24":{"position":[[98,4]]}},"keywords":{}}],["raw",{"_index":818,"title":{},"content":{"47":{"position":[[229,3]]}},"keywords":{}}],["reach",{"_index":857,"title":{},"content":{"48":{"position":[[1689,5]]},"58":{"position":[[1700,8]]}},"keywords":{}}],["react",{"_index":30,"title":{},"content":{"1":{"position":[[83,5]]}},"keywords":{}}],["readi",{"_index":788,"title":{},"content":{"46":{"position":[[38,6]]},"57":{"position":[[1771,5]]}},"keywords":{}}],["real",{"_index":611,"title":{},"content":{"30":{"position":[[610,4]]}},"keywords":{}}],["receipt",{"_index":772,"title":{},"content":{"44":{"position":[[488,7]]}},"keywords":{}}],["receiv",{"_index":601,"title":{},"content":{"30":{"position":[[167,8]]},"55":{"position":[[46,8]]},"57":{"position":[[1169,8],[5162,8]]}},"keywords":{}}],["recent",{"_index":281,"title":{},"content":{"12":{"position":[[697,6]]}},"keywords":{}}],["recommend",{"_index":797,"title":{},"content":{"46":{"position":[[883,9]]},"57":{"position":[[2013,11]]}},"keywords":{}}],["redirect",{"_index":1047,"title":{},"content":{"58":{"position":[[2391,10]]}},"keywords":{}}],["reduc",{"_index":325,"title":{"15":{"position":[[3,7]]}},"content":{"15":{"position":[[83,7]]},"34":{"position":[[94,8]]},"35":{"position":[[716,6]]},"46":{"position":[[844,6]]},"57":{"position":[[2177,7]]},"58":{"position":[[5033,8]]},"61":{"position":[[1768,8]]}},"keywords":{}}],["refer",{"_index":252,"title":{},"content":{"12":{"position":[[16,6],[803,9],[1304,9]]},"30":{"position":[[382,6]]},"31":{"position":[[421,5]]},"46":{"position":[[411,6]]},"54":{"position":[[247,6]]},"55":{"position":[[203,6]]},"57":{"position":[[522,6]]},"58":{"position":[[4128,6]]},"59":{"position":[[570,6],[828,6],[1286,6],[3495,5]]},"60":{"position":[[550,8]]}},"keywords":{}}],["registri",{"_index":150,"title":{},"content":{"8":{"position":[[371,9]]},"44":{"position":[[148,9],[194,8],[600,9]]},"46":{"position":[[90,9]]},"47":{"position":[[160,9]]}},"keywords":{}}],["regular",{"_index":57,"title":{},"content":{"3":{"position":[[123,7]]}},"keywords":{}}],["releas",{"_index":476,"title":{"23":{"position":[[11,8]]}},"content":{"22":{"position":[[463,8]]},"48":{"position":[[1068,9]]}},"keywords":{}}],["relev",{"_index":298,"title":{},"content":{"13":{"position":[[300,8]]}},"keywords":{}}],["reli",{"_index":480,"title":{},"content":{"22":{"position":[[556,4]]}},"keywords":{}}],["reliabl",{"_index":342,"title":{},"content":{"16":{"position":[[319,8]]},"17":{"position":[[279,11],[623,11],[823,11]]},"19":{"position":[[441,8]]},"22":{"position":[[233,11]]},"48":{"position":[[666,8]]}},"keywords":{}}],["remain",{"_index":289,"title":{},"content":{"13":{"position":[[35,7]]},"44":{"position":[[29,6]]},"48":{"position":[[519,7]]},"58":{"position":[[4681,7]]}},"keywords":{}}],["renam",{"_index":1113,"title":{},"content":{"60":{"position":[[182,6]]}},"keywords":{}}],["repellat",{"_index":718,"title":{},"content":{"36":{"position":[[357,8]]}},"keywords":{}}],["replac",{"_index":905,"title":{},"content":{"57":{"position":[[296,7]]},"63":{"position":[[1216,8]]}},"keywords":{}}],["repositori",{"_index":107,"title":{},"content":{"6":{"position":[[99,10]]},"44":{"position":[[215,10]]}},"keywords":{}}],["reprehenderit"",{"_index":722,"title":{},"content":{"36":{"position":[[402,19]]}},"keywords":{}}],["repres",{"_index":676,"title":{},"content":{"33":{"position":[[581,10]]},"52":{"position":[[5,10]]},"54":{"position":[[5,10]]},"59":{"position":[[1571,10]]},"61":{"position":[[1058,12]]}},"keywords":{}}],["represent",{"_index":826,"title":{},"content":{"48":{"position":[[89,14]]},"58":{"position":[[4493,15]]}},"keywords":{}}],["request",{"_index":189,"title":{},"content":{"9":{"position":[[457,8]]},"11":{"position":[[93,8],[227,8]]},"12":{"position":[[137,8],[599,8],[896,7]]},"13":{"position":[[126,7]]},"14":{"position":[[285,8]]},"15":{"position":[[176,8]]},"20":{"position":[[232,8]]},"29":{"position":[[17,7],[107,7]]},"30":{"position":[[60,7],[201,8],[238,8],[310,9],[423,7],[461,9],[529,7],[592,9],[705,7],[766,9],[969,9],[1135,9]]},"31":{"position":[[118,8]]},"32":{"position":[[640,7]]},"33":{"position":[[727,7]]},"34":{"position":[[61,8]]},"35":{"position":[[419,8],[737,8],[787,7]]},"44":{"position":[[508,7],[750,7]]},"45":{"position":[[133,7]]},"46":{"position":[[448,7],[497,8],[647,7],[865,8]]},"47":{"position":[[24,7],[88,8]]},"55":{"position":[[29,7]]},"57":{"position":[[3048,8]]},"58":{"position":[[1669,8],[2129,8],[2296,7],[3159,9],[3459,9],[3890,8]]},"59":{"position":[[470,7],[2338,7],[2417,7],[2510,7],[2810,7],[3033,8],[3381,8],[3442,8],[4000,8]]},"63":{"position":[[1088,7],[1264,8],[1627,8]]}},"keywords":{}}],["requir",{"_index":285,"title":{},"content":{"12":{"position":[[1148,8]]},"13":{"position":[[200,8]]},"18":{"position":[[94,8],[308,12]]},"19":{"position":[[492,7]]},"21":{"position":[[289,8]]},"22":{"position":[[41,8],[128,8],[363,8]]},"28":{"position":[[108,8]]},"45":{"position":[[68,8]]},"46":{"position":[[581,7]]},"57":{"position":[[1805,9],[2477,8]]}},"keywords":{}}],["resili",{"_index":415,"title":{},"content":{"19":{"position":[[820,9]]},"44":{"position":[[460,10]]},"45":{"position":[[208,10]]}},"keywords":{}}],["resolv",{"_index":216,"title":{},"content":{"9":{"position":[[1227,7]]},"25":{"position":[[679,9]]},"63":{"position":[[1063,8]]}},"keywords":{}}],["resourc",{"_index":618,"title":{},"content":{"30":{"position":[[793,10]]},"57":{"position":[[5776,9],[6309,8],[6472,10]]}},"keywords":{}}],["respect",{"_index":1072,"title":{},"content":{"58":{"position":[[4633,10]]}},"keywords":{}}],["respons",{"_index":238,"title":{},"content":{"11":{"position":[[242,11],[329,8]]},"12":{"position":[[730,9],[879,9],[977,9],[1117,8],[1179,8]]},"15":{"position":[[252,8]]},"30":{"position":[[826,8]]},"35":{"position":[[524,9],[669,8]]},"45":{"position":[[141,8]]},"57":{"position":[[1081,10],[1159,9],[5143,9],[6228,8]]},"58":{"position":[[2500,8],[2733,9]]},"62":{"position":[[51,8]]}},"keywords":{}}],["rest",{"_index":170,"title":{},"content":{"9":{"position":[[87,4],[152,4]]},"17":{"position":[[569,4]]},"59":{"position":[[88,4],[312,4],[375,4]]}},"keywords":{}}],["restrict",{"_index":1061,"title":{},"content":{"58":{"position":[[3623,8]]}},"keywords":{}}],["result",{"_index":259,"title":{},"content":{"12":{"position":[[181,8],[1070,7]]},"13":{"position":[[544,7]]},"14":{"position":[[329,8]]},"15":{"position":[[73,6],[233,6]]},"20":{"position":[[416,7]]},"30":{"position":[[282,9]]},"46":{"position":[[466,7],[623,9]]},"53":{"position":[[608,7]]},"58":{"position":[[4341,7]]},"61":{"position":[[1259,9]]},"63":{"position":[[1717,9]]}},"keywords":{}}],["retriev",{"_index":280,"title":{},"content":{"12":{"position":[[688,8],[917,8]]},"29":{"position":[[28,8]]},"44":{"position":[[554,9]]}},"keywords":{}}],["return",{"_index":197,"title":{},"content":{"9":{"position":[[700,8],[992,8]]},"11":{"position":[[315,9]]},"46":{"position":[[545,7]]},"61":{"position":[[1041,7]]}},"keywords":{}}],["reusabl",{"_index":387,"title":{},"content":{"18":{"position":[[378,11]]}},"keywords":{}}],["revert",{"_index":491,"title":{},"content":{"23":{"position":[[366,9],[407,9]]}},"keywords":{}}],["rfc",{"_index":1079,"title":{},"content":{"58":{"position":[[4989,4]]}},"keywords":{}}],["rhoncu",{"_index":16,"title":{},"content":{"0":{"position":[[107,7]]},"2":{"position":[[233,7],[412,7],[591,7],[770,7],[949,7],[1128,7],[1307,7],[1486,7],[1665,7],[1844,7],[2023,7],[2202,7],[2381,7],[2560,7],[2739,7],[2918,7]]}},"keywords":{}}],["rich",{"_index":315,"title":{},"content":{"14":{"position":[[11,4]]}},"keywords":{}}],["right",{"_index":641,"title":{},"content":{"31":{"position":[[251,5]]}},"keywords":{}}],["risk",{"_index":332,"title":{"16":{"position":[[13,5]]}},"content":{"16":{"position":[[84,6]]}},"keywords":{}}],["rivet",{"_index":563,"title":{},"content":{"25":{"position":[[838,8]]}},"keywords":{}}],["robust",{"_index":414,"title":{},"content":{"19":{"position":[[809,6]]},"45":{"position":[[515,6]]}},"keywords":{}}],["rollbacks.break",{"_index":850,"title":{},"content":{"48":{"position":[[1411,18]]}},"keywords":{}}],["rout",{"_index":239,"title":{},"content":{"11":{"position":[[258,7]]},"22":{"position":[[410,7]]},"58":{"position":[[1686,6],[1812,7]]}},"keywords":{}}],["run",{"_index":88,"title":{"33":{"position":[[0,7]]}},"content":{"5":{"position":[[100,7],[224,8]]},"6":{"position":[[125,7],[271,8]]},"8":{"position":[[381,3],[450,3],[758,7]]},"23":{"position":[[254,7]]},"26":{"position":[[12,3]]},"46":{"position":[[146,3]]},"48":{"position":[[882,3]]},"57":{"position":[[571,8],[5651,3],[5742,7],[6434,3]]}},"keywords":{}}],["runtim",{"_index":847,"title":{},"content":{"48":{"position":[[1351,8]]}},"keywords":{}}],["s",{"_index":126,"title":{},"content":{"7":{"position":[[157,1]]}},"keywords":{}}],["safeguard",{"_index":999,"title":{},"content":{"57":{"position":[[5719,9]]}},"keywords":{}}],["safeti",{"_index":849,"title":{},"content":{"48":{"position":[[1393,6]]}},"keywords":{}}],["same",{"_index":217,"title":{},"content":{"9":{"position":[[1262,4]]},"24":{"position":[[791,4]]},"44":{"position":[[40,4]]},"47":{"position":[[109,4]]},"48":{"position":[[932,4]]},"63":{"position":[[1753,5]]}},"keywords":{}}],["sampl",{"_index":653,"title":{},"content":{"32":{"position":[[10,6]]}},"keywords":{}}],["scenario",{"_index":268,"title":{"28":{"position":[[0,9]]}},"content":{"12":{"position":[[409,8]]},"19":{"position":[[189,10]]},"59":{"position":[[3273,9]]}},"keywords":{}}],["schema",{"_index":169,"title":{"40":{"position":[[2,7]]}},"content":{"9":{"position":[[71,6],[328,7],[466,6],[1209,6],[1248,6],[1350,6]]},"26":{"position":[[344,6]]},"32":{"position":[[56,6],[440,6]]},"34":{"position":[[312,6]]},"38":{"position":[[312,6]]},"40":{"position":[[39,6],[110,6],[294,6]]},"42":{"position":[[85,6]]},"44":{"position":[[141,6],[187,6],[392,6]]},"45":{"position":[[117,6]]},"57":{"position":[[43,6],[192,6],[624,6],[1277,6],[1836,6],[2486,6],[3566,6],[3745,6],[4098,6],[4312,7],[4372,7],[4617,6],[5064,6],[5342,6],[5904,6]]},"58":{"position":[[220,6],[478,6],[704,6],[944,6],[1188,6],[1447,6],[1843,6],[2528,6],[2743,6],[2971,6],[3169,6],[3653,6],[4373,6],[5121,6],[5424,6]]},"60":{"position":[[122,7],[223,6],[395,7],[639,7],[705,6],[977,7]]},"61":{"position":[[124,7],[158,6],[295,7],[303,6],[846,6],[862,6],[1001,7],[1729,6]]},"62":{"position":[[68,7],[84,6],[346,6]]},"63":{"position":[[202,6],[1277,6],[1727,6],[1825,6]]}},"keywords":{}}],["screen",{"_index":296,"title":{},"content":{"13":{"position":[[216,7],[331,7]]}},"keywords":{}}],["script",{"_index":129,"title":{},"content":{"7":{"position":[[223,7]]}},"keywords":{}}],["seamless",{"_index":812,"title":{},"content":{"46":{"position":[[1333,8]]}},"keywords":{}}],["second",{"_index":284,"title":{},"content":{"12":{"position":[[835,7]]},"57":{"position":[[6068,8]]},"58":{"position":[[402,7],[871,7],[1109,7],[2456,7],[2689,7],[2894,7]]}},"keywords":{}}],["secret",{"_index":946,"title":{},"content":{"57":{"position":[[2410,8]]}},"keywords":{}}],["section",{"_index":632,"title":{},"content":{"30":{"position":[[1201,9]]},"32":{"position":[[765,8]]},"46":{"position":[[1223,9]]}},"keywords":{}}],["secur",{"_index":333,"title":{},"content":{"16":{"position":[[75,8],[257,8]]},"44":{"position":[[447,8],[743,6]]},"45":{"position":[[301,8],[526,6]]},"57":{"position":[[2164,8],[3114,8],[4028,8],[5794,8],[6349,8]]},"58":{"position":[[1824,8],[3604,8],[4088,8]]}},"keywords":{}}],["see",{"_index":573,"title":{},"content":{"26":{"position":[[208,3]]},"36":{"position":[[153,3]]}},"keywords":{}}],["seek",{"_index":985,"title":{},"content":{"57":{"position":[[4511,7]]}},"keywords":{}}],["seen",{"_index":1137,"title":{},"content":{"61":{"position":[[937,5]]}},"keywords":{}}],["segment",{"_index":1073,"title":{},"content":{"58":{"position":[[4713,9]]},"59":{"position":[[1041,9]]}},"keywords":{}}],["semant",{"_index":828,"title":{},"content":{"48":{"position":[[158,8],[586,8]]}},"keywords":{}}],["send",{"_index":258,"title":{},"content":{"12":{"position":[[129,7],[581,4]]},"13":{"position":[[175,7]]},"14":{"position":[[277,7]]},"29":{"position":[[10,4]]},"59":{"position":[[1980,4],[2325,5]]}},"keywords":{}}],["sens",{"_index":538,"title":{},"content":{"25":{"position":[[315,5]]},"48":{"position":[[1635,6]]}},"keywords":{}}],["sensit",{"_index":334,"title":{},"content":{"16":{"position":[[134,9]]},"57":{"position":[[3212,9]]}},"keywords":{}}],["sent",{"_index":814,"title":{},"content":{"47":{"position":[[66,4]]},"57":{"position":[[4884,4]]},"58":{"position":[[911,4],[1412,4],[2336,4],[2938,4]]}},"keywords":{}}],["separ",{"_index":278,"title":{},"content":{"12":{"position":[[590,8]]},"17":{"position":[[79,8],[346,8]]},"40":{"position":[[233,9]]},"41":{"position":[[366,9]]},"46":{"position":[[638,8]]}},"keywords":{}}],["seri",{"_index":1163,"title":{},"content":{"63":{"position":[[553,6]]}},"keywords":{}}],["serv",{"_index":764,"title":{},"content":{"44":{"position":[[203,6]]},"48":{"position":[[640,6]]},"59":{"position":[[20,6]]}},"keywords":{}}],["server",{"_index":148,"title":{"57":{"position":[[0,8]]}},"content":{"8":{"position":[[278,7],[511,7],[552,6]]},"9":{"position":[[1143,7]]},"11":{"position":[[167,6]]},"13":{"position":[[160,6]]},"16":{"position":[[511,6]]},"26":{"position":[[51,6],[321,6]]},"30":{"position":[[759,6],[786,6],[849,6],[927,6]]},"34":{"position":[[117,6]]},"41":{"position":[[40,7],[109,6],[206,7]]},"54":{"position":[[53,7],[87,6],[334,6]]},"55":{"position":[[71,7],[279,6]]},"57":{"position":[[4,7],[87,6],[130,6],[3460,7],[4244,6],[4530,6],[5685,7],[6181,7],[6465,6]]},"58":{"position":[[77,6],[1635,6],[4300,7]]},"59":{"position":[[447,6],[672,7],[1997,7],[2869,6]]}},"keywords":{}}],["server"",{"_index":1088,"title":{},"content":{"58":{"position":[[5493,13]]},"59":{"position":[[2743,13],[3153,13]]}},"keywords":{}}],["server'",{"_index":943,"title":{},"content":{"57":{"position":[[2302,8]]}},"keywords":{}}],["server(...[serverset",{"_index":902,"title":{},"content":{"57":{"position":[[199,32]]}},"keywords":{}}],["server(enablecachecontrolhead",{"_index":928,"title":{},"content":{"57":{"position":[[1284,33]]}},"keywords":{}}],["server(enableintrospect",{"_index":970,"title":{},"content":{"57":{"position":[[3752,28]]}},"keywords":{}}],["server(enablequeryvalid",{"_index":986,"title":{},"content":{"57":{"position":[[4624,30]]}},"keywords":{}}],["server(enableresponsevalid",{"_index":993,"title":{},"content":{"57":{"position":[[5349,33]]}},"keywords":{}}],["server(globalresponsetimeout",{"_index":1003,"title":{},"content":{"57":{"position":[[5911,30]]}},"keywords":{}}],["server(port",{"_index":912,"title":{},"content":{"57":{"position":[[631,13],[1843,13]]}},"keywords":{}}],["server(var",{"_index":947,"title":{},"content":{"57":{"position":[[2493,13]]}},"keywords":{}}],["serverset",{"_index":906,"title":{},"content":{"57":{"position":[[304,22],[449,14]]}},"keywords":{}}],["servic",{"_index":242,"title":{},"content":{"11":{"position":[[298,7],[355,7],[545,7],[646,9]]},"17":{"position":[[96,7]]},"21":{"position":[[69,7]]},"23":{"position":[[98,9],[123,8]]},"24":{"position":[[401,7]]},"30":{"position":[[989,7]]},"44":{"position":[[20,8],[364,7]]},"57":{"position":[[1208,9],[3142,8],[5189,9],[6394,7]]},"58":{"position":[[3438,8],[3558,9],[3954,9],[4066,9]]}},"keywords":{}}],["set",{"_index":534,"title":{},"content":{"25":{"position":[[217,4],[544,4]]},"38":{"position":[[249,9]]},"54":{"position":[[69,3],[341,9]]},"57":{"position":[[80,3],[414,8],[717,3],[1238,3],[1272,4],[2827,3],[3393,7],[3718,7],[4746,3],[5213,7],[5295,7],[5445,7],[6037,3],[6209,3]]},"58":{"position":[[110,8],[1603,7],[2035,3],[3819,3],[4524,3],[5241,9]]}},"keywords":{}}],["setup",{"_index":650,"title":{},"content":{"31":{"position":[[486,5]]},"57":{"position":[[1829,6]]}},"keywords":{}}],["sha",{"_index":821,"title":{},"content":{"48":{"position":[[4,3]]}},"keywords":{}}],["sha256",{"_index":805,"title":{},"content":{"46":{"position":[[1105,6]]}},"keywords":{}}],["shape",{"_index":774,"title":{},"content":{"44":{"position":[[643,5]]}},"keywords":{}}],["share",{"_index":864,"title":{},"content":{"50":{"position":[[161,6]]},"57":{"position":[[2428,6]]}},"keywords":{}}],["shift",{"_index":547,"title":{},"content":{"25":{"position":[[503,5]]}},"keywords":{}}],["show",{"_index":1157,"title":{},"content":{"62":{"position":[[443,4]]}},"keywords":{}}],["side",{"_index":288,"title":{},"content":{"13":{"position":[[30,4],[539,4]]},"14":{"position":[[75,5],[143,4]]},"15":{"position":[[53,4]]},"16":{"position":[[43,4],[518,4]]},"61":{"position":[[1122,4]]}},"keywords":{}}],["signific",{"_index":376,"title":{},"content":{"18":{"position":[[105,11]]},"19":{"position":[[500,11]]},"35":{"position":[[32,11],[830,11]]}},"keywords":{}}],["similar",{"_index":155,"title":{},"content":{"8":{"position":[[582,7]]},"34":{"position":[[53,7]]}},"keywords":{}}],["simpli",{"_index":52,"title":{},"content":{"3":{"position":[[61,6]]}},"keywords":{}}],["simplic",{"_index":1150,"title":{},"content":{"61":{"position":[[1823,11]]}},"keywords":{}}],["simplifi",{"_index":932,"title":{},"content":{"57":{"position":[[1537,10]]},"61":{"position":[[21,10],[1099,11]]}},"keywords":{}}],["singl",{"_index":180,"title":{},"content":{"9":{"position":[[313,6]]},"11":{"position":[[189,6]]},"12":{"position":[[1110,6]]},"35":{"position":[[337,6]]},"46":{"position":[[441,6]]},"59":{"position":[[3458,6],[3918,6]]}},"keywords":{}}],["sit",{"_index":6,"title":{},"content":{"0":{"position":[[18,3],[170,3]]},"2":{"position":[[144,3],[296,3],[323,3],[475,3],[502,3],[654,3],[681,3],[833,3],[860,3],[1012,3],[1039,3],[1191,3],[1218,3],[1370,3],[1397,3],[1549,3],[1576,3],[1728,3],[1755,3],[1907,3],[1934,3],[2086,3],[2113,3],[2265,3],[2292,3],[2444,3],[2471,3],[2623,3],[2650,3],[2802,3],[2829,3],[2981,3]]},"17":{"position":[[336,4]]}},"keywords":{}}],["situat",{"_index":622,"title":{},"content":{"30":{"position":[[900,9]]},"46":{"position":[[423,9]]},"57":{"position":[[4452,10]]}},"keywords":{}}],["size",{"_index":47,"title":{},"content":{"2":{"position":[[103,4]]},"14":{"position":[[367,4]]},"58":{"position":[[5282,4]]}},"keywords":{}}],["skill",{"_index":533,"title":{},"content":{"25":{"position":[[211,5],[538,5]]}},"keywords":{}}],["skip",{"_index":102,"title":{},"content":{"5":{"position":[[306,4]]}},"keywords":{}}],["slower",{"_index":330,"title":{},"content":{"15":{"position":[[245,6]]},"30":{"position":[[819,6]]}},"keywords":{}}],["small",{"_index":419,"title":{},"content":{"20":{"position":[[126,5]]}},"keywords":{}}],["social",{"_index":274,"title":{},"content":{"12":{"position":[[529,6]]}},"keywords":{}}],["softwar",{"_index":568,"title":{},"content":{"25":{"position":[[909,8]]}},"keywords":{}}],["solut",{"_index":307,"title":{},"content":{"13":{"position":[[435,8]]},"18":{"position":[[80,8],[194,8],[407,8]]},"19":{"position":[[103,8],[238,8],[314,8],[588,8]]},"25":{"position":[[462,9]]},"30":{"position":[[1145,9]]}},"keywords":{}}],["solv",{"_index":354,"title":{"34":{"position":[[0,7]]}},"content":{"17":{"position":[[24,5]]},"22":{"position":[[305,5]]},"46":{"position":[[756,6]]}},"keywords":{}}],["sourc",{"_index":840,"title":{},"content":{"48":{"position":[[990,6]]},"60":{"position":[[343,6],[590,7]]}},"keywords":{}}],["space",{"_index":749,"title":{},"content":{"40":{"position":[[248,6]]},"41":{"position":[[381,6]]}},"keywords":{}}],["spaghetti",{"_index":448,"title":{},"content":{"21":{"position":[[134,9]]}},"keywords":{}}],["spec",{"_index":737,"title":{},"content":{"38":{"position":[[42,5],[338,5]]},"40":{"position":[[65,5]]},"41":{"position":[[186,6]]},"44":{"position":[[103,4]]},"45":{"position":[[30,6]]},"48":{"position":[[1139,4]]}},"keywords":{}}],["special",{"_index":375,"title":{"18":{"position":[[10,12]]}},"content":{"18":{"position":[[68,11]]}},"keywords":{}}],["specif",{"_index":104,"title":{"45":{"position":[[12,13]]}},"content":{"5":{"position":[[340,8]]},"17":{"position":[[131,8]]},"18":{"position":[[299,8]]},"30":{"position":[[74,8]]},"41":{"position":[[80,8]]},"45":{"position":[[16,13],[175,10]]},"46":{"position":[[21,13],[60,13],[231,13],[1138,13]]},"48":{"position":[[37,13],[111,14],[182,13],[911,13],[1241,13],[1447,13]]},"53":{"position":[[655,8]]},"57":{"position":[[332,8],[1658,8],[5864,8]]},"58":{"position":[[4699,8]]},"59":{"position":[[1131,8]]},"63":{"position":[[690,12],[1510,8],[1894,8]]}},"keywords":{}}],["specifi",{"_index":185,"title":{},"content":{"9":{"position":[[425,7],[573,7],[1189,7]]},"40":{"position":[[209,7]]},"41":{"position":[[342,7]]},"55":{"position":[[332,9]]},"57":{"position":[[587,10],[4222,9],[4606,10],[5272,10]]},"58":{"position":[[184,10],[1737,10],[3367,9],[3493,10],[4264,7],[5221,9]]},"59":{"position":[[351,7],[612,10],[655,9],[1395,10],[2560,10]]},"61":{"position":[[1349,7],[1471,7]]},"63":{"position":[[1126,9]]}},"keywords":{}}],["specification'",{"_index":838,"title":{},"content":{"48":{"position":[[570,15]]}},"keywords":{}}],["specul",{"_index":417,"title":{"20":{"position":[[3,11]]}},"content":{},"keywords":{}}],["ssl",{"_index":122,"title":{},"content":{"7":{"position":[[73,3]]}},"keywords":{}}],["stabil",{"_index":846,"title":{},"content":{"48":{"position":[[1301,10],[1581,9]]}},"keywords":{}}],["stabl",{"_index":834,"title":{},"content":{"48":{"position":[[348,6]]}},"keywords":{}}],["stage",{"_index":642,"title":{},"content":{"31":{"position":[[278,6]]},"57":{"position":[[3899,7]]}},"keywords":{}}],["standard",{"_index":211,"title":{},"content":{"9":{"position":[[1090,8]]},"18":{"position":[[181,8],[358,15]]},"24":{"position":[[494,8]]},"45":{"position":[[488,10]]},"46":{"position":[[893,8]]},"57":{"position":[[832,8]]}},"keywords":{}}],["start",{"_index":142,"title":{"41":{"position":[[0,6]]}},"content":{"8":{"position":[[76,9],[532,6]]},"26":{"position":[[41,5],[140,5],[328,6]]},"41":{"position":[[4,5],[196,5],[244,5],[301,5],[419,5]]},"54":{"position":[[94,7]]}},"keywords":{}}],["state",{"_index":790,"title":{},"content":{"46":{"position":[[205,6]]},"61":{"position":[[477,6]]}},"keywords":{}}],["statement",{"_index":225,"title":{"10":{"position":[[8,9]]}},"content":{},"keywords":{}}],["static",{"_index":1101,"title":{},"content":{"59":{"position":[[1642,6],[2026,6]]}},"keywords":{}}],["steer",{"_index":918,"title":{},"content":{"57":{"position":[[848,8]]}},"keywords":{}}],["step",{"_index":117,"title":{},"content":{"7":{"position":[[11,5]]},"8":{"position":[[56,5]]},"19":{"position":[[213,5],[547,5]]},"46":{"position":[[136,6],[1244,4]]}},"keywords":{}}],["store",{"_index":863,"title":{},"content":{"50":{"position":[[122,5]]},"57":{"position":[[2379,5],[3234,6]]}},"keywords":{}}],["strain",{"_index":1000,"title":{},"content":{"57":{"position":[[5769,6]]}},"keywords":{}}],["streamlin",{"_index":1125,"title":{},"content":{"61":{"position":[[214,12],[1740,10]]}},"keywords":{}}],["street",{"_index":1127,"title":{},"content":{"61":{"position":[[447,7],[1083,7]]}},"keywords":{}}],["stress",{"_index":617,"title":{},"content":{"30":{"position":[[776,9]]}},"keywords":{}}],["string",{"_index":201,"title":{},"content":{"9":{"position":[[753,7],[771,7],[786,7],[1046,7],[1060,7]]},"12":{"position":[[767,7],[781,7],[1013,7],[1028,7],[1268,7],[1282,7]]},"32":{"position":[[236,7],[254,7],[269,7],[284,6],[300,6],[350,7],[364,7]]},"34":{"position":[[372,7],[386,7]]},"52":{"position":[[88,7],[102,7]]},"53":{"position":[[147,7],[161,7]]},"59":{"position":[[3083,8],[3545,7]]},"61":{"position":[[389,7],[404,7],[455,7],[469,7],[484,7],[924,6],[1051,6]]},"62":{"position":[[200,6]]},"63":{"position":[[373,6],[975,7],[1353,6],[1384,6]]}},"keywords":{}}],["string>",{"_index":870,"title":{},"content":{"50":{"position":[[356,10],[391,10]]}},"keywords":{}}],["structur",{"_index":767,"title":{},"content":{"44":{"position":[[274,11]]},"48":{"position":[[229,10]]},"57":{"position":[[285,10],[4147,11]]},"61":{"position":[[37,10]]}},"keywords":{}}],["subject",{"_index":509,"title":{},"content":{"24":{"position":[[425,10]]}},"keywords":{}}],["subsequ",{"_index":631,"title":{},"content":{"30":{"position":[[1190,10]]}},"keywords":{}}],["substanti",{"_index":681,"title":{},"content":{"34":{"position":[[80,13]]}},"keywords":{}}],["substitut",{"_index":1093,"title":{},"content":{"59":{"position":[[1085,10],[2070,10]]}},"keywords":{}}],["succe",{"_index":572,"title":{},"content":{"26":{"position":[[187,9]]}},"keywords":{}}],["such",{"_index":26,"title":{},"content":{"1":{"position":[[49,4]]},"3":{"position":[[225,4]]},"9":{"position":[[1135,4]]},"11":{"position":[[416,4]]},"16":{"position":[[157,4]]},"17":{"position":[[561,4]]},"20":{"position":[[152,4]]},"22":{"position":[[163,4]]},"24":{"position":[[90,4]]},"35":{"position":[[349,4]]},"38":{"position":[[259,4]]},"45":{"position":[[219,4]]},"46":{"position":[[783,4]]},"57":{"position":[[1602,4],[4564,4]]},"59":{"position":[[3930,4]]}},"keywords":{}}],["suffer",{"_index":661,"title":{},"content":{"32":{"position":[[573,7]]}},"keywords":{}}],["suggest",{"_index":542,"title":{},"content":{"25":{"position":[[394,7]]}},"keywords":{}}],["suitabl",{"_index":1175,"title":{},"content":{"63":{"position":[[1877,8]]}},"keywords":{}}],["summari",{"_index":41,"title":{},"content":{"2":{"position":[[12,7]]}},"keywords":{}}],["support",{"_index":22,"title":{"22":{"position":[[10,7]]}},"content":{"1":{"position":[[11,7]]},"3":{"position":[[360,8]]},"22":{"position":[[442,7],[579,8]]},"61":{"position":[[1314,8]]}},"keywords":{}}],["sure",{"_index":488,"title":{},"content":{"23":{"position":[[177,4]]},"47":{"position":[[49,4]]},"57":{"position":[[4867,4]]},"62":{"position":[[300,4]]}},"keywords":{}}],["suscept",{"_index":391,"title":{},"content":{"19":{"position":[[71,11]]}},"keywords":{}}],["syntax",{"_index":832,"title":{},"content":{"48":{"position":[[312,7],[403,7]]}},"keywords":{}}],["system",{"_index":121,"title":{},"content":{"7":{"position":[[59,7]]},"8":{"position":[[121,7]]},"17":{"position":[[658,7]]},"22":{"position":[[269,6]]},"35":{"position":[[494,6],[622,6]]},"44":{"position":[[535,6]]},"45":{"position":[[533,7]]},"48":{"position":[[778,6]]},"57":{"position":[[5857,6]]}},"keywords":{}}],["tab",{"_index":584,"title":{},"content":{"26":{"position":[[485,3]]}},"keywords":{}}],["tackl",{"_index":588,"title":{"27":{"position":[[0,8]]}},"content":{},"keywords":{}}],["tag",{"_index":73,"title":{},"content":{"3":{"position":[[369,4]]}},"keywords":{}}],["tailcal",{"_index":87,"title":{"33":{"position":[[12,8]]},"50":{"position":[[11,9]]}},"content":{"5":{"position":[[88,8],[189,8]]},"6":{"position":[[90,8],[215,8],[236,8],[366,8]]},"7":{"position":[[201,8],[270,11]]},"8":{"position":[[23,8],[184,8],[333,8],[389,8],[543,8]]},"25":{"position":[[639,9]]},"26":{"position":[[246,8]]},"31":{"position":[[4,8],[376,8]]},"32":{"position":[[740,8]]},"33":{"position":[[24,8],[206,8]]},"34":{"position":[[135,8]]},"35":{"position":[[188,8]]},"41":{"position":[[31,8]]},"42":{"position":[[34,8]]},"44":{"position":[[166,8]]},"46":{"position":[[81,8]]},"50":{"position":[[3,9]]},"55":{"position":[[62,8]]},"57":{"position":[[160,8],[554,8],[750,8],[1031,8],[1181,8],[1463,9],[1795,9],[2931,8],[3320,8],[5027,8]]},"58":{"position":[[4890,8]]},"59":{"position":[[2891,9],[3769,8]]}},"keywords":{}}],["tailcall/bin",{"_index":137,"title":{},"content":{"7":{"position":[[383,15]]}},"keywords":{}}],["tailcallhq/tailcal",{"_index":93,"title":{},"content":{"5":{"position":[[157,19]]},"6":{"position":[[182,19]]}},"keywords":{}}],["tailcallrc.graphql",{"_index":759,"title":{},"content":{"42":{"position":[[232,19]]}},"keywords":{}}],["tailor",{"_index":385,"title":{},"content":{"18":{"position":[[283,8]]},"57":{"position":[[356,8]]}},"keywords":{}}],["take",{"_index":328,"title":{},"content":{"15":{"position":[[214,4]]},"17":{"position":[[730,4]]},"57":{"position":[[6108,6]]},"61":{"position":[[1169,4]]},"63":{"position":[[1450,4]]}},"keywords":{}}],["taken",{"_index":397,"title":{},"content":{"19":{"position":[[227,6]]}},"keywords":{}}],["tap",{"_index":109,"title":{},"content":{"6":{"position":[[178,3]]},"34":{"position":[[233,3]]}},"keywords":{}}],["target",{"_index":1046,"title":{},"content":{"58":{"position":[[2304,9]]},"63":{"position":[[703,9]]}},"keywords":{}}],["task",{"_index":243,"title":{},"content":{"11":{"position":[[410,5]]}},"keywords":{}}],["tc",{"_index":96,"title":{},"content":{"5":{"position":[[233,2]]},"6":{"position":[[280,2]]},"8":{"position":[[766,2]]},"26":{"position":[[137,2]]},"33":{"position":[[107,2],[349,2]]},"38":{"position":[[149,2]]},"39":{"position":[[76,2]]},"40":{"position":[[99,2],[283,2]]},"41":{"position":[[241,2],[416,2]]},"42":{"position":[[125,2]]}},"keywords":{}}],["tcp",{"_index":1053,"title":{},"content":{"58":{"position":[[2915,3]]}},"keywords":{}}],["tcpkeepal",{"_index":1052,"title":{},"content":{"58":{"position":[[2868,13]]}},"keywords":{}}],["team",{"_index":541,"title":{},"content":{"25":{"position":[[357,6],[441,5],[564,5]]}},"keywords":{}}],["technic",{"_index":560,"title":{},"content":{"25":{"position":[[792,9]]}},"keywords":{}}],["techniqu",{"_index":679,"title":{},"content":{"34":{"position":[[25,9]]},"46":{"position":[[772,10]]}},"keywords":{}}],["tell",{"_index":668,"title":{},"content":{"33":{"position":[[187,5]]},"60":{"position":[[509,5],[915,5]]}},"keywords":{}}],["templat",{"_index":904,"title":{},"content":{"57":{"position":[[275,9]]},"59":{"position":[[1072,9],[1672,8],[2058,8],[2930,9]]}},"keywords":{}}],["tempor",{"_index":17,"title":{},"content":{"0":{"position":[[121,6]]},"2":{"position":[[247,6],[426,6],[605,6],[784,6],[963,6],[1142,6],[1321,6],[1500,6],[1679,6],[1858,6],[2037,6],[2216,6],[2395,6],[2574,6],[2753,6],[2932,6]]},"36":{"position":[[629,7]]}},"keywords":{}}],["termin",{"_index":91,"title":{},"content":{"5":{"position":[[138,9]]},"6":{"position":[[163,9]]},"57":{"position":[[5667,10],[6163,10]]}},"keywords":{}}],["test",{"_index":403,"title":{"36":{"position":[[0,4]]}},"content":{"19":{"position":[[342,7],[372,8],[386,8],[411,8]]},"20":{"position":[[376,7]]},"36":{"position":[[0,4]]},"57":{"position":[[1570,8]]}},"keywords":{}}],["text",{"_index":831,"title":{},"content":{"48":{"position":[[304,4]]}},"keywords":{}}],["textual",{"_index":825,"title":{},"content":{"48":{"position":[[81,7]]}},"keywords":{}}],["that'",{"_index":449,"title":{},"content":{"21":{"position":[[149,6]]},"24":{"position":[[593,6]]}},"keywords":{}}],["that’",{"_index":815,"title":{},"content":{"47":{"position":[[119,6]]}},"keywords":{}}],["therebi",{"_index":705,"title":{},"content":{"35":{"position":[[892,7]]},"61":{"position":[[1091,7]]}},"keywords":{}}],["therefor",{"_index":346,"title":{},"content":{"16":{"position":[[432,9]]},"30":{"position":[[1011,10]]},"48":{"position":[[508,10]]}},"keywords":{}}],["thereof",{"_index":464,"title":{"22":{"position":[[24,9]]}},"content":{},"keywords":{}}],["thing",{"_index":522,"title":{},"content":{"24":{"position":[[796,6]]}},"keywords":{}}],["think",{"_index":888,"title":{},"content":{"53":{"position":[[563,5]]}},"keywords":{}}],["thorough",{"_index":431,"title":{},"content":{"20":{"position":[[345,8]]}},"keywords":{}}],["thoroughli",{"_index":402,"title":{},"content":{"19":{"position":[[331,10]]}},"keywords":{}}],["those",{"_index":580,"title":{},"content":{"26":{"position":[[417,5]]}},"keywords":{}}],["thousand",{"_index":613,"title":{},"content":{"30":{"position":[[639,9],[735,9]]}},"keywords":{}}],["three",{"_index":762,"title":{},"content":{"44":{"position":[[65,5]]}},"keywords":{}}],["throttl",{"_index":500,"title":{},"content":{"24":{"position":[[129,11]]},"45":{"position":[[227,10]]}},"keywords":{}}],["through",{"_index":233,"title":{},"content":{"11":{"position":[[123,7]]},"31":{"position":[[474,7]]},"58":{"position":[[1642,7],[2190,7]]}},"keywords":{}}],["thu",{"_index":787,"title":{},"content":{"45":{"position":[[499,4]]},"58":{"position":[[4568,5]]},"60":{"position":[[985,4]]}},"keywords":{}}],["tidi",{"_index":1146,"title":{},"content":{"61":{"position":[[1716,4]]}},"keywords":{}}],["time",{"_index":329,"title":{},"content":{"15":{"position":[[224,4]]},"20":{"position":[[439,4]]},"30":{"position":[[835,6]]},"48":{"position":[[937,4]]},"58":{"position":[[394,4],[863,4],[1101,4],[2448,4],[2516,6],[2681,4],[2886,4]]},"62":{"position":[[287,4]]}},"keywords":{}}],["timelin",{"_index":271,"title":{},"content":{"12":{"position":[[464,8]]}},"keywords":{}}],["timeout",{"_index":1008,"title":{},"content":{"57":{"position":[[6237,8]]},"58":{"position":[[135,9],[2660,8]]}},"keywords":{}}],["tini",{"_index":458,"title":{},"content":{"21":{"position":[[277,4]]}},"keywords":{}}],["tip",{"_index":27,"title":{},"content":{"1":{"position":[[62,3]]},"57":{"position":[[804,3],[1939,3],[3057,3],[3825,3],[4813,3],[5426,3],[6189,3]]},"58":{"position":[[4651,3]]}},"keywords":{}}],["titl",{"_index":208,"title":{},"content":{"9":{"position":[[1039,6]]},"12":{"position":[[760,6],[1261,6]]},"32":{"position":[[343,6]]},"34":{"position":[[365,6]]},"36":{"position":[[65,5],[130,5]]},"47":{"position":[[270,5]]},"52":{"position":[[81,6]]},"53":{"position":[[140,6]]}},"keywords":{}}],["togeth",{"_index":279,"title":{},"content":{"12":{"position":[[648,8]]},"36":{"position":[[737,9]]}},"keywords":{}}],["tool",{"_index":372,"title":{},"content":{"17":{"position":[[962,4]]},"31":{"position":[[29,4]]},"57":{"position":[[1986,4],[3612,5]]}},"keywords":{}}],["total",{"_index":603,"title":{},"content":{"30":{"position":[[297,5],[586,5]]}},"keywords":{}}],["touch",{"_index":445,"title":{},"content":{"21":{"position":[[54,8]]}},"keywords":{}}],["toward",{"_index":917,"title":{},"content":{"57":{"position":[[820,7]]}},"keywords":{}}],["transfer",{"_index":543,"title":{},"content":{"25":{"position":[[402,12]]}},"keywords":{}}],["transform",{"_index":1124,"title":{},"content":{"61":{"position":[[178,14]]},"63":{"position":[[167,15],[1295,14]]}},"keywords":{}}],["transmit",{"_index":924,"title":{},"content":{"57":{"position":[[1043,8]]}},"keywords":{}}],["travers",{"_index":1136,"title":{},"content":{"61":{"position":[[776,9]]}},"keywords":{}}],["tri",{"_index":586,"title":{},"content":{"26":{"position":[[509,3]]},"36":{"position":[[11,3]]}},"keywords":{}}],["trigger",{"_index":662,"title":{},"content":{"32":{"position":[[618,7]]},"33":{"position":[[512,7],[702,10]]},"39":{"position":[[10,8]]}},"keywords":{}}],["true",{"_index":929,"title":{},"content":{"57":{"position":[[1318,5],[3737,7],[4594,4],[5383,5]]},"60":{"position":[[886,5],[909,5]]}},"keywords":{}}],["truncat",{"_index":44,"title":{},"content":{"2":{"position":[[60,8]]}},"keywords":{}}],["tune",{"_index":901,"title":{},"content":{"57":{"position":[[155,4]]}},"keywords":{}}],["turn",{"_index":443,"title":{},"content":{"21":{"position":[[23,5]]},"57":{"position":[[3970,7]]}},"keywords":{}}],["tweak",{"_index":692,"title":{},"content":{"35":{"position":[[44,6]]}},"keywords":{}}],["two",{"_index":277,"title":{},"content":{"12":{"position":[[586,3],[611,3],[1089,3]]},"63":{"position":[[221,3]]}},"keywords":{}}],["type",{"_index":193,"title":{},"content":{"9":{"position":[[558,4],[679,4],[726,4],[812,4],[971,4],[1018,4]]},"11":{"position":[[219,4]]},"12":{"position":[[740,4],[987,4],[1241,4]]},"32":{"position":[[148,4],[209,4],[309,4]]},"34":{"position":[[331,4]]},"39":{"position":[[48,5]]},"40":{"position":[[71,5]]},"51":{"position":[[121,4]]},"52":{"position":[[61,4],[261,5]]},"53":{"position":[[45,4],[106,4],[457,5],[556,6]]},"54":{"position":[[102,4]]},"55":{"position":[[79,4]]},"57":{"position":[[2608,4],[3660,6]]},"59":{"position":[[111,4],[255,5],[690,4],[935,4],[1193,4],[1446,4],[1761,4],[2132,4],[2635,4],[3055,4],[3518,4]]},"60":{"position":[[417,4],[851,4]]},"61":{"position":[[327,4],[362,4],[432,4],[494,4],[704,5],[886,4],[971,5],[1269,4],[1411,4],[1543,4]]},"62":{"position":[[108,4],[182,4],[393,4]]},"63":{"position":[[230,5],[262,4],[304,4],[347,4],[382,4],[1327,4],[1362,4]]}},"keywords":{}}],["typescript",{"_index":865,"title":{},"content":{"50":{"position":[[236,10]]}},"keywords":{}}],["typic",{"_index":228,"title":{},"content":{"11":{"position":[[15,7]]},"17":{"position":[[326,9]]},"20":{"position":[[23,9],[317,9]]},"28":{"position":[[220,9]]},"34":{"position":[[188,7]]},"57":{"position":[[866,7]]}},"keywords":{}}],["ultrici",{"_index":14,"title":{},"content":{"0":{"position":[[90,10]]},"2":{"position":[[216,10],[395,10],[574,10],[753,10],[932,10],[1111,10],[1290,10],[1469,10],[1648,10],[1827,10],[2006,10],[2185,10],[2364,10],[2543,10],[2722,10],[2901,10]]}},"keywords":{}}],["uncov",{"_index":674,"title":{},"content":{"33":{"position":[[476,8]]}},"keywords":{}}],["undeni",{"_index":529,"title":{},"content":{"25":{"position":[[95,10]]}},"keywords":{}}],["under",{"_index":297,"title":{},"content":{"13":{"position":[[228,5]]}},"keywords":{}}],["underli",{"_index":261,"title":{},"content":{"12":{"position":[[245,10]]},"17":{"position":[[1053,10]]},"48":{"position":[[211,10]]},"60":{"position":[[327,10],[574,10]]}},"keywords":{}}],["underpin",{"_index":1089,"title":{},"content":{"59":{"position":[[71,11],[295,11]]}},"keywords":{}}],["understand",{"_index":651,"title":{"35":{"position":[[0,13]]}},"content":{"31":{"position":[[513,10]]},"33":{"position":[[270,13]]},"57":{"position":[[3645,10]]},"63":{"position":[[1856,11]]}},"keywords":{}}],["unifi",{"_index":810,"title":{},"content":{"46":{"position":[[1279,7]]},"57":{"position":[[3166,7]]}},"keywords":{}}],["unintention",{"_index":962,"title":{},"content":{"57":{"position":[[3284,16]]}},"keywords":{}}],["uniqu",{"_index":562,"title":{},"content":{"25":{"position":[[829,8]]},"35":{"position":[[584,6]]},"46":{"position":[[1098,6]]},"48":{"position":[[695,6]]}},"keywords":{}}],["unit",{"_index":404,"title":{},"content":{"19":{"position":[[381,4]]}},"keywords":{}}],["unknown",{"_index":469,"title":{},"content":{"22":{"position":[[280,8]]}},"keywords":{}}],["unless",{"_index":837,"title":{},"content":{"48":{"position":[[538,6]]}},"keywords":{}}],["unlik",{"_index":380,"title":{},"content":{"18":{"position":[[146,6]]}},"keywords":{}}],["unnecessari",{"_index":424,"title":{},"content":{"20":{"position":[[209,11]]},"57":{"position":[[2185,11]]},"58":{"position":[[5042,11]]}},"keywords":{}}],["unnot",{"_index":426,"title":{},"content":{"20":{"position":[[248,9]]}},"keywords":{}}],["unoccupi",{"_index":921,"title":{},"content":{"57":{"position":[[923,11]]}},"keywords":{}}],["unoptim",{"_index":421,"title":{},"content":{"20":{"position":[[160,11]]}},"keywords":{}}],["unreli",{"_index":308,"title":{},"content":{"13":{"position":[[444,10]]}},"keywords":{}}],["unspecifi",{"_index":1081,"title":{},"content":{"58":{"position":[[5076,12]]}},"keywords":{}}],["unstandardis",{"_index":290,"title":{},"content":{"13":{"position":[[43,15]]}},"keywords":{}}],["up",{"_index":293,"title":{},"content":{"13":{"position":[[172,2],[264,2]]},"24":{"position":[[21,2],[469,2]]},"61":{"position":[[1721,2]]}},"keywords":{}}],["updat",{"_index":115,"title":{"35":{"position":[[18,7]]}},"content":{"6":{"position":[[346,6]]}},"keywords":{}}],["upgrad",{"_index":112,"title":{},"content":{"6":{"position":[[310,8],[358,7]]},"21":{"position":[[222,9]]}},"keywords":{}}],["upon",{"_index":130,"title":{},"content":{"7":{"position":[[293,4]]},"44":{"position":[[483,4]]}},"keywords":{}}],["upstream",{"_index":927,"title":{"58":{"position":[[0,10]]}},"content":{"57":{"position":[[1199,8],[5180,8]]},"58":{"position":[[4,8],[68,8],[1660,8],[3429,8],[3549,8],[3945,8],[4214,9]]}},"keywords":{}}],["upstream(...[upstreamset",{"_index":1017,"title":{},"content":{"58":{"position":[[227,35]]}},"keywords":{}}],["upstream(allowedhead",{"_index":1063,"title":{},"content":{"58":{"position":[[3660,25]]}},"keywords":{}}],["upstream(baseurl",{"_index":190,"title":{},"content":{"9":{"position":[[473,18]]},"32":{"position":[[63,18]]},"58":{"position":[[4380,18],[4729,18],[4789,18]]}},"keywords":{}}],["upstream(batch",{"_index":1085,"title":{},"content":{"58":{"position":[[5431,16]]}},"keywords":{}}],["upstream(connecttimeout",{"_index":1050,"title":{},"content":{"58":{"position":[[2535,25]]}},"keywords":{}}],["upstream(enablehttpcach",{"_index":1082,"title":{},"content":{"58":{"position":[[5128,26]]}},"keywords":{}}],["upstream(keepaliveinterv",{"_index":1032,"title":{},"content":{"58":{"position":[[951,28]]}},"keywords":{}}],["upstream(keepalivetimeout",{"_index":1034,"title":{},"content":{"58":{"position":[[1195,27]]}},"keywords":{}}],["upstream(keepalivewhileidl",{"_index":1037,"title":{},"content":{"58":{"position":[[1454,29]]}},"keywords":{}}],["upstream(poolidletimeout",{"_index":1024,"title":{},"content":{"58":{"position":[[485,26]]}},"keywords":{}}],["upstream(poolmaxidleperhost",{"_index":1029,"title":{},"content":{"58":{"position":[[711,29]]}},"keywords":{}}],["upstream(proxi",{"_index":1041,"title":{},"content":{"58":{"position":[[1850,16]]}},"keywords":{}}],["upstream(tcpkeepal",{"_index":1054,"title":{},"content":{"58":{"position":[[2978,23]]}},"keywords":{}}],["upstream(timeout",{"_index":1051,"title":{},"content":{"58":{"position":[[2750,18]]}},"keywords":{}}],["upstream(userag",{"_index":1057,"title":{},"content":{"58":{"position":[[3176,20]]}},"keywords":{}}],["upstreamset",{"_index":1018,"title":{},"content":{"58":{"position":[[310,15]]}},"keywords":{}}],["url",{"_index":187,"title":{},"content":{"9":{"position":[[440,3]]},"26":{"position":[[472,3]]},"35":{"position":[[229,3],[344,4]]},"57":{"position":[[1667,3]]},"58":{"position":[[1756,4],[1867,5],[2051,3],[4155,3],[4620,3],[4677,3]]},"59":{"position":[[589,3],[640,3],[1743,4],[3810,3],[3925,4]]}},"keywords":{}}],["us",{"_index":28,"title":{"31":{"position":[[0,5]]},"34":{"position":[[8,5]]}},"content":{"1":{"position":[[66,3]]},"2":{"position":[[46,3]]},"3":{"position":[[445,3]]},"5":{"position":[[247,5]]},"8":{"position":[[206,5]]},"9":{"position":[[190,3],[840,3]]},"11":{"position":[[484,6]]},"17":{"position":[[516,5],[955,6]]},"18":{"position":[[27,5]]},"19":{"position":[[23,5]]},"20":{"position":[[57,3]]},"22":{"position":[[330,3]]},"24":{"position":[[256,3],[778,4]]},"30":{"position":[[350,5]]},"32":{"position":[[730,5]]},"33":{"position":[[309,3]]},"35":{"position":[[557,5],[687,5]]},"38":{"position":[[106,3]]},"41":{"position":[[214,3]]},"44":{"position":[[618,4]]},"46":{"position":[[766,5]]},"48":{"position":[[1025,5]]},"50":{"position":[[114,4],[216,5]]},"51":{"position":[[65,4],[229,4]]},"52":{"position":[[221,4]]},"55":{"position":[[290,3]]},"57":{"position":[[181,3],[1780,3],[5126,4]]},"58":{"position":[[214,5],[3146,4]]},"59":{"position":[[343,4],[1059,3],[1338,4],[1659,3],[1941,4],[2043,3],[2552,4],[2914,3]]},"60":{"position":[[149,3],[230,5],[712,5],[773,6]]},"63":{"position":[[546,4],[649,4],[836,4],[1042,4],[1417,4],[1613,5]]}},"keywords":{}}],["usag",{"_index":644,"title":{},"content":{"31":{"position":[[308,6]]}},"keywords":{}}],["user",{"_index":177,"title":{"30":{"position":[[9,6]]}},"content":{"9":{"position":[[205,6],[229,6],[283,5],[603,5],[615,6],[622,6],[674,4],[716,5],[731,4],[807,4]]},"12":{"position":[[519,4],[816,4],[907,6],[992,4],[1290,5],[1296,5],[1330,4]]},"13":{"position":[[560,4]]},"14":{"position":[[16,4]]},"17":{"position":[[701,4]]},"19":{"position":[[778,4]]},"22":{"position":[[215,5]]},"25":{"position":[[67,4]]},"30":{"position":[[83,4],[662,6],[700,4],[878,4]]},"32":{"position":[[214,4],[372,5],[378,4],[528,4],[672,4]]},"33":{"position":[[451,4],[571,4],[759,4]]},"34":{"position":[[394,5],[400,4]]},"35":{"position":[[243,4],[651,4],[944,4]]},"36":{"position":[[51,5],[92,5],[106,5]]},"47":{"position":[[281,4]]},"51":{"position":[[149,4],[274,4]]},"53":{"position":[[169,5],[175,4]]},"54":{"position":[[115,6],[122,7]]},"55":{"position":[[342,5]]},"57":{"position":[[2126,6]]},"58":{"position":[[3116,4]]},"59":{"position":[[139,4],[231,4],[281,4],[411,7],[533,4],[718,4],[963,4],[1140,5],[1221,4],[1493,4],[2179,4],[2349,7],[2682,4],[2821,6],[3092,4],[3287,4],[3553,5],[3559,4],[3824,4]]},"60":{"position":[[422,4],[856,4]]},"61":{"position":[[348,5],[354,5],[367,4],[953,5],[1399,5],[1416,7],[1457,5],[1566,4]]},"62":{"position":[[121,5],[127,4],[187,4]]},"63":{"position":[[238,4],[257,4],[330,4],[352,4],[394,5],[400,4],[587,4],[677,4],[902,4],[923,4],[1109,4],[1332,4],[1477,4]]}},"keywords":{}}],["user'",{"_index":205,"title":{},"content":{"9":{"position":[[856,6]]},"12":{"position":[[930,6]]},"35":{"position":[[567,6]]}},"keywords":{}}],["user(id",{"_index":874,"title":{},"content":{"51":{"position":[[134,8]]},"59":{"position":[[124,8],[703,8],[948,8],[1206,8]]}},"keywords":{}}],["user.nam",{"_index":1166,"title":{},"content":{"63":{"position":[[764,9]]}},"keywords":{}}],["userag",{"_index":1055,"title":{},"content":{"58":{"position":[[3101,10]]}},"keywords":{}}],["userid",{"_index":282,"title":{},"content":{"12":{"position":[[789,7],[852,6]]},"29":{"position":[[178,6]]},"32":{"position":[[330,7]]},"34":{"position":[[352,7]]},"35":{"position":[[267,6]]},"53":{"position":[[127,7],[390,6],[523,6],[638,6]]},"55":{"position":[[229,6],[299,6]]},"59":{"position":[[3848,6]]},"60":{"position":[[624,6]]},"63":{"position":[[339,7],[518,7],[1174,10],[1241,6],[1391,7]]}},"keywords":{}}],["userinput",{"_index":1098,"title":{},"content":{"59":{"position":[[1480,12],[2166,12],[2669,12]]}},"keywords":{}}],["usernam",{"_index":202,"title":{},"content":{"9":{"position":[[761,9]]},"32":{"position":[[244,9]]},"63":{"position":[[875,9],[950,8],[1374,9],[1553,11]]}},"keywords":{}}],["userposts(id",{"_index":1102,"title":{},"content":{"59":{"position":[[1774,13]]}},"keywords":{}}],["users(nam",{"_index":1107,"title":{},"content":{"59":{"position":[[3071,11]]}},"keywords":{}}],["users/:id/post",{"_index":178,"title":{},"content":{"9":{"position":[[240,16]]}},"keywords":{}}],["users/{{args.id",{"_index":1094,"title":{},"content":{"59":{"position":[[1173,19]]}},"keywords":{}}],["users/{{userid",{"_index":1169,"title":{},"content":{"63":{"position":[[1148,19]]}},"keywords":{}}],["users?id=1&id=2&id=3...id=10",{"_index":698,"title":{},"content":{"35":{"position":[[357,38]]},"59":{"position":[[3938,38]]}},"keywords":{}}],["util",{"_index":1009,"title":{},"content":{"57":{"position":[[6318,11]]},"58":{"position":[[4902,7]]}},"keywords":{}}],["valid",{"_index":736,"title":{},"content":{"38":{"position":[[18,9]]},"45":{"position":[[127,5]]},"46":{"position":[[158,11]]},"57":{"position":[[4258,8],[4320,10],[4774,10],[4905,10],[5134,8]]},"62":{"position":[[248,8]]}},"keywords":{}}],["valu",{"_index":688,"title":{"52":{"position":[[0,6]]}},"content":{"34":{"position":[[467,6]]},"35":{"position":[[143,6],[656,5]]},"50":{"position":[[308,6]]},"52":{"position":[[20,5]]},"53":{"position":[[242,6],[572,5]]},"57":{"position":[[1104,5],[1145,6],[2533,6],[2727,6],[2850,5],[5884,5]]},"58":{"position":[[203,6],[1352,5],[3134,5]]},"59":{"position":[[1867,6],[2577,5],[2613,7],[2757,6],[2885,5],[2959,6],[3167,6],[3226,6],[3306,5],[3626,6],[3724,6]]},"62":{"position":[[270,5],[369,5]]}},"keywords":{}}],["value.id",{"_index":879,"title":{},"content":{"52":{"position":[[209,8]]}},"keywords":{}}],["value.userid",{"_index":884,"title":{},"content":{"53":{"position":[[357,12]]}},"keywords":{}}],["var",{"_index":940,"title":{},"content":{"57":{"position":[[2207,5]]}},"keywords":{}}],["variabl",{"_index":135,"title":{},"content":{"7":{"position":[[359,8]]},"50":{"position":[[61,8]]},"54":{"position":[[35,9],[272,8]]},"57":{"position":[[2259,9],[2329,9],[2802,8],[3067,10]]},"59":{"position":[[1096,10],[2081,9],[2108,10]]}},"keywords":{}}],["variou",{"_index":743,"title":{},"content":{"38":{"position":[[210,7]]},"41":{"position":[[128,7]]},"57":{"position":[[173,7],[441,7],[2452,7]]},"58":{"position":[[45,7],[302,7]]}},"keywords":{}}],["vars.apikey}}"",{"_index":955,"title":{},"content":{"57":{"position":[[2747,24]]}},"keywords":{}}],["vastli",{"_index":265,"title":{},"content":{"12":{"position":[[335,6]]}},"keywords":{}}],["veri",{"_index":42,"title":{},"content":{"2":{"position":[[25,4]]},"20":{"position":[[281,4],[429,4]]},"22":{"position":[[475,4]]},"23":{"position":[[462,4]]},"24":{"position":[[239,4]]}},"keywords":{}}],["verifi",{"_index":94,"title":{},"content":{"5":{"position":[[177,6]]},"6":{"position":[[224,6]]},"8":{"position":[[721,6]]}},"keywords":{}}],["vero",{"_index":727,"title":{},"content":{"36":{"position":[[553,4]]}},"keywords":{}}],["version",{"_index":149,"title":{},"content":{"8":{"position":[[318,7],[739,7],[804,9]]},"23":{"position":[[229,7]]},"48":{"position":[[827,11],[854,7],[895,8],[1147,9]]}},"keywords":{}}],["via",{"_index":114,"title":{},"content":{"6":{"position":[[336,4]]},"44":{"position":[[516,3]]}},"keywords":{}}],["view",{"_index":49,"title":{},"content":{"2":{"position":[[120,5]]}},"keywords":{}}],["viz",{"_index":763,"title":{},"content":{"44":{"position":[[82,4]]}},"keywords":{}}],["volum",{"_index":625,"title":{},"content":{"30":{"position":[[959,6]]}},"keywords":{}}],["vulner",{"_index":337,"title":{},"content":{"16":{"position":[[219,10]]}},"keywords":{}}],["wait",{"_index":1021,"title":{},"content":{"58":{"position":[[440,4],[1142,4],[2489,4],[2722,4]]}},"keywords":{}}],["walk",{"_index":649,"title":{},"content":{"31":{"position":[[465,4]]}},"keywords":{}}],["want",{"_index":76,"title":{},"content":{"3":{"position":[[400,4]]},"8":{"position":[[7,4]]},"17":{"position":[[986,4]]},"53":{"position":[[672,4]]},"60":{"position":[[787,4]]},"61":{"position":[[1432,4]]}},"keywords":{}}],["way",{"_index":471,"title":{},"content":{"22":{"position":[[298,3]]},"24":{"position":[[503,3]]},"46":{"position":[[320,3]]},"53":{"position":[[375,3]]},"57":{"position":[[3246,3]]}},"keywords":{}}],["we'll",{"_index":654,"title":{},"content":{"32":{"position":[[36,5]]}},"keywords":{}}],["we'r",{"_index":590,"title":{},"content":{"28":{"position":[[9,5]]}},"keywords":{}}],["we'v",{"_index":1043,"title":{},"content":{"58":{"position":[[2029,5]]},"63":{"position":[[1411,5]]}},"keywords":{}}],["websit",{"_index":658,"title":{},"content":{"32":{"position":[[291,8]]}},"keywords":{}}],["welcom",{"_index":50,"title":{"3":{"position":[[0,7]]}},"content":{},"keywords":{}}],["welcome.md2019",{"_index":67,"title":{},"content":{"3":{"position":[[245,14]]}},"keywords":{}}],["welcome/index.md",{"_index":68,"title":{},"content":{"3":{"position":[[266,16]]}},"keywords":{}}],["well",{"_index":74,"title":{},"content":{"3":{"position":[[377,5]]},"17":{"position":[[522,4]]},"19":{"position":[[463,4]]},"57":{"position":[[3253,4]]}},"keywords":{}}],["what’",{"_index":295,"title":{},"content":{"13":{"position":[[193,6]]}},"keywords":{}}],["whenev",{"_index":958,"title":{},"content":{"57":{"position":[[2922,8]]}},"keywords":{}}],["whether",{"_index":966,"title":{},"content":{"57":{"position":[[3409,7],[4232,7]]},"58":{"position":[[1374,7]]}},"keywords":{}}],["wise",{"_index":974,"title":{},"content":{"57":{"position":[[3912,4]]}},"keywords":{}}],["within",{"_index":677,"title":{},"content":{"33":{"position":[[665,6]]},"57":{"position":[[1456,6]]},"60":{"position":[[102,6]]},"61":{"position":[[112,6]]}},"keywords":{}}],["without",{"_index":218,"title":{},"content":{"9":{"position":[[1273,7]]},"48":{"position":[[957,7]]}},"keywords":{}}],["won't",{"_index":852,"title":{},"content":{"48":{"position":[[1526,5]]},"57":{"position":[[1744,5]]},"60":{"position":[[993,5]]}},"keywords":{}}],["work",{"_index":1123,"title":{},"content":{"61":{"position":[[135,5]]}},"keywords":{}}],["world",{"_index":612,"title":{},"content":{"30":{"position":[[615,5]]}},"keywords":{}}],["worth",{"_index":409,"title":{},"content":{"19":{"position":[[645,5]]},"24":{"position":[[536,5]]}},"keywords":{}}],["write",{"_index":220,"title":{},"content":{"9":{"position":[[1291,5]]}},"keywords":{}}],["written",{"_index":379,"title":{},"content":{"18":{"position":[[132,7]]},"20":{"position":[[40,7]]},"59":{"position":[[1162,7]]}},"keywords":{}}],["x",{"_index":1066,"title":{},"content":{"58":{"position":[[3855,1]]},"59":{"position":[[2867,1]]}},"keywords":{}}],["yield",{"_index":615,"title":{},"content":{"30":{"position":[[717,5]]}},"keywords":{}}],["you'r",{"_index":938,"title":{},"content":{"57":{"position":[[2081,6]]},"59":{"position":[[855,6]]}},"keywords":{}}],["yourself",{"_index":587,"title":{},"content":{"26":{"position":[[524,9]]},"31":{"position":[[344,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/lunr-index-1699100490517.json b/lunr-index-1699100490517.json new file mode 100644 index 0000000000..a9f0db3c0c --- /dev/null +++ b/lunr-index-1699100490517.json @@ -0,0 +1 @@ +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,471.213,1,371.371,2,164.089]],["content/0",[0,2.268,1,3.039,2,1.343,3,2.926,4,1.917,5,0.515,6,2.926,7,2.529,8,2.529,9,2.073,10,2.268,11,2.268,12,1.676,13,2.926,14,12.511,15,13.065,16,12.511,17,11.219,18,12.511,19,11.098,20,11.098,21,11.098,22,11.098,23,11.098,24,11.098,25,11.098,26,11.098,27,11.098,28,9.952,29,11.098,30,11.098,31,11.098]],["keywords/0",[]],["title/1",[1,371.371,2,164.089,32,294.024]],["content/1",[14,11.191,15,12.074,16,11.191,17,10.035,18,11.191,19,9.177,20,9.177,21,9.177,22,9.177,23,9.177,24,9.177,25,9.177,26,9.177,27,9.177,28,8.23,29,9.177,30,9.177,31,9.177]],["keywords/1",[]],["title/2",[1,371.371,2,164.089,33,525.48]],["content/2",[1,7.943,2,3.509,5,1.88,8,9.242,33,9.242,34,7.005,35,9.242,36,9.242,37,5.771,38,4.066,39,8.288,40,6.532,41,10.691,42,6.126,43,9.242,44,10.691,45,10.691,46,10.691,47,10.691,48,10.691,49,10.691]],["keywords/2",[]],["title/3",[50,933.725]],["content/3",[1,9.304,2,3.453,5,1.543,34,5.75,35,9.922,36,7.586,37,4.737,38,3.338,40,5.362,51,8.776,52,8.776,53,6.218,54,4.478,55,11.478,56,9.922,57,8.776,58,5.028,59,5.75,60,8.776,61,8.776,62,6.803,63,8.776,64,8.776,65,11.478,66,11.478,67,8.776,68,8.776,69,8.776,70,8.776,71,7.586,72,7.586,73,8.776,74,6.218,75,6.803,76,5.362,77,7.586,78,5.75,79,8.776]],["keywords/3",[]],["title/4",[80,570.45]],["content/4",[]],["keywords/4",[]],["title/5",[81,807.171]],["content/5",[5,1.745,75,7.692,80,8.932,81,10.733,82,7.03,83,9.923,84,8.578,85,6.062,86,5.356,87,3.495,88,6.006,89,3.95,90,4.56,91,7.692,92,9.923,93,8.578,94,7.692,95,8.578,96,4.8,97,7.692,98,9.923,99,8.578,100,7.692,101,8.578,102,8.578,103,3.95,104,7.692]],["keywords/5",[]],["title/6",[105,723.812]],["content/6",[53,6.851,75,7.496,80,8.595,82,6.851,84,8.359,85,5.908,86,5.219,87,3.96,88,5.909,89,3.849,90,4.444,91,7.496,93,8.359,94,7.496,95,8.359,96,4.677,105,9.47,106,8.359,107,14.069,108,8.359,109,6.336,110,8.359,111,10.561,112,3.678,113,8.359,114,8.359]],["keywords/6",[]],["title/7",[115,611.836]],["content/7",[54,4.998,56,10.646,71,8.467,80,8.635,87,3.467,89,3.899,90,4.501,115,6.418,116,6.94,117,6.418,118,9.795,119,4.738,120,4.998,121,9.795,122,9.795,123,2.235,124,9.795,125,9.795,126,3.563,127,6.94,128,9.795,129,8.467,130,8.467,131,8.467,132,4.085,133,7.593,134,6.418,135,4.085,136,9.795,137,9.795,138,9.795]],["keywords/7",[]],["title/8",[139,807.171]],["content/8",[5,1.355,72,9.097,76,4.709,80,8.235,86,4.16,87,3.794,88,5.796,89,4.77,90,6.194,94,5.974,96,3.728,97,5.974,105,5.974,109,5.05,116,5.46,117,5.05,120,3.932,126,2.804,139,12.709,140,4.416,141,6.896,142,3.932,143,7.707,144,10.523,145,10.523,146,10.523,147,4.558,148,9.289,149,5.46,150,6.429,151,10.523,152,7.707,153,7.707,154,6.662,155,5.974,156,3.214,157,4.416,158,6.662,159,6.662,160,7.707,161,6.662,162,5.974,163,5.974]],["keywords/8",[]],["title/9",[164,356.173,165,736.357]],["content/9",[]],["keywords/9",[]],["title/10",[166,449.87,167,397.458]],["content/10",[5,1.526,10,6.725,38,3.3,112,3.3,147,3.3,166,7.77,167,6.149,168,5.3,169,6.725,170,3.894,171,8.676,172,3.966,173,3.075,174,6.725,175,4.117,176,9.569,177,7.465,178,5.3,179,7.5,180,7.5,181,2.893,182,5.51,183,6.725,184,7.5,185,6.527,186,6.891,187,6.147,188,8.676,189,6.147,190,7.5,191,5.685,192,6.147,193,2.771,194,8.676,195,8.676,196,4.196]],["keywords/10",[]],["title/11",[175,216.151,197,245.513]],["content/11",[2,3.407,32,2.782,42,5.837,89,4.055,102,4.972,110,4.972,123,3.064,130,4.972,150,3.514,166,3.514,170,3.119,172,2.002,173,2.75,175,4.156,177,3.769,178,3.514,181,3.397,182,5.827,193,1.837,197,2.848,198,4.928,199,3.514,200,7.988,201,3.249,202,7.388,203,4.458,204,5.596,205,3.925,206,5.751,207,4.075,208,3.295,209,4.075,210,6.621,211,5.751,212,6.051,213,2.516,214,6.051,215,4.075,216,3.295,217,4.458,218,5.751,219,8.541,220,6.224,221,2.982,222,5.751,223,5.751,224,3.104,225,8.807,226,3.769,227,4.972,228,6.621,229,5.751,230,5.343,231,4.61,232,6.105,233,4.61,234,4.131,235,2.935,236,4.458,237,2.782,238,4.458,239,2.643,240,3.769,241,2.782,242,5.751,243,3.514,244,3.769]],["keywords/11",[]],["title/12",[170,225.457,197,245.513]],["content/12",[112,3.281,126,4.128,147,3.281,164,4.173,170,4.126,172,4.416,173,2.329,175,2.532,197,2.876,201,3.281,204,5.653,205,3.964,208,4.943,221,1.969,241,4.173,245,7.437,246,6.112,247,8.626,248,7.457,249,4.317,250,9.811,251,8.798,252,3.964,253,8.626,254,11.349,255,8.626,256,4.943,257,8.626,258,8.626,259,11.349,260,11.349,261,8.626,262,11.349,263,8.798,264,11.349,265,6.112,266,5.653,267,8.626,268,7.457,269,7.457,270,5.653]],["keywords/12",[]],["title/13",[271,348.291,272,371.371,273,371.371]],["content/13",[11,7.544,53,6.895,104,7.544,170,4.451,173,2.627,175,3.943,197,4.09,199,5.946,200,6.895,201,3.702,204,6.377,205,4.472,216,5.576,221,2.221,245,8.037,265,6.895,272,5.946,273,7.494,274,9.732,275,6.377,276,6.895,277,4.257,278,9.732,279,5.576,280,6.377,281,4.707,282,6.377,283,5.576]],["keywords/13",[]],["title/14",[112,231.209,284,430.679,285,328.104]],["content/14",[112,3.982,170,3.93,172,3.645,173,2.826,175,4.075,182,5.064,197,3.491,201,3.982,205,5.899,212,7.418,243,6.396,245,6.861,252,4.812,272,6.396,279,5.999,281,5.064,285,5.651,286,7.418,287,10.47,288,6.861,289,6.396,290,9.051]],["keywords/14",[]],["title/15",[272,371.371,291,525.48,292,525.48]],["content/15",[38,3.458,40,5.554,112,3.458,147,3.458,164,4.397,170,3.983,172,3.165,175,3.819,189,6.441,196,4.397,197,4.338,220,5.554,245,7.695,252,5.397,263,7.047,272,5.554,279,5.209,280,5.957,281,4.397,282,5.957,292,7.859,293,3.619,294,7.695,295,7.859,296,4.907,297,9.091,298,9.091,299,7.859,300,7.859,301,6.441,302,7.859,303,5.957,304,5.957,305,5.957,306,7.859,307,7.047,308,7.047,309,6.441,310,7.047]],["keywords/15",[]],["title/16",[185,348.291,311,398.314,312,310.165]],["content/16",[5,1.703,17,5.302,38,2.601,40,4.178,42,3.919,59,4.482,74,4.846,76,4.178,103,2.722,112,4.651,120,3.49,166,5.917,167,3.692,168,4.178,170,3.744,172,2.381,175,3.934,185,3.919,186,3.49,192,4.846,193,2.185,196,3.308,197,3.749,199,4.178,200,4.846,201,2.601,202,4.482,203,5.302,207,4.846,208,3.919,221,1.561,226,6.346,243,5.917,248,5.912,263,5.302,265,4.846,270,4.482,275,4.482,279,5.549,288,4.482,302,5.912,303,7.368,311,7.368,312,6.838,313,5.167,314,6.346,315,4.846,316,4.236,317,4.846,318,4.846,319,6.839,320,8.716,321,4.482,322,4.846,323,6.839,324,3.919,325,5.912,326,5.302,327,6.839,328,6.839,329,5.912,330,4.178,331,5.302,332,6.839,333,6.839,334,5.912,335,4.482,336,5.302,337,3.308,338,5.912]],["keywords/16",[]],["title/17",[271,348.291,339,525.48,340,525.48]],["content/17",[5,1.658,103,3.754,170,2.887,172,3.283,175,2.768,176,6.681,193,3.012,241,5.815,252,4.334,266,8.673,273,5.761,277,4.125,279,5.403,283,5.403,305,6.179,311,6.179,312,7.113,313,4.334,339,8.152,340,8.152,341,7.31,342,9.43,343,9.43,344,7.31,345,9.43,346,7.345,347,5.761,348,5.761,349,9.43,350,6.681,351,8.152,352,8.152,353,9.43,354,8.152,355,6.681]],["keywords/17",[]],["title/18",[284,521.715,356,636.554]],["content/18",[5,1.384,74,5.574,89,4.248,112,4.606,116,7.561,135,3.281,142,4.014,179,6.8,180,6.8,185,4.507,196,3.805,215,5.574,221,1.795,235,4.014,241,3.805,266,8.509,279,4.507,281,3.805,282,5.155,286,5.574,300,6.8,303,5.155,312,6.927,313,5.565,337,3.805,341,6.098,356,9.225,357,7.867,358,10.671,359,6.8,360,6.8,361,6.8,362,5.155,363,7.867,364,10.671,365,6.8,366,3.805,367,6.098,368,7.867,369,10.067,370,7.867,371,6.098,372,4.806,373,7.867,374,7.867,375,6.8,376,6.098,377,4.806,378,6.8,379,6.098,380,4.806,381,7.867,382,6.8,383,6.098,384,7.867]],["keywords/18",[]],["title/19",[112,231.209,291,525.48,385,607.869]],["content/19",[4,7.636,5,1.58,38,3.417,112,4.433,140,5.147,168,7.12,173,2.425,191,5.887,193,2.87,205,4.128,224,4.849,283,5.147,289,5.488,304,5.887,312,4.584,313,4.128,331,6.964,337,4.345,344,6.964,350,6.365,354,7.766,366,4.345,369,6.964,377,5.488,386,8.983,387,8.983,388,7.12,389,8.983,390,8.983,391,7.766,392,6.964,393,8.983,394,8.983,395,8.983,396,8.983,397,8.983,398,6.964,399,8.983,400,8.983,401,6.365,402,8.983,403,8.983,404,6.964,405,6.964,406,8.983,407,8.983]],["keywords/19",[]],["title/20",[408,736.357,409,636.554]],["content/20",[111,8.522,150,6.023,167,5.321,185,5.648,186,5.03,202,6.46,241,4.768,283,5.648,313,5.683,347,6.023,348,6.023,355,6.985,388,6.023,409,8.522,410,9.858,411,8.522,412,9.858,413,9.858,414,9.858,415,9.858,416,9.858,417,8.522,418,9.858,419,9.858,420,9.858,421,7.642,422,9.858,423,9.858,424,9.858,425,9.858,426,9.858,427,8.522,428,9.858,429,8.522]],["keywords/20",[]],["title/21",[34,295.27,352,389.538,430,389.538,431,389.538,432,450.612]],["content/21",[4,5.784,5,1.552,32,4.27,34,7.549,37,4.764,38,3.357,112,3.357,120,4.504,155,6.842,164,4.27,170,2.703,183,6.842,185,5.058,221,2.015,241,6.204,273,5.393,293,3.514,303,5.784,312,6.545,313,5.894,315,6.254,347,7.039,388,7.836,398,6.842,429,7.63,431,7.63,433,8.827,434,7.63,435,8.827,436,6.842,437,8.827,438,8.827,439,5.784,440,8.827,441,8.827,442,6.254,443,7.63,444,6.842,445,6.842,446,6.842,447,8.827,448,8.827,449,8.827]],["keywords/21",[]],["title/22",[444,471.213,450,607.869,451,525.48]],["content/22",[4,6.029,32,4.451,88,4.451,148,7.133,164,4.451,166,5.621,170,2.817,172,4.121,177,6.029,186,6.039,224,4.966,281,6.681,304,6.029,306,7.954,312,6.676,313,6.013,321,6.029,347,5.621,365,7.954,372,5.621,377,5.621,388,5.621,404,7.133,451,7.954,452,9.201,453,7.954,454,9.201,455,6.029,456,6.519,457,9.201,458,6.029,459,9.201,460,11.835,461,9.201,462,9.201,463,7.954]],["keywords/22",[]],["title/23",[176,430.679,464,607.869,465,525.48]],["content/23",[4,4.925,5,1.819,10,5.827,38,2.859,82,5.325,123,1.715,170,2.301,172,3.601,175,3.74,176,9.027,186,3.835,189,5.325,190,6.498,193,2.401,208,4.307,210,5.827,212,5.325,235,5.278,250,8.942,251,8.019,305,4.925,311,4.925,312,7.045,313,6.622,321,4.925,346,4.592,375,6.498,376,5.827,398,5.827,417,6.498,439,4.925,465,6.498,466,7.516,467,7.516,468,6.498,469,6.498,470,5.827,471,6.498,472,7.516,473,7.516,474,7.516,475,6.498,476,8.942,477,7.516,478,7.516,479,7.516,480,6.498,481,5.325,482,7.516,483,5.325,484,7.516,485,7.516,486,4.925,487,7.516,488,7.516,489,7.516,490,7.516,491,4.592,492,7.516]],["keywords/23",[]],["title/24",[493,607.869,494,525.48,495,525.48]],["content/24",[87,2.116,135,3.134,185,4.307,221,1.715,235,3.835,266,4.925,270,4.925,277,3.288,279,5.927,311,8.349,312,6.035,313,3.454,322,5.325,337,5.003,366,5.003,372,4.592,391,6.498,480,6.498,481,5.325,486,6.778,494,8.942,495,6.498,496,7.516,497,5.325,498,7.329,499,7.516,500,6.498,501,7.516,502,7.516,503,10.344,504,6.778,505,7.516,506,7.516,507,7.516,508,6.498,509,10.344,510,6.498,511,11.827,512,7.516,513,7.516,514,4.925,515,7.516,516,7.516,517,7.516,518,7.516,519,7.516,520,7.516,521,7.516,522,7.516,523,7.516,524,5.827,525,7.516,526,7.516,527,7.516,528,7.516,529,7.516,530,5.827,531,7.516,532,7.516,533,5.325,534,7.516,535,7.516,536,7.516,537,7.516,538,7.516,539,7.516,540,7.516]],["keywords/24",[]],["title/25",[541,534.997]],["content/25",[2,3.519,5,1.494,12,3.271,32,2.761,38,2.171,42,5.811,54,5.732,86,3.081,89,2.272,123,3.332,131,4.935,132,3.542,147,2.171,156,5.007,173,1.541,175,3.525,178,3.487,181,4.197,187,6.017,193,1.823,213,2.497,221,3.179,230,4.037,231,3.081,232,5.808,233,3.081,237,4.108,238,4.425,239,2.623,240,3.74,243,5.189,249,2.171,256,3.271,283,3.271,293,2.272,326,6.584,329,4.935,330,3.487,338,4.935,346,3.487,377,3.487,379,4.425,458,3.74,491,3.487,524,4.425,541,3.271,542,4.579,543,5.708,544,4.425,545,5.708,546,5.708,547,5.708,548,4.425,549,5.708,550,5.708,551,5.175,552,4.425,553,3.487,554,5.474,555,4.425,556,4.425,557,3.911,558,4.108,559,3.487,560,4.661,561,4.334,562,4.425,563,4.935,564,5.708,565,4.935,566,5.708,567,5.708,568,5.708]],["keywords/25",[]],["title/26",[127,661.551]],["content/26",[2,2.941,7,9.418,28,5.009,53,4.578,88,3.125,89,2.572,123,3.591,127,4.578,182,3.125,221,2.122,227,5.585,230,2.572,231,3.487,239,2.969,243,3.947,252,2.969,271,3.702,275,4.234,284,4.578,293,4.743,316,2.826,377,3.947,401,4.578,557,4.396,560,2.969,569,5.585,570,6.461,571,5.009,572,6.461,573,9.418,574,6.461,575,6.461,576,5.585,577,5.585,578,4.234,579,4.234,580,6.461,581,5.585,582,6.093,583,7.209,584,6.461,585,6.461,586,9.299,587,10.894,588,6.461,589,6.461,590,6.461,591,6.461,592,6.461,593,6.461,594,6.461,595,6.461,596,10.894,597,6.461,598,6.461,599,6.461,600,6.461,601,6.461,602,6.461,603,6.461,604,6.461,605,6.461,606,6.461,607,6.461,608,6.461,609,6.461,610,4.578]],["keywords/26",[]],["title/27",[611,723.812]],["content/27",[42,5.087,54,4.53,87,2.499,88,4.294,89,4.604,90,5.315,96,4.294,117,5.818,123,2.64,132,3.702,141,8.428,147,4.399,161,7.675,202,5.818,220,5.424,237,4.294,316,3.884,348,7.066,401,6.29,427,7.675,542,3.23,548,8.965,553,5.424,569,7.675,571,6.882,577,7.675,610,8.194,611,8.965,612,8.878,613,8.878,614,8.878,615,11.565,616,8.878,617,8.878,618,8.878,619,8.878,620,5.087,621,8.878,622,8.878,623,8.878,624,7.675]],["keywords/27",[]],["title/28",[119,451.639]],["content/28",[]],["keywords/28",[]],["title/29",[625,534.997]],["content/29",[5,1.734,38,3.75,89,3.924,90,6.511,96,4.768,157,5.648,197,4.123,212,6.985,217,7.642,335,6.46,366,4.768,504,6.46,514,6.46,542,3.586,625,8.117,626,6.46,627,7.555,628,8.522,629,7.642,630,5.321,631,8.522,632,8.103,633,8.522,634,8.522,635,6.985,636,7.642]],["keywords/29",[]],["title/30",[277,226.398,557,180.193,637,316.197,638,366.694]],["content/30",[78,7.423,96,5.48,99,9.793,181,3.777,277,4.956,366,5.48,557,3.944,625,6.491,629,8.782,630,6.115,633,9.793,637,6.921,638,8.027,639,8.782,640,9.793]],["keywords/30",[]],["title/31",[542,339.663]],["content/31",[54,6.335,78,6.502,90,4.56,96,6.006,123,2.265,132,4.138,181,3.308,193,3.17,197,3.308,201,3.774,213,4.34,217,7.692,226,6.502,318,7.03,542,4.93,551,5.063,625,7.764,627,6.062,632,8.136,640,8.578,641,8.578,642,8.578,643,8.578,644,4.56,645,8.578,646,8.578,647,8.578]],["keywords/31",[]],["title/32",[141,611.836]],["content/32",[5,1.618,54,6.039,87,2.59,89,3.663,90,6.013,96,5.725,103,3.663,123,2.1,132,3.837,141,9.364,147,4.977,156,4.936,177,6.029,193,2.939,197,3.068,201,3.5,209,6.519,213,4.025,226,6.029,541,6.781,551,4.695,611,7.133,627,5.621,632,6.029,635,6.519,641,7.954,642,7.954,643,7.954,644,4.228,645,7.954,646,7.954,647,7.954,648,6.519,649,6.029]],["keywords/32",[]],["title/33",[650,807.171]],["content/33",[42,7.324,54,7.366,87,2.927,90,5.874,96,5.03,132,4.336,156,4.336,202,6.814,276,7.367,293,4.139,316,4.549,541,5.958,542,3.783,650,11.049,651,10.398,652,10.398,653,10.398,654,10.398,655,10.398,656,10.398,657,7.367]],["keywords/33",[]],["title/34",[167,503.989]],["content/34",[]],["keywords/34",[]],["title/35",[167,328.104,405,471.213,658,525.48]],["content/35",[5,1.451,87,2.323,106,7.133,113,7.133,120,4.21,129,7.133,135,3.441,142,4.21,149,8.791,157,6.314,166,5.041,170,3.374,173,2.975,175,2.422,186,5.623,192,5.846,197,2.751,209,5.846,220,6.732,228,6.396,246,5.846,282,5.407,293,3.284,294,7.221,308,6.396,309,5.846,322,5.846,383,6.396,491,5.041,530,6.396,542,4.513,579,5.407,620,4.728,627,5.041,636,6.396,648,7.808,659,8.251,660,8.251,661,6.396,662,12.407,663,8.251,664,7.133,665,8.251,666,7.133,667,5.846,668,8.251,669,5.846,670,8.251,671,8.251,672,8.251,673,6.396,674,8.251]],["keywords/35",[]],["title/36",[103,241.965,197,202.673,636,471.213]],["content/36",[38,3.437,58,5.178,103,4.657,120,4.611,135,3.769,142,5.969,167,4.878,173,2.439,175,3.434,182,4.371,189,6.403,191,5.922,192,6.403,193,2.887,197,3.013,241,4.371,249,3.437,276,6.403,294,7.666,324,5.178,325,7.812,346,5.521,367,7.005,382,7.812,383,7.005,442,6.403,469,7.812,542,3.287,563,7.812,626,5.922,627,5.521,664,10.113,675,9.037,676,9.037,677,7.005,678,9.037,679,9.037,680,9.037,681,7.812,682,7.812,683,7.812,684,9.037,685,7.005,686,7.005]],["keywords/36",[]],["title/37",[649,611.836]],["content/37",[5,1.072,12,3.494,38,2.319,87,1.716,88,2.95,103,4.617,109,3.996,112,3.392,116,6.318,123,2.035,135,2.543,140,3.494,142,3.111,149,4.32,157,3.494,164,5.099,173,3.131,175,4.007,178,3.725,187,4.32,193,2.848,197,3.867,198,2.95,199,5.448,201,3.392,205,4.098,208,3.494,226,3.996,241,2.95,243,3.725,244,5.843,249,3.392,252,2.802,269,5.271,271,5.109,272,3.725,277,2.667,280,3.996,285,3.291,286,4.32,293,3.549,315,4.32,316,3.901,317,4.32,337,5.099,346,3.725,360,5.271,361,5.271,371,6.912,401,4.32,439,3.996,455,5.843,470,4.727,483,4.32,533,4.32,625,3.494,626,3.996,637,5.448,649,7.6,687,5.271,688,5.271,689,5.271,690,3.996,691,6.098,692,7.708,693,4.727,694,6.318,695,6.098,696,5.271,697,6.098,698,6.098,699,6.098,700,4.32,701,5.271,702,6.098,703,4.727,704,6.098,705,4.727,706,6.098,707,4.32,708,6.098,709,6.098,710,4.32,711,6.098,712,6.098,713,4.727,714,5.271,715,5.271,716,5.271,717,6.098]],["keywords/37",[]],["title/38",[170,225.457,718,736.357]],["content/38",[2,2.644,115,6.418,123,3.393,140,5.612,149,6.94,170,2.999,172,4.288,173,3.324,221,2.235,231,5.287,233,5.287,239,4.501,240,6.418,249,3.725,281,4.738,446,7.593,456,6.94,491,5.984,649,6.418,710,8.726,719,7.593,720,9.795,721,9.795,722,9.795,723,9.795,724,9.795,725,12.315]],["keywords/38",[]],["title/39",[283,421.912,710,521.715]],["content/39",[5,1,9,4.029,32,2.751,37,5.462,42,3.258,88,2.751,89,2.264,103,5.003,109,3.726,120,2.902,142,4.321,148,8.692,163,4.408,167,3.07,170,1.741,172,1.98,175,2.486,193,3.582,197,2.824,201,2.163,203,4.408,207,4.029,210,4.408,246,4.029,252,2.613,265,4.029,277,2.488,283,3.258,289,3.474,293,2.264,303,3.726,307,4.408,310,4.408,316,2.488,335,5.55,337,2.751,347,5.174,348,3.474,355,6.001,371,4.408,372,6.85,380,5.174,388,7.325,421,4.408,443,4.916,444,4.408,445,4.408,453,4.916,471,7.321,491,3.474,498,4.029,508,4.916,510,7.321,533,4.029,544,4.408,565,4.916,579,3.726,627,3.474,631,4.916,644,2.613,648,4.029,661,4.408,673,4.408,690,3.726,710,8.494,726,5.687,727,5.687,728,4.916,729,5.687,730,5.687,731,4.916,732,4.916,733,8.469,734,5.687,735,5.687,736,5.687,737,8.469,738,4.916,739,5.687,740,7.321,741,4.916,742,5.687,743,5.687,744,4.408,745,5.687,746,4.916,747,4.916,748,5.687,749,4.916,750,5.687,751,5.687,752,5.687,753,8.469,754,5.687,755,5.687,756,5.687,757,5.687,758,3.705,759,5.687,760,4.408,761,5.687,762,5.687,763,5.687,764,4.408,765,5.687,766,4.916,767,5.687,768,4.916,769,5.687,770,5.687]],["keywords/39",[]],["title/40",[123,118.125,271,296.546,637,316.197,771,517.558]],["content/40",[]],["keywords/40",[]],["title/41",[215,661.551]],["content/41",[2,3.54,37,7.078,58,6.213,126,3.945,168,6.625,175,3.183,214,7.683,241,5.245,249,4.124,305,7.105,337,5.245,578,7.105,620,6.213,772,10.844,773,9.374,774,10.844,775,7.683,776,9.374,777,7.683]],["keywords/41",[]],["title/42",[2,198.773,126,267.866]],["content/42",[2,3.817,12,6.258,32,5.283,58,6.258,115,7.157,126,3.973,135,4.554,173,3.555,175,3.206,193,3.489,204,7.157,228,8.466,234,5.283,237,5.283,560,5.019,778,10.922,779,8.466]],["keywords/42",[]],["title/43",[126,267.866,221,168.063]],["content/43",[2,3.185,5,1.113,32,3.06,58,5.248,100,4.904,103,2.518,115,4.146,147,4.488,164,5.207,169,4.904,172,3.189,173,3.944,175,3.16,182,3.06,186,3.228,193,3.77,198,3.06,201,2.406,205,2.907,208,3.625,216,5.248,221,2.693,235,3.228,252,2.907,266,4.146,270,4.146,280,6.001,281,3.06,286,4.482,289,3.865,290,5.469,293,3.646,304,4.146,307,4.904,331,4.904,337,3.06,366,4.43,405,4.904,436,8.345,455,4.146,497,4.482,578,4.146,620,6.168,630,4.944,693,4.904,713,4.904,773,5.469,775,4.482,780,6.326,781,6.326,782,4.904,783,9.159,784,9.159,785,7.917,786,5.469,787,4.482,788,4.146,789,6.326,790,6.326,791,6.326,792,6.326,793,9.159,794,6.326,795,6.326,796,6.326,797,6.326,798,5.469,799,6.326,800,5.469,801,6.326,802,6.326,803,6.326,804,6.326,805,5.469,806,5.469,807,4.904,808,6.326,809,6.326,810,6.326]],["keywords/43",[]],["title/44",[5,129.503,119,356.173]],["content/44",[80,5.488,82,6.365,87,3.28,90,4.128,119,5.637,140,6.677,142,4.584,156,3.746,173,2.425,174,6.964,198,4.345,199,5.488,216,5.147,296,4.849,304,5.887,314,7.636,336,6.964,337,5.637,366,5.637,372,5.488,379,6.964,514,5.887,541,5.147,624,7.766,630,4.849,644,4.128,649,5.887,690,5.887,694,6.365,744,6.964,764,6.964,811,8.983,812,8.983,813,8.983,814,8.983,815,7.766,816,8.983,817,8.983,818,8.983,819,8.983,820,7.766,821,8.983,822,7.766,823,5.887]],["keywords/44",[]],["title/45",[213,322.109,824,736.357]],["content/45",[2,3.705,5,1.296,12,4.223,54,3.761,86,3.978,87,2.075,119,3.565,123,3.273,126,3.712,135,3.074,156,3.074,164,3.565,170,2.257,173,1.99,181,3.903,193,3.26,221,3.028,230,4.062,231,3.978,232,6.806,233,3.978,234,3.565,239,3.387,240,4.83,249,3.882,293,2.934,324,4.223,366,3.565,458,4.83,542,3.712,555,5.713,556,5.713,557,4.076,558,4.936,561,5.973,562,5.713,630,3.978,639,5.713,644,3.387,667,7.23,690,4.83,713,5.713,786,6.371,825,7.37,826,7.37,827,7.37,828,5.713,829,7.37,830,7.37,831,7.37,832,7.37,833,7.37]],["keywords/45",[]],["title/46",[87,171.102,88,294.024,119,294.024]],["content/46",[2,3.334,5,1.231,54,3.57,87,2.77,90,3.215,96,4.76,119,4.76,123,3.366,126,2.545,156,2.918,164,4.76,173,1.889,193,2.235,221,2.598,224,3.777,237,3.384,249,2.661,271,7.735,277,4.98,280,4.585,293,2.785,362,6.449,366,5.506,514,6.449,548,7.629,557,4.829,625,6.523,629,5.424,630,6.667,637,7.952,638,6.973,639,7.629,667,4.957,669,6.973,690,4.585,777,4.957,823,4.585,834,6.997,835,9.841,836,6.997,837,6.049,838,6.997,839,6.049,840,6.997,841,9.841,842,4.585,843,4.957]],["keywords/46",[]],["title/47",[5,106.906,315,430.679,844,398.314]],["content/47",[2,2.329,37,4.656,87,2.428,89,3.434,108,7.457,119,4.173,123,2.895,132,3.597,147,3.281,154,7.457,156,4.733,168,5.27,173,2.329,181,2.876,201,3.281,221,2.59,230,3.434,231,4.656,232,5.489,233,4.656,234,4.173,256,4.943,277,3.773,285,4.656,296,4.656,309,6.112,316,3.773,330,5.27,366,4.173,542,3.138,554,6.126,557,3.003,559,5.27,561,5.791,582,7.437,630,4.656,696,7.457,700,6.112,807,6.687,844,5.653,845,7.457,846,8.626,847,8.626,848,8.626,849,5.653,850,8.626,851,4.173,852,6.112,853,6.687]],["keywords/47",[]],["title/48",[114,636.554,823,482.509]],["content/48",[2,3.39,5,1.777,12,6.656,38,2.763,85,6.172,86,3.921,87,2.045,119,4.887,120,5.155,164,3.514,173,3.136,178,4.438,182,4.887,193,2.321,201,2.763,221,2.651,230,4.022,234,3.514,238,5.631,270,4.76,277,4.42,282,4.76,284,5.147,285,3.921,296,5.453,308,5.631,309,5.147,317,5.147,330,4.438,341,7.832,388,4.438,436,5.631,455,4.76,481,5.147,498,5.147,533,5.147,553,6.172,554,3.921,557,2.529,582,6.62,630,3.921,638,5.147,644,3.339,669,5.147,685,5.631,700,5.147,744,5.631,746,6.28,758,3.178,785,6.28,787,5.147,844,4.76,851,4.887,852,5.147,853,7.832,854,6.28,855,7.265,856,7.265,857,4.76,858,5.147,859,6.28,860,6.28,861,6.28,862,6.28,863,7.265,864,7.265,865,6.28,866,7.265]],["keywords/48",[]],["title/49",[867,570.45]],["content/49",[]],["keywords/49",[]],["title/50",[87,207.269,867,449.87]],["content/50",[5,2.148,87,2.722,89,3.849,123,2.788,134,6.336,156,4.032,196,5.909,249,3.678,275,8.005,281,4.677,305,6.336,321,6.336,578,6.336,758,5.344,851,4.677,854,8.359,857,6.336,867,8.595,868,8.359,869,8.359,870,9.67,871,8.359,872,13.392,873,9.67,874,7.496,875,12.216,876,5.908]],["keywords/50",[]],["title/51",[871,807.171]],["content/51",[5,2.248,123,2.917,181,3.467,196,6.183,213,5.591,221,2.917,230,5.088,458,6.814,557,5.026,558,5.03,877,9.805,878,11.049,879,8.989,880,8.989,881,10.398]],["keywords/51",[]],["title/52",[851,451.639]],["content/52",[2,3.436,5,1.816,9,9.018,123,2.905,181,4.244,196,4.995,213,4.518,230,5.492,231,5.574,232,6.157,233,5.574,237,4.995,458,6.767,558,4.995,560,4.746,788,6.767,842,6.767,851,4.995,882,6.767,883,10.327,884,10.327]],["keywords/52",[]],["title/53",[857,611.836]],["content/53",[2,3.802,12,4.603,62,6.227,76,4.908,103,3.198,123,2.989,126,2.922,150,6.612,181,4.367,201,3.055,205,3.692,220,4.908,221,2.47,224,4.336,230,3.198,231,4.336,232,5.235,233,4.336,234,6.335,235,4.099,296,5.842,439,5.264,483,5.692,557,4.262,558,5.235,559,4.908,560,3.692,561,5.523,582,7.092,828,6.227,851,5.235,852,5.692,857,5.264,867,6.612,882,5.264,885,8.033,886,8.033,887,8.033,888,6.227,889,8.033,890,8.033,891,5.692,892,8.033,893,8.033,894,8.033]],["keywords/53",[]],["title/54",[874,723.812]],["content/54",[109,6.676,123,2.881,132,4.249,133,9.785,134,8.271,141,6.676,147,5.216,181,3.397,198,4.928,213,4.457,221,2.881,237,4.928,256,5.838,324,5.838,504,8.271,557,3.547,559,6.225,842,6.676,895,10.189,896,10.189,897,10.189,898,10.189,899,10.189]],["keywords/54",[]],["title/55",[876,570.45]],["content/55",[5,1.816,9,9.018,86,5.574,87,2.907,123,2.905,126,3.757,147,4.841,173,2.788,181,3.443,198,4.995,221,2.357,234,6.157,256,5.917,486,6.767,551,5.27,557,3.596,558,4.995,782,8.006,867,6.309,876,7.776,900,10.327,901,10.327,902,10.327]],["keywords/55",[]],["title/56",[758,408.444]],["content/56",[]],["keywords/56",[]],["title/57",[147,355.151]],["content/57",[0,1.696,5,0.913,37,2.087,38,1.471,39,6.627,40,1.337,43,1.892,58,1.254,59,1.434,74,1.55,78,4.692,85,1.337,87,2.816,88,3.033,91,2.997,100,2.997,103,2.067,112,2.385,117,1.434,120,1.117,123,2.811,126,1.406,127,1.55,132,1.612,133,4.861,134,4.109,135,0.912,140,1.254,142,3.2,147,3.644,155,2.997,156,2.615,157,2.976,158,6.838,159,1.892,168,1.337,170,1.184,172,0.762,173,0.591,175,0.642,177,2.533,181,1.289,182,3.033,184,1.892,186,3.2,191,1.434,193,0.699,196,3.033,198,1.058,213,2.743,214,2.739,216,1.254,220,3.831,221,0.499,224,1.181,230,1.539,235,3.654,236,1.696,237,1.058,239,1.006,241,1.87,249,2.385,268,1.892,273,1.337,275,2.533,276,1.55,277,0.957,281,1.87,285,1.181,288,1.434,293,0.871,294,4.692,295,1.892,296,2.087,299,3.342,313,1.006,314,1.434,316,2.272,317,1.55,318,3.68,320,2.997,324,2.976,330,1.337,335,1.434,336,2.997,337,2.512,346,1.337,347,1.337,351,1.892,362,1.434,369,1.696,372,3.831,380,3.173,392,1.696,404,1.696,411,1.892,430,1.892,434,1.892,439,1.434,456,1.55,463,1.892,468,1.892,475,1.892,476,1.892,497,1.55,498,2.739,504,7.393,514,3.403,541,5.946,542,4.193,551,3.2,553,1.337,554,2.087,557,4.735,558,1.058,560,1.006,571,1.696,573,6.191,579,2.533,620,1.254,625,1.254,626,4.692,628,1.892,632,1.434,634,3.342,635,3.68,644,2.882,657,5.604,658,1.892,667,1.55,673,1.696,677,1.696,682,1.892,687,1.892,688,1.892,693,1.696,701,1.892,703,2.997,705,1.696,715,1.892,716,3.342,719,1.696,749,1.892,758,2.272,760,1.696,775,1.55,782,2.997,798,4.49,800,1.892,805,3.342,806,1.892,815,1.892,822,1.892,823,1.434,839,1.892,843,1.55,851,3.826,868,3.342,869,1.892,874,1.696,876,4.375,891,1.55,903,2.188,904,3.866,905,2.188,906,2.188,907,2.188,908,9.414,909,1.892,910,1.892,911,3.866,912,2.188,913,1.892,914,2.188,915,1.892,916,3.866,917,3.866,918,3.866,919,2.188,920,1.892,921,2.188,922,2.188,923,2.188,924,2.188,925,2.188,926,2.188,927,3.866,928,1.892,929,2.188,930,2.188,931,1.892,932,2.997,933,2.188,934,5.421,935,3.866,936,1.892,937,2.188,938,2.188,939,2.188,940,7.161,941,5.194,942,1.892,943,3.342,944,2.188,945,3.866,946,2.188,947,2.188,948,2.188,949,2.188,950,2.188,951,2.188,952,2.188,953,3.866,954,3.866,955,2.188,956,2.188,957,1.892,958,2.188,959,2.188,960,5.194,961,2.188,962,2.188,963,3.866,964,2.188,965,2.188,966,2.188,967,2.188,968,2.188,969,2.188,970,3.342,971,6.27,972,1.892,973,2.188,974,2.188,975,1.892,976,2.188,977,2.188,978,2.188,979,3.866,980,2.188,981,2.188,982,2.188,983,5.194,984,3.342,985,5.194,986,2.188,987,2.188,988,2.188,989,2.188,990,2.188,991,2.188,992,2.188,993,2.188,994,3.866,995,2.188,996,2.188,997,2.188,998,2.188,999,5.194,1000,1.892,1001,1.892,1002,3.866,1003,2.188,1004,2.188,1005,2.188,1006,1.892,1007,2.188,1008,3.866,1009,1.892,1010,1.892,1011,2.188,1012,1.892,1013,1.892,1014,2.188,1015,2.188,1016,2.188]],["keywords/57",[]],["title/58",[932,723.812]],["content/58",[5,0.768,11,1.949,32,1.216,37,1.357,39,1.949,58,1.441,59,1.647,78,3.792,87,0.708,101,2.173,103,1.001,112,0.956,117,1.647,123,3.173,126,0.915,132,1.821,135,2.414,140,4.484,142,2.953,147,2.201,150,1.536,157,1.441,172,0.875,173,2.316,174,3.385,175,2.029,182,2.112,183,3.385,186,3.527,191,2.861,193,2.208,198,1.216,205,1.155,213,1.91,221,0.574,235,1.283,236,6.652,237,1.216,244,1.647,246,1.781,249,1.661,252,1.155,256,1.441,285,1.357,289,5.63,293,1.001,294,3.792,296,1.357,313,2.007,316,2.532,318,1.781,320,1.949,321,3.792,322,1.781,324,1.441,330,2.668,335,1.647,348,1.536,350,1.781,355,4.101,359,2.173,362,1.647,376,1.949,380,1.536,392,1.949,442,3.094,481,1.781,483,1.781,497,3.094,500,5.003,504,5.623,541,2.502,542,4.393,544,1.949,551,4.378,552,3.385,553,5.242,554,5.267,555,4.486,556,8.767,557,4.866,576,2.173,620,1.441,632,1.647,635,3.094,644,2.007,648,4.898,657,4.101,677,1.949,681,2.173,683,2.173,686,1.949,694,1.781,700,1.781,714,2.173,719,5.359,728,2.173,731,2.173,741,2.173,758,1.91,766,2.173,768,2.173,777,1.781,787,1.781,844,5.128,851,2.799,858,1.781,876,6.247,891,1.781,908,10.834,915,2.173,928,2.173,932,7.144,957,3.775,970,2.173,972,2.173,984,2.173,1000,2.173,1001,5.003,1006,2.173,1010,2.173,1012,3.775,1013,2.173,1017,10.992,1018,6.765,1019,7.825,1020,2.514,1021,2.514,1022,2.514,1023,2.514,1024,2.514,1025,6.913,1026,4.366,1027,5.788,1028,2.514,1029,9.216,1030,10.621,1031,2.514,1032,2.514,1033,2.514,1034,2.514,1035,5.976,1036,2.514,1037,2.514,1038,2.514,1039,2.514,1040,2.514,1041,2.514,1042,2.514,1043,2.514,1044,2.514,1045,2.514,1046,5.788,1047,2.173,1048,2.514,1049,2.514,1050,2.173,1051,2.514,1052,2.514,1053,2.514,1054,2.514,1055,2.514,1056,2.514,1057,2.514,1058,2.514,1059,2.514,1060,2.514,1061,2.514,1062,2.514,1063,6.913,1064,5.788,1065,2.514,1066,2.514,1067,2.514,1068,3.775,1069,2.514,1070,2.173,1071,2.514,1072,2.514,1073,2.514,1074,2.514,1075,2.173,1076,2.514,1077,2.514,1078,2.514,1079,2.514,1080,2.173,1081,2.514,1082,2.514,1083,2.514,1084,2.514,1085,4.366,1086,2.173,1087,2.514,1088,2.514,1089,2.514,1090,2.173]],["keywords/58",[]],["title/59",[554,503.989]],["content/59",[2,2.711,5,1.858,38,1.135,59,3.314,77,2.579,85,1.823,86,1.61,87,1.423,103,1.188,119,2.446,123,3.11,126,1.085,132,4.188,134,4.313,135,2.745,147,2.948,150,1.823,156,2.109,157,2.897,172,1.761,173,2.971,175,3.231,178,3.09,181,3.909,198,3.749,201,1.923,204,3.314,213,4.815,215,2.114,221,3.053,224,1.61,230,3.998,232,2.446,233,4.183,234,1.443,235,1.522,237,1.443,239,3.562,244,4.313,249,1.923,252,1.371,256,4.97,271,1.709,277,2.212,293,1.188,296,5.421,316,2.212,326,5.102,344,2.313,348,1.823,350,2.114,377,1.823,380,3.09,455,1.955,470,2.313,530,6.008,551,4.426,552,3.92,553,5.3,554,5.086,557,4.184,558,5.11,559,6.454,560,3.562,561,1.522,578,1.955,582,4.313,620,1.709,637,1.823,644,1.371,657,3.583,661,2.313,666,2.579,669,6.146,685,2.313,694,2.114,732,2.579,738,7.499,758,3.39,764,2.313,779,2.313,788,3.314,820,2.579,828,2.313,842,1.955,844,1.955,845,2.579,851,5.671,852,3.583,853,5.102,857,1.955,858,2.114,859,2.579,860,2.579,861,2.579,862,2.579,867,1.823,876,6.454,877,4.663,878,5.69,879,6.7,880,2.579,882,1.955,888,2.313,908,6.724,909,6.7,913,2.579,942,2.579,1030,4.372,1068,4.372,1070,2.579,1075,2.579,1080,2.579,1090,4.372,1091,5.057,1092,5.057,1093,2.983,1094,7.75,1095,5.057,1096,2.983,1097,2.983,1098,5.057,1099,6.582,1100,6.582,1101,5.057,1102,5.057,1103,5.057,1104,2.983,1105,2.983,1106,2.983,1107,2.983,1108,5.057,1109,2.983,1110,2.983,1111,2.983,1112,2.983,1113,2.983]],["keywords/59",[]],["title/60",[849,611.836]],["content/60",[5,2.164,76,4.236,123,2.808,135,2.891,156,5.613,162,5.374,170,2.994,181,3.26,196,3.353,198,3.353,207,6.928,221,2.232,230,4.509,234,3.353,239,5.654,249,4.309,301,4.912,314,4.543,316,3.033,334,5.993,486,4.543,542,4.897,560,6.357,561,4.989,686,5.374,740,5.993,747,8.453,758,5.381,760,5.374,776,5.993,788,6.407,837,8.453,843,4.912,849,7.423,877,6.928,882,7.423,888,7.58,934,8.453,975,5.993,1018,5.993,1114,6.933,1115,6.933,1116,6.933,1117,8.453,1118,6.933,1119,9.778,1120,6.933,1121,6.933,1122,6.933,1123,9.778]],["keywords/60",[]],["title/61",[707,661.551]],["content/61",[2,3.203,32,2.369,34,3.21,76,2.992,112,1.863,123,3.294,126,3.36,132,3.852,135,2.043,170,1.5,181,4.464,187,3.47,196,2.369,199,5.644,205,2.251,214,3.47,216,2.807,221,2.915,224,2.644,230,3.01,232,5.982,239,2.251,240,3.21,245,3.21,249,4.27,251,3.797,285,2.644,288,3.21,314,3.21,367,3.797,380,2.992,421,3.797,486,3.21,542,4.647,551,3.859,557,4.447,558,2.369,559,2.992,560,5.684,561,5.3,579,3.21,581,4.234,583,3.797,610,3.47,689,4.234,703,3.797,707,9.288,758,4.544,779,3.797,788,3.21,807,8.703,842,3.21,843,3.47,849,3.21,865,4.234,877,3.47,882,3.21,891,3.47,936,6.538,943,4.234,1086,4.234,1124,4.898,1125,4.898,1126,4.234,1127,7.563,1128,4.898,1129,7.563,1130,4.898,1131,7.563,1132,6.538,1133,4.898,1134,4.898,1135,4.898,1136,7.563,1137,4.898,1138,4.898,1139,4.898,1140,4.898,1141,4.898,1142,9.238,1143,7.563,1144,4.898,1145,4.898,1146,4.898,1147,4.898,1148,4.898,1149,4.898,1150,4.898,1151,4.898,1152,4.898]],["keywords/61",[]],["title/62",[1153,807.171]],["content/62",[123,3.291,162,8.864,172,3.038,181,4.253,182,4.22,221,2.911,232,4.22,239,5.255,289,5.331,301,6.182,316,5.002,362,5.717,456,6.182,542,4.64,557,4.441,560,5.255,561,4.452,626,5.717,644,4.01,692,7.543,705,6.764,758,5.002,851,5.531,858,6.182,931,9.885,1035,7.543,1153,9.885,1154,8.725,1155,8.725,1156,8.725,1157,8.725,1158,8.725,1159,8.725,1160,8.725]],["keywords/62",[]],["title/63",[197,245.513,758,322.109]],["content/63",[2,3.04,5,2.092,40,3.012,62,3.822,85,4.643,97,3.822,103,3.692,104,3.822,123,2.922,126,3.374,132,2.056,156,3.868,163,3.822,169,3.822,172,3.229,173,2.504,181,4.133,197,2.534,200,3.493,201,1.875,205,2.266,208,2.825,209,3.493,213,2.157,216,2.825,221,3.203,225,4.262,230,3.692,232,5.042,234,5.446,239,5.883,244,6.078,249,3.965,252,4.262,273,4.643,281,2.385,288,3.23,301,3.493,310,3.822,324,2.825,378,4.262,442,3.493,445,3.822,446,5.892,491,3.012,524,3.822,542,3.792,551,2.516,554,4.102,558,3.676,560,5.697,561,5.319,562,8.08,583,5.892,610,3.493,644,3.493,707,3.493,758,5.423,775,3.493,777,3.493,787,3.493,823,3.23,849,3.23,910,4.262,920,4.262,1009,4.262,1047,4.262,1050,4.262,1117,6.57,1126,6.57,1132,6.57,1161,4.93,1162,4.93,1163,7.6,1164,7.6,1165,4.93,1166,4.93,1167,4.93,1168,4.93,1169,4.93,1170,4.93,1171,4.93,1172,4.93,1173,4.93,1174,4.93,1175,4.93,1176,4.93,1177,4.93]],["keywords/63",[]]],"invertedIndex":[["",{"_index":123,"title":{"40":{"position":[[11,1]]}},"content":{"7":{"position":[[149,1]]},"11":{"position":[[750,1],[801,1],[833,1],[997,1],[1036,1],[1251,1],[1302,1],[1342,1]]},"23":{"position":[[744,1]]},"25":{"position":[[423,1],[541,1],[556,1],[569,1],[571,1],[661,1],[663,1],[736,1],[794,1],[838,1],[953,1],[955,1],[1028,1],[1068,1]]},"26":{"position":[[166,1],[174,1],[190,1],[198,1],[200,1],[202,1],[293,1],[313,1],[334,1],[336,1],[421,1],[423,1],[531,1],[533,2],[575,1],[577,2],[580,1],[664,1],[666,1],[732,2],[735,1],[806,1],[808,2],[850,1],[852,1],[854,2],[896,1],[898,1],[900,1]]},"27":{"position":[[243,2],[282,2]]},"31":{"position":[[145,3]]},"32":{"position":[[278,3]]},"37":{"position":[[356,1],[380,1]]},"38":{"position":[[220,1],[268,1],[286,1],[299,1],[301,1],[303,1]]},"45":{"position":[[131,1],[146,1],[159,1],[207,1],[219,1],[307,1],[319,1],[432,1]]},"46":{"position":[[161,1],[175,1],[428,1],[441,1],[449,1],[456,1],[458,1],[561,1],[569,1],[576,1],[578,2]]},"47":{"position":[[341,1],[531,1],[533,1]]},"50":{"position":[[276,1],[402,1]]},"51":{"position":[[132,1],[198,1]]},"52":{"position":[[71,1],[184,1]]},"53":{"position":[[56,1],[104,1],[116,1],[340,1]]},"54":{"position":[[113,1],[205,1]]},"55":{"position":[[90,1],[179,1]]},"57":{"position":[[264,1],[651,1],[685,1],[1324,1],[1358,1],[1902,1],[1936,1],[2572,1],[2606,1],[2619,1],[2772,1],[3788,1],[3822,1],[4662,1],[4696,1],[5389,1],[5423,1],[5948,1],[5982,1]]},"58":{"position":[[295,1],[574,1],[608,1],[803,1],[837,1],[1042,1],[1076,1],[1285,1],[1319,1],[1549,1],[1583,1],[1967,1],[2001,1],[2623,1],[2657,1],[2831,1],[2865,1],[3064,1],[3098,1],[3281,1],[3315,1],[3738,1],[3772,1],[4448,1],[4482,1],[5162,1],[5196,1],[5536,1],[5570,1]]},"59":{"position":[[122,1],[176,1],[701,1],[814,1],[946,1],[1000,1],[1204,1],[1270,1],[1460,1],[1556,1],[1772,1],[1901,1],[2146,1],[2276,1],[2649,1],[2788,1],[3069,1],[3262,1],[3507,1],[3528,1],[3692,1]]},"60":{"position":[[427,1],[472,1],[861,1],[892,1]]},"61":{"position":[[310,1],[325,1],[337,1],[360,1],[372,1],[430,1],[445,1],[492,1],[505,1],[613,1],[869,1],[884,1],[897,1],[931,1],[1553,1],[1671,1]]},"62":{"position":[[91,1],[106,1],[119,1],[180,1],[192,1],[216,1]]},"63":{"position":[[357,1],[380,1],[392,1],[531,1],[1337,1],[1360,1],[1372,1],[1404,1]]}},"keywords":{}}],["0.0.0.0:8000",{"_index":614,"title":{},"content":{"27":{"position":[[267,14]]}},"keywords":{}}],["05",{"_index":65,"title":{},"content":{"3":{"position":[[239,2],[260,2]]}},"keywords":{}}],["1",{"_index":271,"title":{"13":{"position":[[0,2]]},"17":{"position":[[0,2]]},"40":{"position":[[13,1]]}},"content":{"26":{"position":[[354,2]]},"37":{"position":[[358,1],[382,1]]},"46":{"position":[[163,2],[166,1],[177,2],[180,1],[430,2],[433,1]]},"59":{"position":[[3509,1]]}},"keywords":{}}],["10",{"_index":1089,"title":{},"content":{"58":{"position":[[5471,3]]}},"keywords":{}}],["100",{"_index":436,"title":{},"content":{"21":{"position":[[207,4]]},"43":{"position":[[176,3],[229,3],[495,3]]},"48":{"position":[[760,3]]}},"keywords":{}}],["1000",{"_index":1088,"title":{},"content":{"58":{"position":[[5458,5]]}},"keywords":{}}],["101",{"_index":785,"title":{},"content":{"43":{"position":[[306,3],[582,3]]},"48":{"position":[[751,3]]}},"keywords":{}}],["12",{"_index":1157,"title":{},"content":{"62":{"position":[[175,4]]}},"keywords":{}}],["2",{"_index":284,"title":{"14":{"position":[[0,2]]},"18":{"position":[[0,2]]}},"content":{"26":{"position":[[598,2]]},"48":{"position":[[822,2]]}},"keywords":{}}],["2019",{"_index":64,"title":{},"content":{"3":{"position":[[234,4]]}},"keywords":{}}],["256",{"_index":727,"title":{},"content":{"39":{"position":[[8,3]]}},"keywords":{}}],["3",{"_index":291,"title":{"15":{"position":[[0,2]]},"19":{"position":[[0,2]]}},"content":{},"keywords":{}}],["30",{"_index":66,"title":{},"content":{"3":{"position":[[242,2],[263,2]]}},"keywords":{}}],["4",{"_index":408,"title":{"20":{"position":[[0,2]]}},"content":{},"keywords":{}}],["5",{"_index":430,"title":{"21":{"position":[[0,2]]}},"content":{"57":{"position":[[6066,1]]}},"keywords":{}}],["5000",{"_index":1008,"title":{},"content":{"57":{"position":[[5942,5],[6044,4]]}},"keywords":{}}],["6",{"_index":450,"title":{"22":{"position":[[0,2]]}},"content":{},"keywords":{}}],["60",{"_index":1029,"title":{},"content":{"58":{"position":[[512,3],[741,3],[980,3],[1223,3],[2561,3],[2769,3],[3002,3]]}},"keywords":{}}],["7",{"_index":464,"title":{"23":{"position":[[0,2]]}},"content":{},"keywords":{}}],["8",{"_index":493,"title":{"24":{"position":[[0,2]]}},"content":{},"keywords":{}}],["80",{"_index":924,"title":{},"content":{"57":{"position":[[884,2]]}},"keywords":{}}],["8000",{"_index":916,"title":{},"content":{"57":{"position":[[618,5],[1857,5]]}},"keywords":{}}],["8080",{"_index":159,"title":{},"content":{"8":{"position":[[662,5]]},"57":{"position":[[890,5]]}},"keywords":{}}],["8080:8080",{"_index":152,"title":{},"content":{"8":{"position":[[457,9]]}},"keywords":{}}],["8081:8081",{"_index":153,"title":{},"content":{"8":{"position":[[470,9]]}},"keywords":{}}],["8090",{"_index":918,"title":{},"content":{"57":{"position":[[645,5],[724,5]]}},"keywords":{}}],["abov",{"_index":237,"title":{},"content":{"11":{"position":[[868,5]]},"25":{"position":[[1074,5],[1344,5]]},"27":{"position":[[130,6]]},"42":{"position":[[101,5]]},"46":{"position":[[543,5]]},"52":{"position":[[202,6]]},"54":{"position":[[215,5]]},"57":{"position":[[4714,6]]},"58":{"position":[[3790,6]]},"59":{"position":[[2294,6]]}},"keywords":{}}],["access",{"_index":196,"title":{},"content":{"10":{"position":[[635,6]]},"15":{"position":[[290,6]]},"16":{"position":[[767,6]]},"18":{"position":[[759,10]]},"50":{"position":[[78,10],[132,6]]},"51":{"position":[[73,6],[237,6]]},"52":{"position":[[229,6]]},"57":{"position":[[767,10],[1631,6],[3123,6],[3355,11]]},"60":{"position":[[1002,10]]},"61":{"position":[[246,8]]}},"keywords":{}}],["accord",{"_index":1080,"title":{},"content":{"58":{"position":[[4956,10]]},"59":{"position":[[3336,9]]}},"keywords":{}}],["accur",{"_index":745,"title":{},"content":{"39":{"position":[[653,8]]}},"keywords":{}}],["acquir",{"_index":789,"title":{},"content":{"43":{"position":[[485,9]]}},"keywords":{}}],["act",{"_index":177,"title":{},"content":{"10":{"position":[[179,4],[585,4]]},"11":{"position":[[220,4]]},"22":{"position":[[54,3]]},"32":{"position":[[48,6]]},"57":{"position":[[5709,4],[6339,4]]}},"keywords":{}}],["activ",{"_index":928,"title":{},"content":{"57":{"position":[[1010,10]]},"58":{"position":[[4871,10]]}},"keywords":{}}],["actual",{"_index":163,"title":{},"content":{"8":{"position":[[787,6]]},"39":{"position":[[965,8]]},"63":{"position":[[1234,6]]}},"keywords":{}}],["ad",{"_index":59,"title":{},"content":{"3":{"position":[[151,5]]},"16":{"position":[[876,5]]},"57":{"position":[[2149,5]]},"58":{"position":[[3589,5]]},"59":{"position":[[218,5],[1730,5]]}},"keywords":{}}],["adapt",{"_index":489,"title":{},"content":{"23":{"position":[[736,7]]}},"keywords":{}}],["add",{"_index":53,"title":{},"content":{"3":{"position":[[68,3]]},"6":{"position":[[82,3]]},"13":{"position":[[348,3]]},"26":{"position":[[914,3]]}},"keywords":{}}],["addit",{"_index":293,"title":{},"content":{"15":{"position":[[3,9]]},"21":{"position":[[372,10]]},"25":{"position":[[1125,9]]},"26":{"position":[[536,10],[811,10],[857,10],[918,10]]},"33":{"position":[[177,10]]},"35":{"position":[[53,8]]},"37":{"position":[[486,10],[589,10]]},"39":{"position":[[1035,10]]},"43":{"position":[[450,10],[748,10]]},"45":{"position":[[629,10]]},"46":{"position":[[716,10]]},"57":{"position":[[1818,10]]},"58":{"position":[[1778,10]]},"59":{"position":[[2844,10]]}},"keywords":{}}],["addition",{"_index":367,"title":{},"content":{"18":{"position":[[292,13]]},"36":{"position":[[262,13]]},"61":{"position":[[1292,13]]}},"keywords":{}}],["address",{"_index":807,"title":{},"content":{"43":{"position":[[1038,7]]},"47":{"position":[[176,7]]},"61":{"position":[[412,8],[421,8],[437,7],[963,7],[1075,7]]}},"keywords":{}}],["adipisc",{"_index":20,"title":{},"content":{"0":{"position":[[166,10],[345,10],[524,10],[703,10],[882,10],[1061,10],[1240,10],[1419,10],[1598,10],[1777,10],[1956,10],[2135,10],[2314,10],[2493,10],[2672,10],[2851,10]]},"1":{"position":[[40,10]]}},"keywords":{}}],["adjust",{"_index":913,"title":{},"content":{"57":{"position":[[390,6]]},"59":{"position":[[3329,6]]}},"keywords":{}}],["advantag",{"_index":332,"title":{},"content":{"16":{"position":[[735,9]]}},"keywords":{}}],["adversari",{"_index":1015,"title":{},"content":{"57":{"position":[[6416,11]]}},"keywords":{}}],["affect",{"_index":510,"title":{},"content":{"24":{"position":[[334,9]]},"39":{"position":[[424,6],[1532,6]]}},"keywords":{}}],["ag",{"_index":931,"title":{},"content":{"57":{"position":[[1100,3]]},"62":{"position":[[170,4],[207,4]]}},"keywords":{}}],["against",{"_index":985,"title":{},"content":{"57":{"position":[[4292,7],[5729,7],[6366,7]]}},"keywords":{}}],["agent",{"_index":1060,"title":{},"content":{"58":{"position":[[3121,5]]}},"keywords":{}}],["aim",{"_index":1049,"title":{},"content":{"58":{"position":[[2138,5]]}},"keywords":{}}],["alert("button",{"_index":46,"title":{},"content":{"2":{"position":[[152,18]]}},"keywords":{}}],["algorithm",{"_index":390,"title":{},"content":{"19":{"position":[[172,11]]}},"keywords":{}}],["align",{"_index":685,"title":{},"content":{"36":{"position":[[464,6]]},"48":{"position":[[251,6]]},"59":{"position":[[3832,6]]}},"keywords":{}}],["aliquam",{"_index":30,"title":{},"content":{"0":{"position":[[259,7],[438,7],[617,7],[796,7],[975,7],[1154,7],[1333,7],[1512,7],[1691,7],[1870,7],[2049,7],[2228,7],[2407,7],[2586,7],[2765,7],[2944,7]]},"1":{"position":[[133,7]]}},"keywords":{}}],["aliv",{"_index":1019,"title":{},"content":{"58":{"position":[[150,5],[897,5],[1158,5],[1387,5],[2924,5]]}},"keywords":{}}],["allow",{"_index":644,"title":{},"content":{"31":{"position":[[182,6]]},"32":{"position":[[315,6]]},"39":{"position":[[796,6]]},"44":{"position":[[207,6]]},"45":{"position":[[447,6]]},"48":{"position":[[611,6]]},"57":{"position":[[2232,6],[3518,8],[5221,6],[5640,7]]},"58":{"position":[[23,6],[3826,5]]},"59":{"position":[[2462,6]]},"62":{"position":[[21,6]]},"63":{"position":[[70,6],[1793,6]]}},"keywords":{}}],["allowedhead",{"_index":1063,"title":{},"content":{"58":{"position":[[3318,15],[3338,14],[3472,14],[3801,14]]}},"keywords":{}}],["alreadi",{"_index":82,"title":{},"content":{"5":{"position":[[13,7]]},"6":{"position":[[13,7]]},"23":{"position":[[191,7]]},"44":{"position":[[405,8]]}},"keywords":{}}],["alter",{"_index":740,"title":{},"content":{"39":{"position":[[482,5],[1340,7]]},"60":{"position":[[60,5]]}},"keywords":{}}],["although",{"_index":975,"title":{},"content":{"57":{"position":[[3829,8]]},"60":{"position":[[528,8]]}},"keywords":{}}],["alway",{"_index":920,"title":{},"content":{"57":{"position":[[808,6]]},"63":{"position":[[1739,6]]}},"keywords":{}}],["amet",{"_index":18,"title":{},"content":{"0":{"position":[[148,5],[300,4],[327,5],[479,4],[506,5],[658,4],[685,5],[837,4],[864,5],[1016,4],[1043,5],[1195,4],[1222,5],[1374,4],[1401,5],[1553,4],[1580,5],[1732,4],[1759,5],[1911,4],[1938,5],[2090,4],[2117,5],[2269,4],[2296,5],[2448,4],[2475,5],[2627,4],[2654,5],[2806,4],[2833,5],[2985,4]]},"1":{"position":[[22,5],[174,4]]}},"keywords":{}}],["amount",{"_index":342,"title":{},"content":{"17":{"position":[[117,6]]}},"keywords":{}}],["anoth",{"_index":286,"title":{},"content":{"14":{"position":[[0,7]]},"18":{"position":[[0,7]]},"37":{"position":[[610,7]]},"43":{"position":[[521,7]]}},"keywords":{}}],["anticip",{"_index":678,"title":{},"content":{"36":{"position":[[190,13]]}},"keywords":{}}],["anyth",{"_index":402,"title":{},"content":{"19":{"position":[[391,8]]}},"keywords":{}}],["api",{"_index":175,"title":{"11":{"position":[[0,3]]}},"content":{"10":{"position":[[134,3],[150,3],[381,3],[561,3],[573,3]]},"11":{"position":[[0,3],[60,4],[81,3],[158,4],[211,3],[256,5],[267,3],[300,3],[625,4],[1093,4],[1236,4]]},"12":{"position":[[283,3]]},"13":{"position":[[32,3],[113,3],[306,4]]},"14":{"position":[[23,3],[198,5],[279,4]]},"15":{"position":[[13,3],[165,3],[488,3]]},"16":{"position":[[48,3],[192,3],[307,4],[851,4],[1005,4],[1064,5]]},"17":{"position":[[156,3]]},"23":{"position":[[78,3],[207,3],[263,3],[732,3]]},"25":{"position":[[92,4],[157,3],[198,3],[722,3],[1014,3]]},"35":{"position":[[265,4]]},"36":{"position":[[94,5],[447,3]]},"37":{"position":[[324,4],[395,3],[462,3],[541,3],[618,4],[732,4],[921,3],[1342,3]]},"39":{"position":[[263,3],[470,4]]},"41":{"position":[[91,4]]},"42":{"position":[[148,4]]},"43":{"position":[[377,4],[419,3],[1131,3]]},"57":{"position":[[2109,4]]},"58":{"position":[[3722,3],[3857,3],[4168,5],[4578,3]]},"59":{"position":[[93,4],[317,4],[380,4],[600,4],[842,3],[1011,3],[1319,3],[1611,3],[1926,3]]}},"keywords":{}}],["api/data"",{"_index":956,"title":{},"content":{"57":{"position":[[2668,15]]}},"keywords":{}}],["api_endpoint",{"_index":899,"title":{},"content":{"54":{"position":[[288,13]]}},"keywords":{}}],["apikey",{"_index":960,"title":{},"content":{"57":{"position":[[2817,6],[3001,6],[3083,7]]}},"keywords":{}}],["appli",{"_index":703,"title":{},"content":{"37":{"position":[[993,5]]},"57":{"position":[[28,7],[5895,8]]},"61":{"position":[[655,7]]}},"keywords":{}}],["applic",{"_index":216,"title":{},"content":{"11":{"position":[[433,11]]},"13":{"position":[[206,12]]},"43":{"position":[[621,12],[1099,12]]},"44":{"position":[[89,12]]},"57":{"position":[[3629,12]]},"61":{"position":[[829,12]]},"63":{"position":[[1917,12]]}},"keywords":{}}],["application'",{"_index":866,"title":{},"content":{"48":{"position":[[915,13]]}},"keywords":{}}],["approach",{"_index":744,"title":{},"content":{"39":{"position":[[609,8]]},"44":{"position":[[198,8]]},"48":{"position":[[698,9]]}},"keywords":{}}],["appropri",{"_index":184,"title":{},"content":{"10":{"position":[[278,11]]},"57":{"position":[[6216,11]]}},"keywords":{}}],["architectur",{"_index":167,"title":{"10":{"position":[[13,13]]},"34":{"position":[[0,12]]},"35":{"position":[[11,13]]}},"content":{"10":{"position":[[37,12],[520,13]]},"16":{"position":[[380,13]]},"20":{"position":[[245,12]]},"36":{"position":[[451,12]]},"39":{"position":[[1616,12]]}},"keywords":{}}],["arg",{"_index":871,"title":{"51":{"position":[[0,5]]}},"content":{"50":{"position":[[278,5]]}},"keywords":{}}],["args.id",{"_index":881,"title":{},"content":{"51":{"position":[[218,7]]}},"keywords":{}}],["argument",{"_index":877,"title":{},"content":{"51":{"position":[[14,9],[84,9],[251,8]]},"59":{"position":[[331,8],[2996,9],[3358,8]]},"60":{"position":[[245,8],[727,8]]},"61":{"position":[[729,9]]}},"keywords":{}}],["aris",{"_index":848,"title":{},"content":{"47":{"position":[[211,6]]}},"keywords":{}}],["array",{"_index":1086,"title":{},"content":{"58":{"position":[[5372,5]]},"61":{"position":[[1361,5]]}},"keywords":{}}],["aspect",{"_index":681,"title":{},"content":{"36":{"position":[[310,8]]},"58":{"position":[[53,7]]}},"keywords":{}}],["assist",{"_index":834,"title":{},"content":{"46":{"position":[[41,6]]}},"keywords":{}}],["associ",{"_index":667,"title":{},"content":{"35":{"position":[[399,10]]},"45":{"position":[[517,10],[661,10]]},"46":{"position":[[748,10]]},"57":{"position":[[4113,10]]}},"keywords":{}}],["attack",{"_index":299,"title":{},"content":{"15":{"position":[[233,7]]},"57":{"position":[[4061,9],[6402,7]]}},"keywords":{}}],["attempt",{"_index":484,"title":{},"content":{"23":{"position":[[606,9]]}},"keywords":{}}],["attribut",{"_index":1114,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["aut",{"_index":589,"title":{},"content":{"26":{"position":[[455,3]]}},"keywords":{}}],["autem"",{"_index":604,"title":{},"content":{"26":{"position":[[720,11]]}},"keywords":{}}],["authent",{"_index":189,"title":{},"content":{"10":{"position":[[424,15]]},"15":{"position":[[178,14]]},"23":{"position":[[113,15]]},"36":{"position":[[329,14]]}},"keywords":{}}],["author",{"_index":58,"title":{},"content":{"3":{"position":[[136,7]]},"36":{"position":[[348,13]]},"41":{"position":[[155,7]]},"42":{"position":[[206,6]]},"43":{"position":[[266,6],[553,6]]},"57":{"position":[[3015,13]]},"58":{"position":[[3837,13]]}},"keywords":{}}],["author'",{"_index":780,"title":{},"content":{"43":{"position":[[40,8]]}},"keywords":{}}],["authors.yml",{"_index":60,"title":{},"content":{"3":{"position":[[160,12]]}},"keywords":{}}],["automat",{"_index":716,"title":{},"content":{"37":{"position":[[1299,13]]},"57":{"position":[[5036,13],[6149,13]]}},"keywords":{}}],["avail",{"_index":805,"title":{},"content":{"43":{"position":[[997,13]]},"57":{"position":[[1753,10],[3690,10]]}},"keywords":{}}],["backend",{"_index":185,"title":{"16":{"position":[[0,7]]}},"content":{"10":{"position":[[290,7],[347,7]]},"16":{"position":[[88,7]]},"18":{"position":[[709,8]]},"20":{"position":[[85,8]]},"21":{"position":[[33,7]]},"24":{"position":[[4,8]]}},"keywords":{}}],["base",{"_index":552,"title":{},"content":{"25":{"position":[[435,4]]},"58":{"position":[[4150,4],[4672,4]]},"59":{"position":[[584,4],[635,4]]}},"keywords":{}}],["baseurl",{"_index":1030,"title":{},"content":{"58":{"position":[[516,8],[745,8],[984,8],[1227,8],[1491,8],[1909,8],[2162,7],[2232,7],[2565,8],[2773,8],[3006,8],[3223,8],[4114,8],[4280,8],[4329,8],[4513,7]]},"59":{"position":[[556,8],[755,8]]}},"keywords":{}}],["bash",{"_index":124,"title":{},"content":{"7":{"position":[[151,4]]}},"keywords":{}}],["basic",{"_index":379,"title":{},"content":{"18":{"position":[[732,9]]},"25":{"position":[[1176,9]]},"44":{"position":[[362,6]]}},"keywords":{}}],["batch",{"_index":844,"title":{"47":{"position":[[14,9]]}},"content":{"47":{"position":[[0,8]]},"48":{"position":[[302,5]]},"58":{"position":[[5199,6],[5235,5],[5294,7],[5348,7],[5416,7]]},"59":{"position":[[3883,5]]}},"keywords":{}}],["be",{"_index":483,"title":{},"content":{"23":{"position":[[600,5]]},"37":{"position":[[506,5]]},"53":{"position":[[645,5]]},"58":{"position":[[2385,5]]}},"keywords":{}}],["becom",{"_index":421,"title":{},"content":{"20":{"position":[[204,6]]},"39":{"position":[[1083,7]]},"61":{"position":[[853,8]]}},"keywords":{}}],["befor",{"_index":140,"title":{},"content":{"8":{"position":[[69,6]]},"19":{"position":[[384,6]]},"37":{"position":[[1078,6]]},"38":{"position":[[135,6]]},"44":{"position":[[107,6],[285,6]]},"57":{"position":[[5655,6]]},"58":{"position":[[445,6],[1172,6],[1693,6],[2378,6],[2509,6]]}},"keywords":{}}],["behalf",{"_index":319,"title":{},"content":{"16":{"position":[[211,6]]}},"keywords":{}}],["behav",{"_index":905,"title":{},"content":{"57":{"position":[[137,7]]}},"keywords":{}}],["behind",{"_index":734,"title":{},"content":{"39":{"position":[[252,6]]}},"keywords":{}}],["below",{"_index":117,"title":{},"content":{"7":{"position":[[17,5]]},"8":{"position":[[62,6]]},"27":{"position":[[236,6]]},"57":{"position":[[504,6]]},"58":{"position":[[366,6]]}},"keywords":{}}],["benchmark",{"_index":400,"title":{},"content":{"19":{"position":[[354,12]]}},"keywords":{}}],["benefici",{"_index":976,"title":{},"content":{"57":{"position":[[3855,10]]}},"keywords":{}}],["best",{"_index":360,"title":{},"content":{"18":{"position":[[153,4]]},"37":{"position":[[902,4]]}},"keywords":{}}],["better",{"_index":1151,"title":{},"content":{"61":{"position":[[1800,6]]}},"keywords":{}}],["between",{"_index":321,"title":{},"content":{"16":{"position":[[394,7]]},"22":{"position":[[70,7]]},"23":{"position":[[338,7]]},"50":{"position":[[168,7]]},"58":{"position":[[879,7],[2902,7],[5335,7]]}},"keywords":{}}],["beyond",{"_index":536,"title":{},"content":{"24":{"position":[[873,6]]}},"keywords":{}}],["bff",{"_index":312,"title":{"16":{"position":[[21,6]]}},"content":{"16":{"position":[[2,3],[177,3],[316,3],[589,4],[722,3],[1113,3]]},"17":{"position":[[35,3],[190,3],[249,3],[403,3]]},"18":{"position":[[31,3],[99,3],[310,3],[584,3],[669,3]]},"19":{"position":[[8,3]]},"21":{"position":[[72,3],[152,3],[521,3]]},"22":{"position":[[0,3],[244,3],[385,3]]},"23":{"position":[[0,3],[282,3],[366,3],[383,3],[634,3],[650,4]]},"24":{"position":[[26,5],[248,3],[415,3]]}},"keywords":{}}],["big",{"_index":412,"title":{},"content":{"20":{"position":[[41,3]]}},"keywords":{}}],["bit",{"_index":621,"title":{},"content":{"27":{"position":[[438,4]]}},"keywords":{}}],["blog",{"_index":1,"title":{"0":{"position":[[5,4]]},"1":{"position":[[6,4]]},"2":{"position":[[4,4]]}},"content":{"0":{"position":[[35,4],[93,4]]},"2":{"position":[[0,4],[111,4]]},"3":{"position":[[11,8],[48,4],[107,4],[131,4],[177,4],[285,4],[333,4],[355,4],[407,5],[449,5]]}},"keywords":{}}],["blue",{"_index":440,"title":{},"content":{"21":{"position":[[334,4]]}},"keywords":{}}],["blueprint",{"_index":636,"title":{"36":{"position":[[26,12]]}},"content":{"29":{"position":[[286,10]]},"35":{"position":[[127,13]]}},"keywords":{}}],["bodi",{"_index":233,"title":{},"content":{"11":{"position":[[775,5],[1276,5]]},"25":{"position":[[1054,5]]},"38":{"position":[[276,4]]},"45":{"position":[[358,5]]},"47":{"position":[[380,5]]},"52":{"position":[[96,5]]},"53":{"position":[[155,5]]},"59":{"position":[[1904,5],[1914,4],[2242,5],[2425,5]]}},"keywords":{}}],["boolean",{"_index":1040,"title":{},"content":{"58":{"position":[[1344,7]]}},"keywords":{}}],["booleandefault",{"_index":640,"title":{},"content":{"30":{"position":[[54,15]]},"31":{"position":[[77,15]]}},"keywords":{}}],["bootstrap",{"_index":651,"title":{},"content":{"33":{"position":[[17,10]]}},"keywords":{}}],["both",{"_index":323,"title":{},"content":{"16":{"position":[[469,4]]}},"keywords":{}}],["bottleneck",{"_index":691,"title":{},"content":{"37":{"position":[[301,11]]}},"keywords":{}}],["box",{"_index":349,"title":{},"content":{"17":{"position":[[235,4]]}},"keywords":{}}],["break",{"_index":759,"title":{},"content":{"39":{"position":[[1495,8]]}},"keywords":{}}],["breviti",{"_index":596,"title":{},"content":{"26":{"position":[[567,7],[842,7],[888,7]]}},"keywords":{}}],["brew",{"_index":107,"title":{},"content":{"6":{"position":[[173,4],[202,4],[341,4],[353,4]]}},"keywords":{}}],["bridg",{"_index":454,"title":{},"content":{"22":{"position":[[63,6]]}},"keywords":{}}],["browser",{"_index":571,"title":{},"content":{"26":{"position":[[19,7]]},"27":{"position":[[497,7]]},"57":{"position":[[1512,7]]}},"keywords":{}}],["bug",{"_index":365,"title":{},"content":{"18":{"position":[[263,4]]},"22":{"position":[[323,3]]}},"keywords":{}}],["build",{"_index":104,"title":{},"content":{"5":{"position":[[338,7]]},"13":{"position":[[3,5]]},"63":{"position":[[148,5]]}},"keywords":{}}],["built",{"_index":434,"title":{},"content":{"21":{"position":[[103,5]]},"57":{"position":[[1487,5]]}},"keywords":{}}],["busi",{"_index":982,"title":{},"content":{"57":{"position":[[4124,8]]}},"keywords":{}}],["bypass",{"_index":991,"title":{},"content":{"57":{"position":[[4760,9]]}},"keywords":{}}],["cach",{"_index":191,"title":{},"content":{"10":{"position":[[459,8]]},"19":{"position":[[196,8]]},"36":{"position":[[242,7]]},"57":{"position":[[1052,5]]},"58":{"position":[[4915,7],[4981,7]]}},"keywords":{}}],["call",{"_index":256,"title":{},"content":{"12":{"position":[[287,5]]},"25":{"position":[[350,6]]},"47":{"position":[[124,6]]},"54":{"position":[[281,6]]},"55":{"position":[[222,6]]},"58":{"position":[[4582,5]]},"59":{"position":[[871,5],[1323,5],[1615,5],[1930,5],[3465,5]]}},"keywords":{}}],["can't",{"_index":452,"title":{},"content":{"22":{"position":[[11,5]]}},"keywords":{}}],["canari",{"_index":431,"title":{"21":{"position":[[3,6]]}},"content":{"21":{"position":[[456,6]]}},"keywords":{}}],["capabl",{"_index":847,"title":{},"content":{"47":{"position":[[162,10]]}},"keywords":{}}],["care",{"_index":1141,"title":{},"content":{"61":{"position":[[1174,5]]}},"keywords":{}}],["case",{"_index":224,"title":{},"content":{"11":{"position":[[560,5]]},"19":{"position":[[61,5]]},"22":{"position":[[307,4]]},"46":{"position":[[549,5]]},"53":{"position":[[351,5]]},"57":{"position":[[185,6]]},"59":{"position":[[393,5]]},"61":{"position":[[646,5]]}},"keywords":{}}],["caus",{"_index":506,"title":{},"content":{"24":{"position":[[274,7]]}},"keywords":{}}],["certain",{"_index":1121,"title":{},"content":{"60":{"position":[[800,7]]}},"keywords":{}}],["chain",{"_index":1137,"title":{},"content":{"61":{"position":[[754,5]]}},"keywords":{}}],["challeng",{"_index":279,"title":{},"content":{"13":{"position":[[97,10]]},"14":{"position":[[8,9]]},"15":{"position":[[389,11]]},"16":{"position":[[34,10],[1095,10]]},"17":{"position":[[11,10]]},"18":{"position":[[8,9]]},"24":{"position":[[624,11],[847,9]]}},"keywords":{}}],["chang",{"_index":388,"title":{},"content":{"19":{"position":[[137,7],[469,8]]},"20":{"position":[[282,6]]},"21":{"position":[[6,6],[137,7],[177,7]]},"22":{"position":[[191,6]]},"39":{"position":[[368,7],[555,7],[844,6],[1430,8],[1504,7]]},"48":{"position":[[14,7]]}},"keywords":{}}],["channel",{"_index":768,"title":{},"content":{"39":{"position":[[1720,8]]},"58":{"position":[[2180,9]]}},"keywords":{}}],["characterist",{"_index":755,"title":{},"content":{"39":{"position":[[1365,14]]}},"keywords":{}}],["check",{"_index":625,"title":{"29":{"position":[[0,6]]}},"content":{"29":{"position":[[4,5],[114,5],[152,5],[189,5]]},"30":{"position":[[79,5]]},"31":{"position":[[102,5],[168,5],[286,5]]},"37":{"position":[[174,5]]},"46":{"position":[[9,5],[110,5],[356,5]]},"57":{"position":[[4569,7]]}},"keywords":{}}],["chosen",{"_index":925,"title":{},"content":{"57":{"position":[[908,6]]}},"keywords":{}}],["citi",{"_index":1130,"title":{},"content":{"61":{"position":[[463,5]]}},"keywords":{}}],["class",{"_index":443,"title":{},"content":{"21":{"position":[[436,5]]},"39":{"position":[[1099,5]]}},"keywords":{}}],["clear",{"_index":475,"title":{},"content":{"23":{"position":[[244,5]]},"57":{"position":[[857,5]]}},"keywords":{}}],["cli",{"_index":119,"title":{"28":{"position":[[0,3]]},"44":{"position":[[10,4]]},"46":{"position":[[21,4]]}},"content":{"7":{"position":[[47,3]]},"44":{"position":[[13,3],[385,4]]},"45":{"position":[[749,3]]},"46":{"position":[[33,3],[215,3]]},"47":{"position":[[144,3]]},"48":{"position":[[197,3],[322,3]]},"59":{"position":[[3778,3],[3903,3]]}},"keywords":{}}],["click",{"_index":49,"title":{},"content":{"2":{"position":[[216,5]]}},"keywords":{}}],["clicked!")}>click",{"_index":47,"title":{},"content":{"2":{"position":[[171,25]]}},"keywords":{}}],["client",{"_index":170,"title":{"12":{"position":[[15,8]]},"38":{"position":[[0,6]]}},"content":{"10":{"position":[[67,7],[370,7],[624,7]]},"11":{"position":[[426,6],[570,6],[1042,6]]},"12":{"position":[[23,6],[111,6],[253,6],[532,6]]},"13":{"position":[[68,6],[136,6],[199,6],[239,6],[394,6]]},"14":{"position":[[46,6],[146,6]]},"15":{"position":[[36,6],[111,6],[270,6]]},"16":{"position":[[149,7],[225,7],[415,6],[487,6]]},"17":{"position":[[337,7]]},"21":{"position":[[116,6]]},"22":{"position":[[82,7]]},"23":{"position":[[350,7]]},"35":{"position":[[4,7],[501,6]]},"38":{"position":[[9,6]]},"39":{"position":[[1548,8]]},"45":{"position":[[454,7]]},"57":{"position":[[3527,7],[3622,6]]},"60":{"position":[[829,7],[1020,7]]},"61":{"position":[[1115,6]]}},"keywords":{}}],["client'",{"_index":674,"title":{},"content":{"35":{"position":[[696,8]]}},"keywords":{}}],["close",{"_index":1026,"title":{},"content":{"58":{"position":[[452,7],[1179,8]]}},"keywords":{}}],["co",{"_index":70,"title":{},"content":{"3":{"position":[[323,2]]}},"keywords":{}}],["code",{"_index":283,"title":{"39":{"position":[[5,5]]}},"content":{"13":{"position":[[401,5]]},"17":{"position":[[140,5]]},"19":{"position":[[132,4]]},"20":{"position":[[144,4]]},"25":{"position":[[1301,5]]},"39":{"position":[[997,4]]}},"keywords":{}}],["combin",{"_index":200,"title":{},"content":{"11":{"position":[[41,9],[167,9],[634,8],[1058,7]]},"13":{"position":[[315,9]]},"16":{"position":[[1013,9]]},"63":{"position":[[84,7]]}},"keywords":{}}],["come",{"_index":712,"title":{},"content":{"37":{"position":[[1216,6]]}},"keywords":{}}],["command",{"_index":90,"title":{},"content":{"5":{"position":[[122,7]]},"6":{"position":[[147,7]]},"7":{"position":[[168,7]]},"8":{"position":[[226,8],[291,7],[434,8],[524,7],[769,7]]},"27":{"position":[[30,7],[179,7]]},"29":{"position":[[10,7],[62,7],[120,8],[195,7]]},"31":{"position":[[174,7]]},"32":{"position":[[10,7],[232,8],[307,7]]},"33":{"position":[[9,7],[157,7]]},"44":{"position":[[532,9]]},"46":{"position":[[15,8]]}},"keywords":{}}],["comment",{"_index":9,"title":{},"content":{"0":{"position":[[76,7]]},"39":{"position":[[379,8]]},"52":{"position":[[110,9],[120,9]]},"55":{"position":[[109,9],[315,8]]}},"keywords":{}}],["commentsforus",{"_index":900,"title":{},"content":{"55":{"position":[[92,16]]}},"keywords":{}}],["commit",{"_index":523,"title":{},"content":{"24":{"position":[[666,9]]}},"keywords":{}}],["common",{"_index":438,"title":{},"content":{"21":{"position":[[291,6]]}},"keywords":{}}],["commonli",{"_index":1097,"title":{},"content":{"59":{"position":[[1329,8]]}},"keywords":{}}],["commun",{"_index":322,"title":{},"content":{"16":{"position":[[452,11]]},"24":{"position":[[152,13]]},"35":{"position":[[675,11]]},"58":{"position":[[4040,12]]}},"keywords":{}}],["compani",{"_index":398,"title":{},"content":{"19":{"position":[[327,9]]},"21":{"position":[[546,9]]},"23":{"position":[[456,7]]}},"keywords":{}}],["compat",{"_index":457,"title":{},"content":{"22":{"position":[[201,10]]}},"keywords":{}}],["compel",{"_index":528,"title":{},"content":{"24":{"position":[[743,10]]}},"keywords":{}}],["compelet",{"_index":160,"title":{},"content":{"8":{"position":[[698,11]]}},"keywords":{}}],["compil",{"_index":858,"title":{},"content":{"48":{"position":[[326,8]]},"58":{"position":[[4354,11]]},"59":{"position":[[3907,8]]},"62":{"position":[[279,7]]}},"keywords":{}}],["complet",{"_index":130,"title":{},"content":{"7":{"position":[[298,10]]},"11":{"position":[[1321,8]]}},"keywords":{}}],["complex",{"_index":273,"title":{"13":{"position":[[13,11]]}},"content":{"13":{"position":[[181,10],[376,10]]},"17":{"position":[[421,7]]},"21":{"position":[[402,7]]},"57":{"position":[[6438,7]]},"63":{"position":[[159,7],[1457,7]]}},"keywords":{}}],["compon",{"_index":192,"title":{},"content":{"10":{"position":[[491,9]]},"16":{"position":[[355,9]]},"35":{"position":[[71,10]]},"36":{"position":[[430,9]]}},"keywords":{}}],["compos",{"_index":243,"title":{},"content":{"11":{"position":[[1227,8]]},"14":{"position":[[270,8]]},"16":{"position":[[298,8],[842,8]]},"25":{"position":[[53,7],[293,7]]},"26":{"position":[[941,7]]},"37":{"position":[[333,8]]}},"keywords":{}}],["composit",{"_index":197,"title":{"11":{"position":[[4,12]]},"12":{"position":[[0,11]]},"36":{"position":[[0,11]]},"63":{"position":[[9,12]]}},"content":{"11":{"position":[[4,11],[271,11]]},"12":{"position":[[4,11]]},"13":{"position":[[36,11],[117,11]]},"14":{"position":[[27,11]]},"15":{"position":[[17,11],[359,11],[492,11]]},"16":{"position":[[52,11],[196,11],[915,11]]},"29":{"position":[[30,11],[326,11]]},"31":{"position":[[53,11]]},"32":{"position":[[174,11]]},"35":{"position":[[91,11]]},"36":{"position":[[4,11]]},"37":{"position":[[9,11],[219,11],[399,11],[925,11]]},"39":{"position":[[25,11],[267,12]]},"63":{"position":[[40,11],[1422,11]]}},"keywords":{}}],["comprehens",{"_index":903,"title":{},"content":{"57":{"position":[[66,13]]}},"keywords":{}}],["compris",{"_index":675,"title":{},"content":{"36":{"position":[[103,9]]}},"keywords":{}}],["concept",{"_index":1161,"title":{},"content":{"63":{"position":[[29,7]]}},"keywords":{}}],["concern",{"_index":468,"title":{},"content":{"23":{"position":[[63,8]]},"57":{"position":[[5803,9]]}},"keywords":{}}],["conclus",{"_index":1147,"title":{},"content":{"61":{"position":[[1677,11]]}},"keywords":{}}],["condit",{"_index":264,"title":{},"content":{"12":{"position":[[406,10],[514,10]]}},"keywords":{}}],["config",{"_index":79,"title":{},"content":{"3":{"position":[[480,7]]}},"keywords":{}}],["configur",{"_index":541,"title":{"25":{"position":[[0,13]]}},"content":{"25":{"position":[[0,13]]},"32":{"position":[[89,15],[144,15]]},"33":{"position":[[206,14]]},"44":{"position":[[139,14]]},"57":{"position":[[94,15],[341,14],[990,14],[1382,13],[2218,13],[2394,15],[2895,13],[3184,15],[3329,13],[4208,13],[5583,13]]},"58":{"position":[[2098,13],[3353,13]]}},"keywords":{}}],["confin",{"_index":537,"title":{},"content":{"24":{"position":[[884,8]]}},"keywords":{}}],["conform",{"_index":986,"title":{},"content":{"57":{"position":[[4354,10]]}},"keywords":{}}],["confus",{"_index":473,"title":{},"content":{"23":{"position":[[175,9]]}},"keywords":{}}],["conjunct",{"_index":261,"title":{},"content":{"12":{"position":[[375,11]]}},"keywords":{}}],["connect",{"_index":1017,"title":{},"content":{"58":{"position":[[84,11],[124,10],[419,10],[465,12],[658,11],[932,11],[1126,10],[1427,10],[2473,10],[2706,10],[2959,11]]}},"keywords":{}}],["connecttimeout",{"_index":1053,"title":{},"content":{"58":{"position":[[2428,15]]}},"keywords":{}}],["consectetur",{"_index":19,"title":{},"content":{"0":{"position":[[154,11],[333,11],[512,11],[691,11],[870,11],[1049,11],[1228,11],[1407,11],[1586,11],[1765,11],[1944,11],[2123,11],[2302,11],[2481,11],[2660,11],[2839,11]]},"1":{"position":[[28,11]]}},"keywords":{}}],["consequat",{"_index":31,"title":{},"content":{"0":{"position":[[267,10],[446,10],[625,10],[804,10],[983,10],[1162,10],[1341,10],[1520,10],[1699,10],[1878,10],[2057,10],[2236,10],[2415,10],[2594,10],[2773,10],[2952,10]]},"1":{"position":[[141,10]]}},"keywords":{}}],["consid",{"_index":214,"title":{},"content":{"11":{"position":[[398,8],[1195,10]]},"41":{"position":[[0,8]]},"57":{"position":[[3920,8],[4953,8]]},"61":{"position":[[284,8]]}},"keywords":{}}],["consist",{"_index":741,"title":{},"content":{"39":{"position":[[527,10]]},"58":{"position":[[4101,12]]}},"keywords":{}}],["consol",{"_index":1160,"title":{},"content":{"62":{"position":[[455,8]]}},"keywords":{}}],["consolid",{"_index":860,"title":{},"content":{"48":{"position":[[396,13]]},"59":{"position":[[3977,13]]}},"keywords":{}}],["const",{"_index":1153,"title":{"62":{"position":[[0,7]]}},"content":{"62":{"position":[[4,6],[223,5]]}},"keywords":{}}],["const(data",{"_index":1155,"title":{},"content":{"62":{"position":[[132,12]]}},"keywords":{}}],["constant",{"_index":705,"title":{},"content":{"37":{"position":[[1032,8]]},"57":{"position":[[2385,8]]},"62":{"position":[[42,8]]}},"keywords":{}}],["construct",{"_index":563,"title":{},"content":{"25":{"position":[[869,9]]},"36":{"position":[[81,12]]}},"keywords":{}}],["consum",{"_index":774,"title":{},"content":{"41":{"position":[[50,9]]}},"keywords":{}}],["consumpt",{"_index":718,"title":{"38":{"position":[[7,12]]}},"content":{},"keywords":{}}],["contain",{"_index":150,"title":{},"content":{"8":{"position":[[405,9],[571,10]]},"11":{"position":[[1131,8]]},"20":{"position":[[104,8]]},"53":{"position":[[583,9],[696,10]]},"58":{"position":[[3899,10]]},"59":{"position":[[1024,8]]}},"keywords":{}}],["content",{"_index":550,"title":{},"content":{"25":{"position":[[405,8]]}},"keywords":{}}],["context",{"_index":867,"title":{"49":{"position":[[0,7]]},"50":{"position":[[0,7]]}},"content":{"50":{"position":[[48,7],[191,7],[268,7],[328,7]]},"53":{"position":[[17,7],[437,7]]},"55":{"position":[[266,8]]},"59":{"position":[[3009,7]]}},"keywords":{}}],["control",{"_index":335,"title":{},"content":{"16":{"position":[[898,7]]},"29":{"position":[[231,7]]},"39":{"position":[[862,11],[1164,7]]},"57":{"position":[[1058,7]]},"58":{"position":[[37,7]]}},"keywords":{}}],["conundrum",{"_index":527,"title":{},"content":{"24":{"position":[[728,9]]}},"keywords":{}}],["conveni",{"_index":69,"title":{},"content":{"3":{"position":[[309,10]]}},"keywords":{}}],["convent",{"_index":538,"title":{},"content":{"24":{"position":[[896,12]]}},"keywords":{}}],["convert",{"_index":861,"title":{},"content":{"48":{"position":[[504,7]]},"59":{"position":[[2379,9]]}},"keywords":{}}],["coordin",{"_index":521,"title":{},"content":{"24":{"position":[[591,13]]}},"keywords":{}}],["correct",{"_index":993,"title":{},"content":{"57":{"position":[[4893,7]]}},"keywords":{}}],["correctli",{"_index":95,"title":{},"content":{"5":{"position":[[211,9]]},"6":{"position":[[258,9]]}},"keywords":{}}],["correspond",{"_index":671,"title":{},"content":{"35":{"position":[[568,13]]}},"keywords":{}}],["cost",{"_index":800,"title":{},"content":{"43":{"position":[[856,6]]},"57":{"position":[[4556,4]]}},"keywords":{}}],["costlier",{"_index":425,"title":{},"content":{"20":{"position":[[263,9]]}},"keywords":{}}],["coupl",{"_index":451,"title":{"22":{"position":[[3,7]]}},"content":{"22":{"position":[[430,8]]}},"keywords":{}}],["cover",{"_index":618,"title":{},"content":{"27":{"position":[[411,5]]}},"keywords":{}}],["cpu",{"_index":302,"title":{},"content":{"15":{"position":[[309,4]]},"16":{"position":[[759,3]]}},"keywords":{}}],["creat",{"_index":42,"title":{},"content":{"2":{"position":[[92,6]]},"11":{"position":[[68,6],[196,8],[1101,6]]},"16":{"position":[[994,6]]},"25":{"position":[[336,6],[665,6],[957,6]]},"27":{"position":[[122,7]]},"33":{"position":[[55,7],[221,8]]},"39":{"position":[[57,7]]}},"keywords":{}}],["createus",{"_index":1107,"title":{},"content":{"59":{"position":[[2305,10]]}},"keywords":{}}],["createuser(input",{"_index":1099,"title":{},"content":{"59":{"position":[[1462,17],[2148,17],[2651,17]]}},"keywords":{}}],["creation",{"_index":655,"title":{},"content":{"33":{"position":[[193,8]]}},"keywords":{}}],["credenti",{"_index":297,"title":{},"content":{"15":{"position":[[193,12]]}},"keywords":{}}],["critic",{"_index":680,"title":{},"content":{"36":{"position":[[292,8]]}},"keywords":{}}],["cross",{"_index":466,"title":{},"content":{"23":{"position":[[49,5]]}},"keywords":{}}],["crucial",{"_index":806,"title":{},"content":{"43":{"position":[[1027,7]]},"57":{"position":[[6198,7]]}},"keywords":{}}],["culmin",{"_index":790,"title":{},"content":{"43":{"position":[[568,10]]}},"keywords":{}}],["curl",{"_index":115,"title":{"7":{"position":[[0,5]]}},"content":{"7":{"position":[[67,4]]},"38":{"position":[[170,4]]},"42":{"position":[[48,4]]},"43":{"position":[[110,4]]}},"keywords":{}}],["current",{"_index":458,"title":{},"content":{"22":{"position":[[221,7]]},"25":{"position":[[848,7]]},"45":{"position":[[551,9]]},"51":{"position":[[38,7]]},"52":{"position":[[33,7]]}},"keywords":{}}],["custom",{"_index":350,"title":{},"content":{"17":{"position":[[276,6]]},"19":{"position":[[33,6]]},"58":{"position":[[1805,6]]},"59":{"position":[[2476,9]]}},"keywords":{}}],["cut",{"_index":467,"title":{},"content":{"23":{"position":[[55,7]]}},"keywords":{}}],["cycl",{"_index":397,"title":{},"content":{"19":{"position":[[310,6]]}},"keywords":{}}],["data",{"_index":249,"title":{},"content":{"12":{"position":[[146,5],[309,4]]},"25":{"position":[[176,5]]},"36":{"position":[[63,4]]},"37":{"position":[[600,4],[1060,4]]},"38":{"position":[[224,4]]},"41":{"position":[[60,4]]},"45":{"position":[[533,5],[677,5]]},"46":{"position":[[764,5]]},"50":{"position":[[139,4]]},"57":{"position":[[2635,4],[2948,4],[4142,4],[5528,5]]},"58":{"position":[[3642,4],[5054,4]]},"59":{"position":[[1985,4],[3437,4]]},"60":{"position":[[338,4],[585,4],[808,4]]},"61":{"position":[[32,4],[173,4],[238,4],[1127,4],[1751,4]]},"63":{"position":[[186,5],[225,4],[1114,4],[1608,4]]}},"keywords":{}}],["date",{"_index":61,"title":{},"content":{"3":{"position":[[187,4]]}},"keywords":{}}],["day",{"_index":702,"title":{},"content":{"37":{"position":[[976,3]]}},"keywords":{}}],["debug",{"_index":977,"title":{},"content":{"57":{"position":[[3889,9]]}},"keywords":{}}],["decis",{"_index":479,"title":{},"content":{"23":{"position":[[436,9]]}},"keywords":{}}],["deeper",{"_index":838,"title":{},"content":{"46":{"position":[[263,6]]}},"keywords":{}}],["default",{"_index":657,"title":{},"content":{"33":{"position":[[260,8]]},"57":{"position":[[602,7],[1221,8],[3704,8],[4582,8],[5287,7],[5876,7]]},"58":{"position":[[195,7],[4142,7],[5102,8]]},"59":{"position":[[627,7],[1410,7]]}},"keywords":{}}],["defin",{"_index":324,"title":{},"content":{"16":{"position":[[527,7]]},"36":{"position":[[480,7]]},"45":{"position":[[561,8]]},"54":{"position":[[318,7]]},"57":{"position":[[2246,6],[4304,7],[5831,8]]},"58":{"position":[[1611,7]]},"63":{"position":[[212,8]]}},"keywords":{}}],["degrad",{"_index":801,"title":{},"content":{"43":{"position":[[869,8]]}},"keywords":{}}],["delay",{"_index":500,"title":{},"content":{"24":{"position":[[166,6]]},"58":{"position":[[5302,5],[5313,5],[5464,6]]}},"keywords":{}}],["delet",{"_index":77,"title":{},"content":{"3":{"position":[[418,6]]},"59":{"position":[[1375,7]]}},"keywords":{}}],["demand",{"_index":520,"title":{},"content":{"24":{"position":[[574,7]]}},"keywords":{}}],["demonstr",{"_index":786,"title":{},"content":{"43":{"position":[[337,12]]},"45":{"position":[[691,11]]}},"keywords":{}}],["denial",{"_index":1014,"title":{},"content":{"57":{"position":[[6384,6]]}},"keywords":{}}],["denot",{"_index":885,"title":{},"content":{"53":{"position":[[5,7]]}},"keywords":{}}],["depend",{"_index":359,"title":{},"content":{"18":{"position":[[115,9]]},"58":{"position":[[4056,9]]}},"keywords":{}}],["deploy",{"_index":347,"title":{},"content":{"17":{"position":[[215,8]]},"20":{"position":[[313,10]]},"21":{"position":[[54,10],[345,12]]},"22":{"position":[[20,8]]},"39":{"position":[[1288,8],[1485,9]]},"57":{"position":[[4004,11]]}},"keywords":{}}],["depth",{"_index":1149,"title":{},"content":{"61":{"position":[[1783,6]]}},"keywords":{}}],["deriv",{"_index":732,"title":{},"content":{"39":{"position":[[141,7]]},"59":{"position":[[2979,7]]}},"keywords":{}}],["describ",{"_index":854,"title":{},"content":{"48":{"position":[[4,9]]},"50":{"position":[[206,9]]}},"keywords":{}}],["descript",{"_index":1158,"title":{},"content":{"62":{"position":[[414,11]]}},"keywords":{}}],["design",{"_index":497,"title":{},"content":{"24":{"position":[[47,8]]},"43":{"position":[[1073,6]]},"57":{"position":[[1582,11]]},"58":{"position":[[2151,10],[4998,8]]}},"keywords":{}}],["desir",{"_index":1116,"title":{},"content":{"60":{"position":[[368,7]]}},"keywords":{}}],["destin",{"_index":1052,"title":{},"content":{"58":{"position":[[2415,12]]}},"keywords":{}}],["detail",{"_index":620,"title":{},"content":{"27":{"position":[[426,6]]},"35":{"position":[[346,7]]},"41":{"position":[[140,7]]},"43":{"position":[[49,8],[273,8],[560,7]]},"57":{"position":[[482,7]]},"58":{"position":[[344,7]]},"59":{"position":[[3480,7]]}},"keywords":{}}],["detect",{"_index":629,"title":{},"content":{"29":{"position":[[74,6]]},"30":{"position":[[23,9]]},"46":{"position":[[223,8]]}},"keywords":{}}],["determin",{"_index":1000,"title":{},"content":{"57":{"position":[[5597,10]]},"58":{"position":[[1363,10]]}},"keywords":{}}],["dev",{"_index":839,"title":{},"content":{"46":{"position":[[352,3]]},"57":{"position":[[4843,3]]}},"keywords":{}}],["develop",{"_index":337,"title":{},"content":{"16":{"position":[[971,10]]},"18":{"position":[[132,10]]},"19":{"position":[[298,11]]},"24":{"position":[[185,12],[918,11]]},"37":{"position":[[261,10],[945,10],[1168,9]]},"39":{"position":[[1196,9]]},"41":{"position":[[15,10]]},"43":{"position":[[1084,11]]},"44":{"position":[[38,11],[266,11]]},"57":{"position":[[1554,11],[1995,12],[3873,11]]}},"keywords":{}}],["devop",{"_index":449,"title":{},"content":{"21":{"position":[[564,6]]}},"keywords":{}}],["dictat",{"_index":904,"title":{},"content":{"57":{"position":[[113,8],[1396,8]]}},"keywords":{}}],["differ",{"_index":212,"title":{},"content":{"11":{"position":[[342,9],[615,9]]},"14":{"position":[[188,9]]},"23":{"position":[[754,9]]},"29":{"position":[[239,9]]}},"keywords":{}}],["differenti",{"_index":746,"title":{},"content":{"39":{"position":[[748,14]]},"48":{"position":[[632,13]]}},"keywords":{}}],["difficult",{"_index":354,"title":{},"content":{"17":{"position":[[433,9]]},"19":{"position":[[77,9]]}},"keywords":{}}],["dignissim",{"_index":24,"title":{},"content":{"0":{"position":[[206,9],[385,9],[564,9],[743,9],[922,9],[1101,9],[1280,9],[1459,9],[1638,9],[1817,9],[1996,9],[2175,9],[2354,9],[2533,9],[2712,9],[2891,9]]},"1":{"position":[[80,9]]}},"keywords":{}}],["diminish",{"_index":507,"title":{},"content":{"24":{"position":[[304,10]]}},"keywords":{}}],["direct",{"_index":330,"title":{},"content":{"16":{"position":[[684,6]]},"25":{"position":[[1161,11]]},"47":{"position":[[273,9]]},"48":{"position":[[64,9]]},"57":{"position":[[12,10]]},"58":{"position":[[13,9],[4882,7]]}},"keywords":{}}],["directli",{"_index":943,"title":{},"content":{"57":{"position":[[2114,8],[3573,9]]},"61":{"position":[[1032,8]]}},"keywords":{}}],["directori",{"_index":56,"title":{},"content":{"3":{"position":[[112,10],[430,10]]},"7":{"position":[[282,10],[399,10]]}},"keywords":{}}],["disabl",{"_index":940,"title":{},"content":{"57":{"position":[[2028,7],[3929,9],[4486,7],[4962,9],[5430,9]]}},"keywords":{}}],["discern",{"_index":981,"title":{},"content":{"57":{"position":[[4083,10]]}},"keywords":{}}],["discord",{"_index":767,"title":{},"content":{"39":{"position":[[1712,7]]}},"keywords":{}}],["discov",{"_index":395,"title":{},"content":{"19":{"position":[[270,10]]}},"keywords":{}}],["discuss",{"_index":809,"title":{},"content":{"43":{"position":[[1177,9]]}},"keywords":{}}],["display",{"_index":217,"title":{},"content":{"11":{"position":[[454,7]]},"29":{"position":[[271,7]]},"31":{"position":[[24,7]]}},"keywords":{}}],["dive",{"_index":816,"title":{},"content":{"44":{"position":[[292,6]]}},"keywords":{}}],["do",{"_index":480,"title":{},"content":{"23":{"position":[[510,5]]},"24":{"position":[[268,5]]}},"keywords":{}}],["docker",{"_index":139,"title":{"8":{"position":[[0,7]]}},"content":{"8":{"position":[[37,7],[93,6],[193,6],[235,6],[342,6],[364,6],[398,6],[443,6],[564,6]]}},"keywords":{}}],["document",{"_index":684,"title":{},"content":{"36":{"position":[[408,8]]}},"keywords":{}}],["docusauru",{"_index":35,"title":{},"content":{"2":{"position":[[19,10]]},"3":{"position":[[0,10],[469,10]]}},"keywords":{}}],["doesn't",{"_index":301,"title":{},"content":{"15":{"position":[[277,7]]},"60":{"position":[[350,7]]},"62":{"position":[[375,7]]},"63":{"position":[[1697,7]]}},"keywords":{}}],["dolor",{"_index":16,"title":{},"content":{"0":{"position":[[138,5],[290,5],[317,5],[469,5],[496,5],[648,5],[675,5],[827,5],[854,5],[1006,5],[1033,5],[1185,5],[1212,5],[1364,5],[1391,5],[1543,5],[1570,5],[1722,5],[1749,5],[1901,5],[1928,5],[2080,5],[2107,5],[2259,5],[2286,5],[2438,5],[2465,5],[2617,5],[2644,5],[2796,5],[2823,5],[2975,5]]},"1":{"position":[[12,5],[164,5]]}},"keywords":{}}],["dolorem"",{"_index":609,"title":{},"content":{"26":{"position":[[792,13]]}},"keywords":{}}],["don't",{"_index":75,"title":{},"content":{"3":{"position":[[394,5]]},"5":{"position":[[7,5]]},"6":{"position":[[7,5]]}},"keywords":{}}],["done",{"_index":110,"title":{},"content":{"6":{"position":[[304,5]]},"11":{"position":[[121,4]]}},"keywords":{}}],["door"",{"_index":195,"title":{},"content":{"10":{"position":[[609,10]]}},"keywords":{}}],["down",{"_index":378,"title":{},"content":{"18":{"position":[[727,4]]},"63":{"position":[[663,4]]}},"keywords":{}}],["download",{"_index":143,"title":{},"content":{"8":{"position":[[145,8]]}},"keywords":{}}],["downstream",{"_index":393,"title":{},"content":{"19":{"position":[[221,10]]}},"keywords":{}}],["downtim",{"_index":802,"title":{},"content":{"43":{"position":[[934,8]]}},"keywords":{}}],["dramat",{"_index":328,"title":{},"content":{"16":{"position":[[598,12]]}},"keywords":{}}],["drill",{"_index":1166,"title":{},"content":{"63":{"position":[[657,5]]}},"keywords":{}}],["due",{"_index":803,"title":{},"content":{"43":{"position":[[943,3]]}},"keywords":{}}],["durat",{"_index":1002,"title":{},"content":{"57":{"position":[[5620,8],[6132,8]]}},"keywords":{}}],["dure",{"_index":100,"title":{},"content":{"5":{"position":[[269,6]]},"43":{"position":[[1062,6]]},"57":{"position":[[2291,6],[3866,6]]}},"keywords":{}}],["dynam",{"_index":530,"title":{},"content":{"24":{"position":[[779,8]]},"35":{"position":[[542,11]]},"59":{"position":[[1033,7],[1685,7],[2951,7],[3317,11]]}},"keywords":{}}],["ea",{"_index":600,"title":{},"content":{"26":{"position":[[696,2]]}},"keywords":{}}],["each",{"_index":193,"title":{},"content":{"10":{"position":[[540,4]]},"11":{"position":[[514,4]]},"16":{"position":[[126,4]]},"17":{"position":[[244,4]]},"19":{"position":[[52,4]]},"23":{"position":[[451,4]]},"25":{"position":[[278,4]]},"31":{"position":[[217,4]]},"32":{"position":[[350,4]]},"36":{"position":[[425,4]]},"37":{"position":[[576,4],[659,4]]},"39":{"position":[[690,4],[839,4],[1005,4],[1442,4]]},"42":{"position":[[153,4]]},"43":{"position":[[10,4],[254,4],[541,4],[695,4]]},"45":{"position":[[493,4],[603,4]]},"46":{"position":[[689,4]]},"48":{"position":[[646,4]]},"57":{"position":[[4331,4]]},"58":{"position":[[887,4],[2910,4],[4239,4],[5343,4]]}},"keywords":{}}],["easier",{"_index":1176,"title":{},"content":{"63":{"position":[[1846,6]]}},"keywords":{}}],["easili",{"_index":980,"title":{},"content":{"57":{"position":[[4076,6]]}},"keywords":{}}],["easily.immut",{"_index":751,"title":{},"content":{"39":{"position":[[1214,20]]}},"keywords":{}}],["editor",{"_index":574,"title":{},"content":{"26":{"position":[[114,6]]}},"keywords":{}}],["effect",{"_index":309,"title":{},"content":{"15":{"position":[[467,9]]},"35":{"position":[[663,11]]},"47":{"position":[[15,9]]},"48":{"position":[[855,11]]}},"keywords":{}}],["effici",{"_index":308,"title":{},"content":{"15":{"position":[[453,9]]},"35":{"position":[[729,9]]},"48":{"position":[[929,10]]}},"keywords":{}}],["effort",{"_index":373,"title":{},"content":{"18":{"position":[[512,6]]}},"keywords":{}}],["eg",{"_index":692,"title":{},"content":{"37":{"position":[[346,3],[1018,3]]},"62":{"position":[[80,3]]}},"keywords":{}}],["elementum",{"_index":23,"title":{},"content":{"0":{"position":[[196,9],[375,9],[554,9],[733,9],[912,9],[1091,9],[1270,9],[1449,9],[1628,9],[1807,9],[1986,9],[2165,9],[2344,9],[2523,9],[2702,9],[2881,9]]},"1":{"position":[[70,9]]}},"keywords":{}}],["elimin",{"_index":1140,"title":{},"content":{"61":{"position":[[981,10]]}},"keywords":{}}],["elit",{"_index":21,"title":{},"content":{"0":{"position":[[177,5],[356,5],[535,5],[714,5],[893,5],[1072,5],[1251,5],[1430,5],[1609,5],[1788,5],[1967,5],[2146,5],[2325,5],[2504,5],[2683,5],[2862,5]]},"1":{"position":[[51,5]]}},"keywords":{}}],["email",{"_index":240,"title":{},"content":{"11":{"position":[[1021,6]]},"25":{"position":[[779,6]]},"38":{"position":[[293,5]]},"45":{"position":[[262,6]]},"61":{"position":[[397,6]]}},"keywords":{}}],["emb",{"_index":1154,"title":{},"content":{"62":{"position":[[34,5]]}},"keywords":{}}],["emphas",{"_index":1071,"title":{},"content":{"58":{"position":[[4076,11]]}},"keywords":{}}],["enabl",{"_index":318,"title":{},"content":{"16":{"position":[[166,6]]},"31":{"position":[[12,7]]},"57":{"position":[[3729,7],[4832,7],[5199,8]]},"58":{"position":[[1796,8]]}},"keywords":{}}],["enablecachecontrolhead",{"_index":927,"title":{},"content":{"57":{"position":[[935,25],[965,24]]}},"keywords":{}}],["enablegraphiql",{"_index":935,"title":{},"content":{"57":{"position":[[1361,15],[1863,15]]}},"keywords":{}}],["enablehttpcach",{"_index":1079,"title":{},"content":{"58":{"position":[[4849,16]]}},"keywords":{}}],["enableintrospect",{"_index":968,"title":{},"content":{"57":{"position":[[3367,20]]}},"keywords":{}}],["enablequeryvalid",{"_index":983,"title":{},"content":{"57":{"position":[[4159,22],[4186,21],[4721,21]]}},"keywords":{}}],["enableresponsevalid",{"_index":994,"title":{},"content":{"57":{"position":[[5001,25],[5307,24]]}},"keywords":{}}],["encapsul",{"_index":679,"title":{},"content":{"36":{"position":[[279,12]]}},"keywords":{}}],["encompass",{"_index":664,"title":{},"content":{"35":{"position":[[300,11]]},"36":{"position":[[37,11],[395,12]]}},"keywords":{}}],["end",{"_index":250,"title":{},"content":{"12":{"position":[[167,4],[260,3]]},"23":{"position":[[17,3],[464,4]]}},"keywords":{}}],["endpoint",{"_index":157,"title":{},"content":{"8":{"position":[[645,8]]},"29":{"position":[[297,10]]},"35":{"position":[[372,9],[419,9]]},"37":{"position":[[1287,8]]},"57":{"position":[[1671,9],[2975,9],[5083,9]]},"58":{"position":[[1724,9]]},"59":{"position":[[846,8],[1015,8]]}},"keywords":{}}],["engin",{"_index":420,"title":{},"content":{"20":{"position":[[189,9]]}},"keywords":{}}],["enhanc",{"_index":498,"title":{},"content":{"24":{"position":[[59,7],[582,8]]},"39":{"position":[[1380,8]]},"48":{"position":[[900,9]]},"57":{"position":[[4020,7],[4522,7]]}},"keywords":{}}],["ensur",{"_index":142,"title":{},"content":{"8":{"position":[[86,6]]},"18":{"position":[[423,6]]},"35":{"position":[[720,8]]},"36":{"position":[[417,7],[504,8]]},"37":{"position":[[1324,8]]},"39":{"position":[[618,7],[1269,8]]},"44":{"position":[[315,6]]},"57":{"position":[[896,6],[2138,7],[3200,6],[4342,7]]},"58":{"position":[[2112,7],[4001,7],[4655,6]]}},"keywords":{}}],["enter",{"_index":575,"title":{},"content":{"26":{"position":[[134,5]]}},"keywords":{}}],["entri",{"_index":180,"title":{},"content":{"10":{"position":[[205,5]]},"18":{"position":[[685,5]]}},"keywords":{}}],["env",{"_index":874,"title":{"54":{"position":[[0,4]]}},"content":{"50":{"position":[[336,4]]},"57":{"position":[[4938,4]]}},"keywords":{}}],["env.api_endpoint",{"_index":898,"title":{},"content":{"54":{"position":[[230,16]]}},"keywords":{}}],["environ",{"_index":133,"title":{},"content":{"7":{"position":[[347,11]]},"54":{"position":[[23,11],[260,11]]},"57":{"position":[[2053,13],[3956,13],[4847,11],[6271,13]]}},"keywords":{}}],["equival",{"_index":1167,"title":{},"content":{"63":{"position":[[737,10]]}},"keywords":{}}],["ero",{"_index":29,"title":{},"content":{"0":{"position":[[254,4],[433,4],[612,4],[791,4],[970,4],[1149,4],[1328,4],[1507,4],[1686,4],[1865,4],[2044,4],[2223,4],[2402,4],[2581,4],[2760,4],[2939,4]]},"1":{"position":[[128,4]]}},"keywords":{}}],["error",{"_index":362,"title":{},"content":{"18":{"position":[[183,5]]},"46":{"position":[[145,6],[412,6]]},"57":{"position":[[4391,6]]},"58":{"position":[[4366,6]]},"62":{"position":[[426,5]]}},"keywords":{}}],["especi",{"_index":941,"title":{},"content":{"57":{"position":[[2067,10],[3301,10],[6246,10]]}},"keywords":{}}],["essenc",{"_index":864,"title":{},"content":{"48":{"position":[[599,8]]}},"keywords":{}}],["essenti",{"_index":891,"title":{},"content":{"53":{"position":[[463,12]]},"57":{"position":[[5693,12]]},"58":{"position":[[3632,9]]},"61":{"position":[[202,11]]}},"keywords":{}}],["est",{"_index":608,"title":{},"content":{"26":{"position":[[788,3]]}},"keywords":{}}],["etc",{"_index":470,"title":{},"content":{"23":{"position":[[141,4]]},"37":{"position":[[1073,4]]},"59":{"position":[[1383,4]]}},"keywords":{}}],["even",{"_index":304,"title":{},"content":{"15":{"position":[[379,4]]},"19":{"position":[[454,4]]},"22":{"position":[[376,4]]},"43":{"position":[[914,4]]},"44":{"position":[[102,4]]}},"keywords":{}}],["eventu",{"_index":410,"title":{},"content":{"20":{"position":[[0,11]]}},"keywords":{}}],["exactli",{"_index":996,"title":{},"content":{"57":{"position":[[5243,7]]}},"keywords":{}}],["examin",{"_index":827,"title":{},"content":{"45":{"position":[[45,10]]}},"keywords":{}}],["exampl",{"_index":213,"title":{"45":{"position":[[16,8]]}},"content":{"11":{"position":[[389,8]]},"25":{"position":[[28,8]]},"31":{"position":[[274,8]]},"32":{"position":[[407,8]]},"51":{"position":[[112,8],[209,8]]},"52":{"position":[[194,7]]},"54":{"position":[[221,8]]},"57":{"position":[[696,8],[2791,8],[4706,7],[5999,8]]},"58":{"position":[[2020,8],[3782,7]]},"59":{"position":[[102,8],[187,8],[1111,8],[1437,8],[1752,8],[2123,8],[2286,7],[2799,8],[3046,8]]},"63":{"position":[[5,7]]}},"keywords":{}}],["except",{"_index":384,"title":{},"content":{"18":{"position":[[833,11]]}},"keywords":{}}],["excepturi",{"_index":593,"title":{},"content":{"26":{"position":[[495,9]]}},"keywords":{}}],["exclud",{"_index":1120,"title":{},"content":{"60":{"position":[[661,7]]}},"keywords":{}}],["execut",{"_index":127,"title":{"26":{"position":[[0,7]]}},"content":{"7":{"position":[[188,8]]},"26":{"position":[[0,7]]},"57":{"position":[[6098,9]]}},"keywords":{}}],["exhaust",{"_index":1016,"title":{},"content":{"57":{"position":[[6457,7]]}},"keywords":{}}],["exist",{"_index":761,"title":{},"content":{"39":{"position":[[1539,8]]}},"keywords":{}}],["expand",{"_index":914,"title":{},"content":{"57":{"position":[[401,6]]}},"keywords":{}}],["expans",{"_index":519,"title":{},"content":{"24":{"position":[[525,9]]}},"keywords":{}}],["expect",{"_index":576,"title":{},"content":{"26":{"position":[[241,6]]},"58":{"position":[[4019,8]]}},"keywords":{}}],["expens",{"_index":463,"title":{},"content":{"22":{"position":[[467,9]]},"57":{"position":[[5517,7]]}},"keywords":{}}],["experi",{"_index":270,"title":{},"content":{"12":{"position":[[565,11]]},"16":{"position":[[706,11]]},"24":{"position":[[72,11]]},"43":{"position":[[883,11]]},"48":{"position":[[949,11]]}},"keywords":{}}],["expertis",{"_index":374,"title":{},"content":{"18":{"position":[[523,10]]}},"keywords":{}}],["explain",{"_index":915,"title":{},"content":{"57":{"position":[[494,9]]},"58":{"position":[[356,9]]}},"keywords":{}}],["explicitli",{"_index":1006,"title":{},"content":{"57":{"position":[[5820,10]]},"58":{"position":[[4186,10]]}},"keywords":{}}],["export",{"_index":137,"title":{},"content":{"7":{"position":[[410,6]]}},"keywords":{}}],["expos",{"_index":155,"title":{},"content":{"8":{"position":[[623,7]]},"21":{"position":[[196,7]]},"57":{"position":[[2092,8],[3276,7]]}},"keywords":{}}],["exposur",{"_index":749,"title":{},"content":{"39":{"position":[[1176,8]]},"57":{"position":[[2197,9]]}},"keywords":{}}],["extend",{"_index":131,"title":{},"content":{"7":{"position":[[330,6]]},"25":{"position":[[796,6]]}},"keywords":{}}],["extern",{"_index":964,"title":{},"content":{"57":{"position":[[3133,8]]}},"keywords":{}}],["externaldata",{"_index":954,"title":{},"content":{"57":{"position":[[2621,13],[2962,12]]}},"keywords":{}}],["extract",{"_index":62,"title":{},"content":{"3":{"position":[[199,9]]},"53":{"position":[[481,10]]},"63":{"position":[[1500,7]]}},"keywords":{}}],["facad",{"_index":487,"title":{},"content":{"23":{"position":[[675,7]]}},"keywords":{}}],["facer",{"_index":590,"title":{},"content":{"26":{"position":[[459,6]]}},"keywords":{}}],["failur",{"_index":358,"title":{},"content":{"18":{"position":[[86,8],[625,8]]}},"keywords":{}}],["fake",{"_index":546,"title":{},"content":{"25":{"position":[[171,4]]}},"keywords":{}}],["fals",{"_index":78,"title":{},"content":{"3":{"position":[[455,5]]},"30":{"position":[[70,5]]},"31":{"position":[[93,5]]},"57":{"position":[[1245,5],[3781,6],[4655,6],[4753,6],[5335,6]]},"58":{"position":[[1484,6],[5114,6],[5155,6]]}},"keywords":{}}],["familiar",{"_index":818,"title":{},"content":{"44":{"position":[[331,12]]}},"keywords":{}}],["fast",{"_index":333,"title":{},"content":{"16":{"position":[[779,4]]}},"keywords":{}}],["façad",{"_index":206,"title":{},"content":{"11":{"position":[[230,6]]}},"keywords":{}}],["featur",{"_index":37,"title":{},"content":{"2":{"position":[[39,9]]},"3":{"position":[[20,8]]},"21":{"position":[[87,7]]},"39":{"position":[[763,7],[1105,7],[1206,7]]},"41":{"position":[[28,7],[100,7]]},"47":{"position":[[247,8]]},"57":{"position":[[1784,7],[3498,7]]},"58":{"position":[[5094,7]]}},"keywords":{}}],["feel",{"_index":765,"title":{},"content":{"39":{"position":[[1676,4]]}},"keywords":{}}],["fervent",{"_index":522,"title":{},"content":{"24":{"position":[[656,9]]}},"keywords":{}}],["fetch",{"_index":126,"title":{"42":{"position":[[0,8]]},"43":{"position":[[0,8]]}},"content":{"7":{"position":[[176,7]]},"8":{"position":[[299,7]]},"12":{"position":[[92,8],[234,8]]},"41":{"position":[[117,8]]},"42":{"position":[[115,7]]},"45":{"position":[[465,5],[651,5]]},"46":{"position":[[738,5]]},"53":{"position":[[680,5]]},"55":{"position":[[309,5]]},"57":{"position":[[2940,7],[3538,5]]},"58":{"position":[[5059,8]]},"59":{"position":[[1123,5]]},"61":{"position":[[52,5],[1132,5],[1756,8]]},"63":{"position":[[751,8],[1099,5],[1598,5]]}},"keywords":{}}],["few",{"_index":338,"title":{},"content":{"16":{"position":[[1091,3]]},"25":{"position":[[1121,3]]}},"keywords":{}}],["field",{"_index":560,"title":{},"content":{"25":{"position":[[693,6],[832,5],[985,6]]},"26":{"position":[[929,7]]},"42":{"position":[[185,5]]},"52":{"position":[[243,5]]},"53":{"position":[[530,6]]},"57":{"position":[[3667,7]]},"59":{"position":[[49,5],[236,5],[286,5],[538,5]]},"60":{"position":[[86,5],[191,5],[308,5],[376,5],[541,5],[671,5],[941,5]]},"61":{"position":[[98,5],[685,5],[763,6],[803,5],[1201,7],[1223,6],[1393,5]]},"62":{"position":[[332,6],[405,6]]},"63":{"position":[[271,6],[323,6],[592,6],[722,6],[866,5],[907,5],[959,5]]}},"keywords":{}}],["file",{"_index":54,"title":{},"content":{"3":{"position":[[81,5]]},"7":{"position":[[245,5]]},"25":{"position":[[345,4],[1080,4],[1108,5],[1267,5]]},"27":{"position":[[108,4]]},"31":{"position":[[202,6],[222,4]]},"32":{"position":[[335,6],[355,4]]},"33":{"position":[[92,5],[114,4],[188,4],[252,4]]},"45":{"position":[[26,4]]},"46":{"position":[[101,5]]}},"keywords":{}}],["filenam",{"_index":63,"title":{},"content":{"3":{"position":[[214,10]]}},"keywords":{}}],["fill",{"_index":485,"title":{},"content":{"23":{"position":[[622,6]]}},"keywords":{}}],["final",{"_index":714,"title":{},"content":{"37":{"position":[[1238,5]]},"58":{"position":[[2409,5]]}},"keywords":{}}],["find",{"_index":84,"title":{},"content":{"5":{"position":[[52,4]]},"6":{"position":[[54,4]]}},"keywords":{}}],["first",{"_index":32,"title":{"1":{"position":[[0,5]]}},"content":{"11":{"position":[[669,5]]},"21":{"position":[[430,5]]},"22":{"position":[[148,6]]},"25":{"position":[[22,5]]},"39":{"position":[[1093,5]]},"42":{"position":[[0,6]]},"43":{"position":[[195,5]]},"58":{"position":[[2174,5]]},"61":{"position":[[1451,5]]}},"keywords":{}}],["firstus",{"_index":1145,"title":{},"content":{"61":{"position":[[1555,10]]}},"keywords":{}}],["fix",{"_index":516,"title":{},"content":{"24":{"position":[[493,4]]}},"keywords":{}}],["flag",{"_index":99,"title":{},"content":{"5":{"position":[[264,4]]},"30":{"position":[[5,4]]}},"keywords":{}}],["flaki",{"_index":262,"title":{},"content":{"12":{"position":[[392,5],[500,5]]}},"keywords":{}}],["flatten",{"_index":1124,"title":{},"content":{"61":{"position":[[85,10]]}},"keywords":{}}],["fledg",{"_index":428,"title":{},"content":{"20":{"position":[[305,7]]}},"keywords":{}}],["flexibl",{"_index":334,"title":{},"content":{"16":{"position":[[882,11]]},"60":{"position":[[45,11]]}},"keywords":{}}],["flow",{"_index":1066,"title":{},"content":{"58":{"position":[[3647,5]]}},"keywords":{}}],["fold",{"_index":706,"title":{},"content":{"37":{"position":[[1041,8]]}},"keywords":{}}],["folder",{"_index":55,"title":{},"content":{"3":{"position":[[91,8],[295,6]]}},"keywords":{}}],["follow",{"_index":89,"title":{},"content":{"5":{"position":[[112,9]]},"6":{"position":[[137,9]]},"7":{"position":[[0,6]]},"8":{"position":[[45,6],[216,9],[424,9]]},"11":{"position":[[660,8],[720,9],[967,9]]},"18":{"position":[[146,6],[570,9]]},"25":{"position":[[395,9]]},"26":{"position":[[144,9]]},"27":{"position":[[20,9],[226,9]]},"29":{"position":[[129,6]]},"32":{"position":[[222,9]]},"39":{"position":[[816,10]]},"47":{"position":[[322,8]]},"50":{"position":[[226,9]]}},"keywords":{}}],["foolproof",{"_index":515,"title":{},"content":{"24":{"position":[[483,9]]}},"keywords":{}}],["forc",{"_index":98,"title":{},"content":{"5":{"position":[[258,5]]}},"keywords":{}}],["format",{"_index":631,"title":{},"content":{"29":{"position":[[141,7]]},"39":{"position":[[388,11]]}},"keywords":{}}],["forward",{"_index":1064,"title":{},"content":{"58":{"position":[[3416,9],[3532,9],[3929,7]]}},"keywords":{}}],["found",{"_index":835,"title":{},"content":{"46":{"position":[[152,6],[419,6]]}},"keywords":{}}],["fragil",{"_index":356,"title":{"18":{"position":[[3,8]]}},"content":{"18":{"position":[[59,7],[604,7]]}},"keywords":{}}],["free",{"_index":544,"title":{},"content":{"25":{"position":[[140,4]]},"39":{"position":[[1681,4]]},"58":{"position":[[4689,4]]}},"keywords":{}}],["frequent",{"_index":435,"title":{},"content":{"21":{"position":[[168,8]]}},"keywords":{}}],["friction",{"_index":495,"title":{"24":{"position":[[18,9]]}},"content":{"24":{"position":[[121,9]]}},"keywords":{}}],["frontend",{"_index":311,"title":{"16":{"position":[[12,8]]}},"content":{"16":{"position":[[140,8],[406,8],[478,8]]},"17":{"position":[[328,8]]},"23":{"position":[[695,8]]},"24":{"position":[[17,8],[348,8],[432,8],[555,8]]}},"keywords":{}}],["full",{"_index":427,"title":{},"content":{"20":{"position":[[300,4]]},"27":{"position":[[67,4]]}},"keywords":{}}],["function",{"_index":203,"title":{},"content":{"11":{"position":[[94,14]]},"16":{"position":[[1027,13]]},"39":{"position":[[443,8]]}},"keywords":{}}],["fusc",{"_index":26,"title":{},"content":{"0":{"position":[[227,5],[406,5],[585,5],[764,5],[943,5],[1122,5],[1301,5],[1480,5],[1659,5],[1838,5],[2017,5],[2196,5],[2375,5],[2554,5],[2733,5],[2912,5]]},"1":{"position":[[101,5]]}},"keywords":{}}],["fusion",{"_index":529,"title":{},"content":{"24":{"position":[[754,6]]}},"keywords":{}}],["g",{"_index":92,"title":{},"content":{"5":{"position":[[155,1]]}},"keywords":{}}],["gap",{"_index":482,"title":{},"content":{"23":{"position":[[589,3]]}},"keywords":{}}],["gateway",{"_index":176,"title":{"23":{"position":[[10,8]]}},"content":{"10":{"position":[[138,8],[154,7],[385,7],[577,7]]},"17":{"position":[[160,8]]},"23":{"position":[[82,7],[211,8],[267,7],[565,8]]}},"keywords":{}}],["gener",{"_index":455,"title":{},"content":{"22":{"position":[[108,10]]},"37":{"position":[[1120,9],[1313,10]]},"43":{"position":[[431,9]]},"48":{"position":[[218,8]]},"59":{"position":[[3799,8]]}},"keywords":{}}],["get",{"_index":424,"title":{},"content":{"20":{"position":[[258,4]]}},"keywords":{}}],["ghcr.io/tailcallhq/tailcall/tc",{"_index":146,"title":{},"content":{"8":{"position":[[247,30],[480,30]]}},"keywords":{}}],["given",{"_index":1009,"title":{},"content":{"57":{"position":[[5993,5]]},"63":{"position":[[196,5]]}},"keywords":{}}],["global",{"_index":895,"title":{},"content":{"54":{"position":[[16,6]]}},"keywords":{}}],["globalresponsetimeout",{"_index":999,"title":{},"content":{"57":{"position":[[5534,22],[5561,21],[6012,21]]}},"keywords":{}}],["go",{"_index":377,"title":{},"content":{"18":{"position":[[721,5]]},"19":{"position":[[245,2]]},"22":{"position":[[140,2]]},"25":{"position":[[44,5]]},"26":{"position":[[31,2]]},"59":{"position":[[862,5]]}},"keywords":{}}],["goe",{"_index":403,"title":{},"content":{"19":{"position":[[400,4]]}},"keywords":{}}],["good",{"_index":1076,"title":{},"content":{"58":{"position":[[4723,5]]}},"keywords":{}}],["govern",{"_index":969,"title":{},"content":{"57":{"position":[[3401,7]]}},"keywords":{}}],["graham"",{"_index":585,"title":{},"content":{"26":{"position":[[388,13]]}},"keywords":{}}],["grant",{"_index":937,"title":{},"content":{"57":{"position":[[1625,5]]}},"keywords":{}}],["graphiql",{"_index":573,"title":{},"content":{"26":{"position":[[81,8],[124,9],[231,9]]},"57":{"position":[[1427,8],[1473,8],[1610,10],[1735,8],[1953,8]]}},"keywords":{}}],["graphql",{"_index":156,"title":{},"content":{"8":{"position":[[637,7]]},"25":{"position":[[63,7],[320,7],[1099,8],[1201,7],[1240,7]]},"32":{"position":[[61,7],[136,7]]},"33":{"position":[[77,7]]},"44":{"position":[[81,7]]},"45":{"position":[[17,8]]},"46":{"position":[[93,7]]},"47":{"position":[[221,8],[304,7]]},"50":{"position":[[23,7]]},"57":{"position":[[1520,7],[2101,7],[3509,8],[4276,7]]},"59":{"position":[[439,7],[2100,7]]},"60":{"position":[[24,7],[114,7],[215,7],[515,7],[697,7],[921,7]]},"63":{"position":[[55,8],[1583,7],[1817,7]]}},"keywords":{}}],["green",{"_index":441,"title":{},"content":{"21":{"position":[[339,5]]}},"keywords":{}}],["group",{"_index":845,"title":{},"content":{"47":{"position":[[38,5]]},"59":{"position":[[3421,6]]}},"keywords":{}}],["groupbi",{"_index":853,"title":{},"content":{"47":{"position":[[505,8]]},"48":{"position":[[94,8],[438,8]]},"59":{"position":[[3390,8],[3403,7],[3665,8]]}},"keywords":{}}],["grpc",{"_index":327,"title":{},"content":{"16":{"position":[[577,5]]}},"keywords":{}}],["gt",{"_index":8,"title":{},"content":{"0":{"position":[[71,4]]},"2":{"position":[[146,5]]}},"keywords":{}}],["guid",{"_index":820,"title":{},"content":{"44":{"position":[[447,6]]},"59":{"position":[[3511,6]]}},"keywords":{}}],["hand",{"_index":343,"title":{},"content":{"17":{"position":[[127,4]]}},"keywords":{}}],["handi",{"_index":949,"title":{},"content":{"57":{"position":[[2356,5]]}},"keywords":{}}],["handl",{"_index":282,"title":{},"content":{"13":{"position":[[255,6]]},"15":{"position":[[127,6]]},"18":{"position":[[172,6]]},"35":{"position":[[758,9]]},"48":{"position":[[867,7]]}},"keywords":{}}],["handwritten",{"_index":415,"title":{},"content":{"20":{"position":[[122,11]]}},"keywords":{}}],["happen",{"_index":433,"title":{},"content":{"21":{"position":[[18,7]]}},"keywords":{}}],["hard",{"_index":418,"title":{},"content":{"20":{"position":[[156,4]]}},"keywords":{}}],["harder",{"_index":422,"title":{},"content":{"20":{"position":[[211,6]]}},"keywords":{}}],["hardwar",{"_index":260,"title":{},"content":{"12":{"position":[[359,8],[487,8]]}},"keywords":{}}],["hash",{"_index":710,"title":{"39":{"position":[[0,4]]}},"content":{"37":{"position":[[1112,4]]},"38":{"position":[[58,4],[114,4]]},"39":{"position":[[12,4],[355,4],[492,5],[502,5],[635,4]]}},"keywords":{}}],["have",{"_index":329,"title":{},"content":{"16":{"position":[[675,6]]},"25":{"position":[[1281,6]]}},"keywords":{}}],["haven't",{"_index":819,"title":{},"content":{"44":{"position":[[397,7]]}},"keywords":{}}],["header",{"_index":876,"title":{"55":{"position":[[0,8]]}},"content":{"50":{"position":[[367,8]]},"55":{"position":[[14,7],[215,6]]},"57":{"position":[[1066,7],[1117,7],[1262,6],[2684,8],[3029,6]]},"58":{"position":[[3127,6],[3388,7],[3516,7],[3865,8],[3916,7],[4028,7],[5360,7],[5386,7],[5475,8]]},"59":{"position":[[2431,8],[2444,7],[2490,7],[2590,6],[2719,8],[2860,6],[2970,8],[3129,8]]}},"keywords":{}}],["header'",{"_index":1113,"title":{},"content":{"59":{"position":[[3297,8]]}},"keywords":{}}],["headers.userid",{"_index":902,"title":{},"content":{"55":{"position":[[188,14]]}},"keywords":{}}],["hear",{"_index":770,"title":{},"content":{"39":{"position":[[1746,4]]}},"keywords":{}}],["help",{"_index":314,"title":{},"content":{"16":{"position":[[16,4],[243,4]]},"44":{"position":[[50,7],[504,4]]},"57":{"position":[[149,5]]},"60":{"position":[[291,7]]},"61":{"position":[[1710,5]]}},"keywords":{}}],["here",{"_index":86,"title":{},"content":{"5":{"position":[[74,5]]},"6":{"position":[[76,5]]},"8":{"position":[[162,5]]},"25":{"position":[[1307,4]]},"45":{"position":[[0,4]]},"48":{"position":[[182,5]]},"55":{"position":[[182,5]]},"59":{"position":[[3763,5]]}},"keywords":{}}],["here'",{"_index":776,"title":{},"content":{"41":{"position":[[179,6]]},"60":{"position":[[130,6]]}},"keywords":{}}],["hidden",{"_index":1122,"title":{},"content":{"60":{"position":[[813,6]]}},"keywords":{}}],["high",{"_index":405,"title":{"35":{"position":[[0,4]]}},"content":{"19":{"position":[[434,4]]},"43":{"position":[[954,4]]}},"keywords":{}}],["higher",{"_index":799,"title":{},"content":{"43":{"position":[[842,6]]}},"keywords":{}}],["highli",{"_index":339,"title":{"17":{"position":[[3,6]]}},"content":{"17":{"position":[[61,6]]}},"keywords":{}}],["hinder",{"_index":501,"title":{},"content":{"24":{"position":[[178,6]]}},"keywords":{}}],["hold",{"_index":894,"title":{},"content":{"53":{"position":[[598,5]]}},"keywords":{}}],["homebrew",{"_index":105,"title":{"6":{"position":[[0,9]]}},"content":{"6":{"position":[[26,8],[113,8]]},"8":{"position":[[597,8]]}},"keywords":{}}],["hope",{"_index":762,"title":{},"content":{"39":{"position":[[1607,4]]}},"keywords":{}}],["host",{"_index":677,"title":{},"content":{"36":{"position":[[157,4]]},"57":{"position":[[1449,6]]},"58":{"position":[[698,5]]}},"keywords":{}}],["howell"",{"_index":598,"title":{},"content":{"26":{"position":[[631,13]]}},"keywords":{}}],["http",{"_index":554,"title":{"59":{"position":[[0,6]]}},"content":{"25":{"position":[[452,4],[585,4],[1155,5]]},"47":{"position":[[267,5],[405,6]]},"48":{"position":[[58,5]]},"57":{"position":[[3043,4],[5078,4]]},"58":{"position":[[3154,4],[3383,4],[4244,5],[4312,5],[4596,5],[4910,4],[4976,4],[5381,4]]},"59":{"position":[[5,5],[200,5],[1300,4],[2505,4],[2530,5],[2855,4]]},"63":{"position":[[1083,4],[1622,4]]}},"keywords":{}}],["http(baseurl",{"_index":896,"title":{},"content":{"54":{"position":[[130,14]]}},"keywords":{}}],["http(method",{"_index":1101,"title":{},"content":{"59":{"position":[[1498,13],[2184,13]]}},"keywords":{}}],["http(path",{"_index":558,"title":{},"content":{"25":{"position":[[629,11],[902,11]]},"45":{"position":[[175,11],[383,11]]},"51":{"position":[[154,11]]},"52":{"position":[[130,11]]},"53":{"position":[[72,11],[180,11]]},"55":{"position":[[119,11]]},"57":{"position":[[2640,11]]},"59":{"position":[[144,11],[723,11],[968,11],[1226,11],[1801,11],[2687,11],[3097,11],[3564,11]]},"61":{"position":[[1639,11]]},"63":{"position":[[475,11],[987,11]]}},"keywords":{}}],["http://0.0.0.0:8000",{"_index":616,"title":{},"content":{"27":{"position":[[297,19]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com",{"_index":1072,"title":{},"content":{"58":{"position":[[4531,36]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com)bad",{"_index":1077,"title":{},"content":{"58":{"position":[[4748,40]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com/api",{"_index":1078,"title":{},"content":{"58":{"position":[[4808,40]]}},"keywords":{}}],["http://localhost:8000",{"_index":572,"title":{},"content":{"26":{"position":[[37,22]]}},"keywords":{}}],["http://localhost:8000/graphiql",{"_index":938,"title":{},"content":{"57":{"position":[[1686,31]]}},"keywords":{}}],["http://localhost:8090",{"_index":919,"title":{},"content":{"57":{"position":[[781,22]]}},"keywords":{}}],["https://cloud.tailcall.com/graphql/d5fb012",{"_index":722,"title":{},"content":{"38":{"position":[[175,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com",{"_index":543,"title":{},"content":{"25":{"position":[[100,37]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/post",{"_index":778,"title":{},"content":{"42":{"position":[[53,42]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/us",{"_index":1092,"title":{},"content":{"59":{"position":[[481,42],[890,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/users/1",{"_index":781,"title":{},"content":{"43":{"position":[[115,44]]}},"keywords":{}}],["https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh",{"_index":122,"title":{},"content":{"7":{"position":[[77,71]]}},"keywords":{}}],["hundr",{"_index":796,"title":{},"content":{"43":{"position":[[723,8]]}},"keywords":{}}],["i.",{"_index":1170,"title":{},"content":{"63":{"position":[[1141,6]]}},"keywords":{}}],["id",{"_index":230,"title":{},"content":{"11":{"position":[[752,3],[756,3],[797,3],[829,3],[999,3],[1003,3],[1253,3],[1257,3]]},"25":{"position":[[738,3],[863,2],[1030,3]]},"26":{"position":[[176,2]]},"45":{"position":[[221,3],[321,3]]},"47":{"position":[[343,3]]},"48":{"position":[[248,2],[574,2]]},"51":{"position":[[143,5],[248,2]]},"52":{"position":[[73,3],[77,3],[240,2]]},"53":{"position":[[118,3]]},"57":{"position":[[1528,3],[1646,3]]},"59":{"position":[[133,5],[712,5],[957,5],[1215,5],[1788,5],[3530,3],[3829,2]]},"60":{"position":[[429,3],[863,3],[938,2]]},"61":{"position":[[339,3],[374,3]]},"63":{"position":[[278,2],[359,3],[1339,3]]}},"keywords":{}}],["identifi",{"_index":690,"title":{},"content":{"37":{"position":[[280,8]]},"39":{"position":[[675,10]]},"44":{"position":[[58,8]]},"45":{"position":[[710,8]]},"46":{"position":[[55,11]]}},"keywords":{}}],["idin",{"_index":1118,"title":{},"content":{"60":{"position":[[565,4]]}},"keywords":{}}],["idl",{"_index":1027,"title":{},"content":{"58":{"position":[[460,4],[653,4],[1441,5]]}},"keywords":{}}],["ignor",{"_index":101,"title":{},"content":{"5":{"position":[[301,7]]},"58":{"position":[[3989,8]]}},"keywords":{}}],["illustr",{"_index":777,"title":{},"content":{"41":{"position":[[189,12]]},"46":{"position":[[648,11]]},"58":{"position":[[2213,11]]},"63":{"position":[[13,11]]}},"keywords":{}}],["imag",{"_index":72,"title":{},"content":{"3":{"position":[[343,7]]},"8":{"position":[[200,5],[349,5]]}},"keywords":{}}],["immut",{"_index":752,"title":{},"content":{"39":{"position":[[1258,10]]}},"keywords":{}}],["impact",{"_index":331,"title":{},"content":{"16":{"position":[[691,6]]},"19":{"position":[[114,6]]},"43":{"position":[[979,9]]}},"keywords":{}}],["implement",{"_index":305,"title":{},"content":{"15":{"position":[[404,9]]},"17":{"position":[[253,14]]},"23":{"position":[[24,12]]},"41":{"position":[[233,12]]},"50":{"position":[[31,16]]}},"keywords":{}}],["impli",{"_index":961,"title":{},"content":{"57":{"position":[[2909,7]]}},"keywords":{}}],["import",{"_index":445,"title":{},"content":{"21":{"position":[[480,9]]},"39":{"position":[[734,9]]},"63":{"position":[[1647,9]]}},"keywords":{}}],["improv",{"_index":320,"title":{},"content":{"16":{"position":[[251,7],[611,7],[795,7]]},"57":{"position":[[4979,8],[5482,13]]},"58":{"position":[[5010,7]]}},"keywords":{}}],["includ",{"_index":135,"title":{},"content":{"7":{"position":[[371,7]]},"18":{"position":[[350,9]]},"24":{"position":[[144,7]]},"35":{"position":[[336,9]]},"36":{"position":[[319,9]]},"37":{"position":[[1022,9]]},"42":{"position":[[167,8]]},"45":{"position":[[503,9]]},"57":{"position":[[2988,8]]},"58":{"position":[[101,8],[5251,9],[5400,8]]},"59":{"position":[[1351,7],[2401,8],[2833,7]]},"60":{"position":[[961,8]]},"61":{"position":[[713,8]]}},"keywords":{}}],["incom",{"_index":984,"title":{},"content":{"57":{"position":[[4267,8],[4795,8]]},"58":{"position":[[3507,8]]}},"keywords":{}}],["incompat",{"_index":502,"title":{},"content":{"24":{"position":[[198,12]]}},"keywords":{}}],["incorpor",{"_index":856,"title":{},"content":{"48":{"position":[[78,11]]}},"keywords":{}}],["increas",{"_index":272,"title":{"13":{"position":[[3,9]]},"15":{"position":[[3,9]]}},"content":{"13":{"position":[[171,9]]},"14":{"position":[[107,9]]},"15":{"position":[[65,9]]},"37":{"position":[[710,9]]}},"keywords":{}}],["independ",{"_index":453,"title":{},"content":{"22":{"position":[[29,13]]},"39":{"position":[[1470,14]]}},"keywords":{}}],["index",{"_index":1143,"title":{},"content":{"61":{"position":[[1323,9],[1367,5]]}},"keywords":{}}],["indic",{"_index":779,"title":{},"content":{"42":{"position":[[191,10]]},"59":{"position":[[33,10]]},"61":{"position":[[739,10]]}},"keywords":{}}],["ineffici",{"_index":391,"title":{},"content":{"19":{"position":[[184,11]]},"24":{"position":[[282,15]]}},"keywords":{}}],["infer",{"_index":995,"title":{},"content":{"57":{"position":[[5054,5]]}},"keywords":{}}],["info",{"_index":208,"title":{},"content":{"11":{"position":[[262,4]]},"12":{"position":[[475,4]]},"16":{"position":[[584,4]]},"23":{"position":[[645,4]]},"37":{"position":[[369,4]]},"43":{"position":[[602,4]]},"63":{"position":[[1636,4]]}},"keywords":{}}],["inform",{"_index":220,"title":{},"content":{"11":{"position":[[499,11],[945,12],[1157,12]]},"15":{"position":[[144,12]]},"27":{"position":[[390,12]]},"35":{"position":[[323,12],[628,11]]},"53":{"position":[[397,11]]},"57":{"position":[[2435,11],[3222,11],[3544,11],[5107,11]]}},"keywords":{}}],["infrastructur",{"_index":429,"title":{},"content":{"20":{"position":[[332,15]]},"21":{"position":[[383,14]]}},"keywords":{}}],["infrastructure.canari",{"_index":748,"title":{},"content":{"39":{"position":[[1046,21]]}},"keywords":{}}],["init",{"_index":650,"title":{"33":{"position":[[0,5]]}},"content":{"33":{"position":[[4,4],[128,4]]}},"keywords":{}}],["initi",{"_index":787,"title":{},"content":{"43":{"position":[[411,7]]},"48":{"position":[[779,7]]},"58":{"position":[[2326,9]]},"63":{"position":[[309,9]]}},"keywords":{}}],["inlin",{"_index":707,"title":{"61":{"position":[[0,8]]}},"content":{"37":{"position":[[1050,9]]},"61":{"position":[[4,7],[71,10],[620,7],[815,8],[1147,7],[1306,7],[1379,8],[1440,6],[1693,7]]},"63":{"position":[[853,7]]}},"keywords":{}}],["inline(path",{"_index":1132,"title":{},"content":{"61":{"position":[[538,13],[1571,13]]},"63":{"position":[[405,13],[603,13]]}},"keywords":{}}],["input",{"_index":666,"title":{},"content":{"35":{"position":[[386,5]]},"59":{"position":[[2366,5]]}},"keywords":{}}],["insid",{"_index":1172,"title":{},"content":{"63":{"position":[[1482,6]]}},"keywords":{}}],["instal",{"_index":80,"title":{"4":{"position":[[0,12]]}},"content":{"5":{"position":[[33,10],[80,7],[201,9],[280,14],[309,10]]},"6":{"position":[[35,10],[207,7],[248,9],[288,12]]},"7":{"position":[[35,7],[210,12],[235,9],[316,13]]},"8":{"position":[[15,7],[103,9],[606,13],[682,12],[794,9]]},"44":{"position":[[434,12]]}},"keywords":{}}],["instanc",{"_index":788,"title":{},"content":{"43":{"position":[[475,9]]},"52":{"position":[[51,9]]},"59":{"position":[[881,8],[2625,9]]},"60":{"position":[[407,9],[841,9]]},"61":{"position":[[274,9]]}},"keywords":{}}],["instead",{"_index":310,"title":{},"content":{"15":{"position":[[523,8]]},"39":{"position":[[126,8]]},"63":{"position":[[889,7]]}},"keywords":{}}],["instruct",{"_index":85,"title":{},"content":{"5":{"position":[[61,12]]},"6":{"position":[[63,12]]},"48":{"position":[[204,10],[480,9]]},"57":{"position":[[1021,9]]},"59":{"position":[[3785,10]]},"63":{"position":[[1050,8],[1574,8]]}},"keywords":{}}],["instrument",{"_index":963,"title":{},"content":{"57":{"position":[[3098,12],[3595,12]]}},"keywords":{}}],["int",{"_index":561,"title":{},"content":{"25":{"position":[[742,4],[1034,4]]},"45":{"position":[[225,4],[325,4],[338,4]]},"47":{"position":[[347,4],[360,4]]},"53":{"position":[[122,4],[135,4]]},"59":{"position":[[3534,4]]},"60":{"position":[[433,4],[867,4]]},"61":{"position":[[343,4],[378,4],[526,5],[918,5]]},"62":{"position":[[212,3]]},"63":{"position":[[363,3],[526,4],[1343,3],[1399,4]]}},"keywords":{}}],["integr",{"_index":371,"title":{},"content":{"18":{"position":[[399,11]]},"37":{"position":[[960,9],[1346,12]]},"39":{"position":[[1595,10]]}},"keywords":{}}],["intend",{"_index":1043,"title":{},"content":{"58":{"position":[[1715,8]]}},"keywords":{}}],["intensifi",{"_index":794,"title":{},"content":{"43":{"position":[[682,12]]}},"keywords":{}}],["interact",{"_index":43,"title":{},"content":{"2":{"position":[[99,11]]},"57":{"position":[[1497,11]]}},"keywords":{}}],["interest",{"_index":459,"title":{},"content":{"22":{"position":[[281,11]]}},"keywords":{}}],["interfac",{"_index":275,"title":{},"content":{"13":{"position":[[21,10]]},"16":{"position":[[535,10]]},"26":{"position":[[90,10]]},"50":{"position":[[247,10],[258,9]]},"57":{"position":[[1436,9],[1962,9]]}},"keywords":{}}],["intermediari",{"_index":1042,"title":{},"content":{"58":{"position":[[1622,12]]}},"keywords":{}}],["intern",{"_index":863,"title":{},"content":{"48":{"position":[[545,11]]}},"keywords":{}}],["interv",{"_index":1020,"title":{},"content":{"58":{"position":[[156,10]]}},"keywords":{}}],["intric",{"_index":526,"title":{},"content":{"24":{"position":[[718,9]]}},"keywords":{}}],["intricaci",{"_index":532,"title":{},"content":{"24":{"position":[[802,12]]}},"keywords":{}}],["intrins",{"_index":973,"title":{},"content":{"57":{"position":[[3488,9]]}},"keywords":{}}],["introduc",{"_index":481,"title":{},"content":{"23":{"position":[[577,9]]},"24":{"position":[[84,10]]},"48":{"position":[[22,9]]},"58":{"position":[[1765,9]]}},"keywords":{}}],["introspect",{"_index":971,"title":{},"content":{"57":{"position":[[3417,13],[3468,13],[3838,13],[3982,13]]}},"keywords":{}}],["invalid",{"_index":688,"title":{},"content":{"37":{"position":[[197,7]]},"57":{"position":[[4403,7]]}},"keywords":{}}],["involv",{"_index":773,"title":{},"content":{"41":{"position":[[41,8]]},"43":{"position":[[1112,9]]}},"keywords":{}}],["ipsum",{"_index":15,"title":{},"content":{"0":{"position":[[132,5],[241,5],[284,5],[311,5],[420,5],[463,5],[490,5],[599,5],[642,5],[669,5],[778,5],[821,5],[848,5],[957,5],[1000,5],[1027,5],[1136,5],[1179,5],[1206,5],[1315,5],[1358,5],[1385,5],[1494,5],[1537,5],[1564,5],[1673,5],[1716,5],[1743,5],[1852,5],[1895,5],[1922,5],[2031,5],[2074,5],[2101,5],[2210,5],[2253,5],[2280,5],[2389,5],[2432,5],[2459,5],[2568,5],[2611,5],[2638,5],[2747,5],[2790,5],[2817,5],[2926,5],[2969,5]]},"1":{"position":[[6,5],[115,5],[158,5]]}},"keywords":{}}],["isn't",{"_index":728,"title":{},"content":{"39":{"position":[[51,5]]},"58":{"position":[[3487,5]]}},"keywords":{}}],["issu",{"_index":366,"title":{},"content":{"18":{"position":[[284,7]]},"19":{"position":[[145,6]]},"24":{"position":[[137,6],[694,6]]},"29":{"position":[[95,7]]},"30":{"position":[[40,7]]},"43":{"position":[[396,5],[1163,5]]},"44":{"position":[[71,6],[228,6]]},"45":{"position":[[724,5]]},"46":{"position":[[81,6],[250,6],[293,7]]},"47":{"position":[[200,5]]}},"keywords":{}}],["it'",{"_index":235,"title":{},"content":{"11":{"position":[[824,4]]},"18":{"position":[[640,4]]},"23":{"position":[[230,4],[531,4]]},"24":{"position":[[472,4]]},"43":{"position":[[1022,4]]},"53":{"position":[[476,4]]},"57":{"position":[[1764,4],[2008,4],[3907,4],[5662,4],[6193,4]]},"58":{"position":[[4177,4]]},"59":{"position":[[1936,4]]}},"keywords":{}}],["json",{"_index":578,"title":{},"content":{"26":{"position":[[257,4]]},"41":{"position":[[74,4]]},"43":{"position":[[360,4]]},"50":{"position":[[315,4]]},"59":{"position":[[2392,4]]}},"keywords":{}}],["json>",{"_index":873,"title":{},"content":{"50":{"position":[[299,8]]}},"keywords":{}}],["jsonplacehold",{"_index":824,"title":{"45":{"position":[[0,15]]}},"content":{},"keywords":{}}],["jsonplaceholder.graphql",{"_index":548,"title":{},"content":{"25":{"position":[[357,23]]},"27":{"position":[[84,23],[146,25]]},"46":{"position":[[116,25],[362,25]]}},"keywords":{}}],["keep",{"_index":1018,"title":{},"content":{"58":{"position":[[145,4],[892,4],[1153,4],[1382,4],[2919,4]]},"60":{"position":[[795,4]]}},"keywords":{}}],["keepaliveinterv",{"_index":1034,"title":{},"content":{"58":{"position":[[840,18]]}},"keywords":{}}],["keepalivetimeout",{"_index":1037,"title":{},"content":{"58":{"position":[[1079,17]]}},"keywords":{}}],["keepalivewhileidl",{"_index":1039,"title":{},"content":{"58":{"position":[[1322,19]]}},"keywords":{}}],["key",{"_index":296,"title":{},"content":{"15":{"position":[[169,4]]},"44":{"position":[[528,3]]},"47":{"position":[[444,6]]},"48":{"position":[[120,6],[591,4]]},"53":{"position":[[219,6],[664,3]]},"57":{"position":[[2507,5],[2693,6]]},"58":{"position":[[3861,3]]},"59":{"position":[[1840,6],[2573,3],[2728,6],[3138,6],[3197,5],[3603,6],[3702,5]]}},"keywords":{}}],["key"",{"_index":1069,"title":{},"content":{"58":{"position":[[3726,11]]}},"keywords":{}}],["kind",{"_index":461,"title":{},"content":{"22":{"position":[[422,4]]}},"keywords":{}}],["known",{"_index":209,"title":{},"content":{"11":{"position":[[291,5]]},"32":{"position":[[165,5]]},"35":{"position":[[114,5]]},"63":{"position":[[112,6]]}},"keywords":{}}],["lack",{"_index":352,"title":{"21":{"position":[[18,5]]}},"content":{"17":{"position":[[350,4]]}},"keywords":{}}],["late",{"_index":396,"title":{},"content":{"19":{"position":[[286,4]]}},"keywords":{}}],["latenc",{"_index":287,"title":{},"content":{"14":{"position":[[117,8]]}},"keywords":{}}],["latest",{"_index":145,"title":{},"content":{"8":{"position":[[177,6],[311,6]]}},"keywords":{}}],["laudantium",{"_index":603,"title":{},"content":{"26":{"position":[[709,10]]}},"keywords":{}}],["launch",{"_index":611,"title":{"27":{"position":[[0,6]]}},"content":{"27":{"position":[[0,6],[255,8]]},"32":{"position":[[18,8]]}},"keywords":{}}],["layer",{"_index":313,"title":{},"content":{"16":{"position":[[6,5],[320,5],[1117,6]]},"17":{"position":[[39,5]]},"18":{"position":[[35,5],[673,5],[791,5]]},"19":{"position":[[12,6]]},"20":{"position":[[17,5],[98,5]]},"21":{"position":[[76,6],[156,6],[525,6]]},"22":{"position":[[4,6],[248,5],[389,5]]},"23":{"position":[[4,6],[286,6],[370,5],[387,5],[638,6],[668,6],[704,6],[725,6]]},"24":{"position":[[252,5]]},"57":{"position":[[2155,5]]},"58":{"position":[[1789,6],[3595,5]]}},"keywords":{}}],["lead",{"_index":280,"title":{},"content":{"13":{"position":[[163,4]]},"15":{"position":[[57,4]]},"37":{"position":[[681,4]]},"43":{"position":[[808,7],[919,4]]},"46":{"position":[[621,4]]}},"keywords":{}}],["lean",{"_index":921,"title":{},"content":{"57":{"position":[[815,4]]}},"keywords":{}}],["learn",{"_index":711,"title":{},"content":{"37":{"position":[[1187,5]]}},"keywords":{}}],["left",{"_index":1082,"title":{},"content":{"58":{"position":[[5071,4]]}},"keywords":{}}],["legaci",{"_index":465,"title":{"23":{"position":[[3,6]]}},"content":{"23":{"position":[[558,6]]}},"keywords":{}}],["level",{"_index":658,"title":{"35":{"position":[[5,5]]}},"content":{"57":{"position":[[50,6]]}},"keywords":{}}],["leverag",{"_index":946,"title":{},"content":{"57":{"position":[[2281,9]]}},"keywords":{}}],["librari",{"_index":423,"title":{},"content":{"20":{"position":[[232,9]]}},"keywords":{}}],["limit",{"_index":10,"title":{},"content":{"0":{"position":[[87,5]]},"10":{"position":[[445,9]]},"23":{"position":[[103,9]]}},"keywords":{}}],["line",{"_index":836,"title":{},"content":{"46":{"position":[[182,4]]}},"keywords":{}}],["list",{"_index":12,"title":{},"content":{"0":{"position":[[115,4]]},"25":{"position":[[221,4]]},"37":{"position":[[555,4]]},"42":{"position":[[125,4]]},"45":{"position":[[473,4]]},"48":{"position":[[516,4],[678,5],[808,5]]},"53":{"position":[[494,4]]}},"keywords":{}}],["liter",{"_index":735,"title":{},"content":{"39":{"position":[[296,7]]}},"keywords":{}}],["live",{"_index":404,"title":{},"content":{"19":{"position":[[405,5]]},"22":{"position":[[143,4]]},"57":{"position":[[3999,4]]}},"keywords":{}}],["load",{"_index":401,"title":{},"content":{"19":{"position":[[371,4]]},"26":{"position":[[72,4]]},"27":{"position":[[377,4]]},"37":{"position":[[720,4]]}},"keywords":{}}],["loader",{"_index":708,"title":{},"content":{"37":{"position":[[1065,7]]}},"keywords":{}}],["loading"",{"_index":698,"title":{},"content":{"37":{"position":[[803,13]]}},"keywords":{}}],["local",{"_index":945,"title":{},"content":{"57":{"position":[[2253,5],[3061,5]]}},"keywords":{}}],["locat",{"_index":71,"title":{},"content":{"3":{"position":[[326,6]]},"7":{"position":[[255,7]]}},"keywords":{}}],["log",{"_index":613,"title":{},"content":{"27":{"position":[[212,4]]}},"keywords":{}}],["logic",{"_index":673,"title":{},"content":{"35":{"position":[[653,5]]},"39":{"position":[[222,6]]},"57":{"position":[[4133,5]]}},"keywords":{}}],["long",{"_index":0,"title":{"0":{"position":[[0,4]]}},"content":{"0":{"position":[[30,4]]},"57":{"position":[[5737,4]]}},"keywords":{}}],["longer",{"_index":1011,"title":{},"content":{"57":{"position":[[6115,6]]}},"keywords":{}}],["look",{"_index":169,"title":{},"content":{"10":{"position":[[50,5]]},"43":{"position":[[94,4]]},"63":{"position":[[1310,5]]}},"keywords":{}}],["lorem",{"_index":14,"title":{},"content":{"0":{"position":[[126,5],[278,5],[305,5],[457,5],[484,5],[636,5],[663,5],[815,5],[842,5],[994,5],[1021,5],[1173,5],[1200,5],[1352,5],[1379,5],[1531,5],[1558,5],[1710,5],[1737,5],[1889,5],[1916,5],[2068,5],[2095,5],[2247,5],[2274,5],[2426,5],[2453,5],[2605,5],[2632,5],[2784,5],[2811,5],[2963,5]]},"1":{"position":[[0,5],[152,5]]}},"keywords":{}}],["lot",{"_index":414,"title":{},"content":{"20":{"position":[[115,3]]}},"keywords":{}}],["love",{"_index":769,"title":{},"content":{"39":{"position":[[1738,4]]}},"keywords":{}}],["lt",{"_index":6,"title":{},"content":{"0":{"position":[[52,5]]}},"keywords":{}}],["lt;button",{"_index":44,"title":{},"content":{"2":{"position":[[123,10]]}},"keywords":{}}],["lt;file>",{"_index":633,"title":{},"content":{"29":{"position":[[168,15]]},"30":{"position":[[106,15]]}},"keywords":{}}],["lt;file1>",{"_index":641,"title":{},"content":{"31":{"position":[[117,13]]},"32":{"position":[[250,13]]}},"keywords":{}}],["lt;file2>",{"_index":642,"title":{},"content":{"31":{"position":[[131,13]]},"32":{"position":[[264,13]]}},"keywords":{}}],["lt;file_path>",{"_index":653,"title":{},"content":{"33":{"position":[[133,17]]}},"keywords":{}}],["lt;filen>",{"_index":643,"title":{},"content":{"31":{"position":[[149,13]]},"32":{"position":[[282,13]]}},"keywords":{}}],["made",{"_index":694,"title":{},"content":{"37":{"position":[[512,5],[874,5]]},"44":{"position":[[131,4]]},"58":{"position":[[4588,4]]},"59":{"position":[[2518,4]]}},"keywords":{}}],["main",{"_index":278,"title":{},"content":{"13":{"position":[[92,4]]}},"keywords":{}}],["maintain",{"_index":355,"title":{},"content":{"17":{"position":[[446,9]]},"20":{"position":[[164,9]]},"39":{"position":[[974,11],[1557,11]]},"58":{"position":[[683,10],[919,8],[2946,8]]}},"keywords":{}}],["major",{"_index":998,"title":{},"content":{"57":{"position":[[5464,5]]}},"keywords":{}}],["make",{"_index":172,"title":{},"content":{"10":{"position":[[88,4],[473,5]]},"11":{"position":[[889,4]]},"12":{"position":[[118,5],[267,6],[417,5]]},"14":{"position":[[162,4]]},"15":{"position":[[349,5]]},"16":{"position":[[945,4]]},"17":{"position":[[394,4]]},"22":{"position":[[172,4],[439,5]]},"23":{"position":[[151,5],[472,6]]},"38":{"position":[[16,5],[44,4]]},"39":{"position":[[1629,5]]},"43":{"position":[[224,4],[514,6]]},"57":{"position":[[4862,4]]},"58":{"position":[[3452,6]]},"59":{"position":[[459,4],[2909,4]]},"62":{"position":[[295,4]]},"63":{"position":[[1075,4],[1253,6],[1807,4]]}},"keywords":{}}],["malform",{"_index":987,"title":{},"content":{"57":{"position":[[4414,9]]}},"keywords":{}}],["manag",{"_index":306,"title":{},"content":{"15":{"position":[[418,7]]},"22":{"position":[[480,7]]}},"keywords":{}}],["mani",{"_index":704,"title":{},"content":{"37":{"position":[[999,4]]}},"keywords":{}}],["manual",{"_index":118,"title":{},"content":{"7":{"position":[[26,8]]}},"keywords":{}}],["map",{"_index":862,"title":{},"content":{"48":{"position":[[541,3]]},"59":{"position":[[2583,3]]}},"keywords":{}}],["map<str",{"_index":872,"title":{},"content":{"50":{"position":[[284,14],[341,14],[376,14]]}},"keywords":{}}],["markdown",{"_index":36,"title":{},"content":{"2":{"position":[[30,8]]},"3":{"position":[[72,8]]}},"keywords":{}}],["market",{"_index":406,"title":{},"content":{"19":{"position":[[447,6]]}},"keywords":{}}],["match",{"_index":162,"title":{},"content":{"8":{"position":[[777,5]]},"60":{"position":[[358,5]]},"62":{"position":[[313,7],[383,5]]}},"keywords":{}}],["matchkey",{"_index":887,"title":{},"content":{"53":{"position":[[310,9]]}},"keywords":{}}],["matchpath",{"_index":886,"title":{},"content":{"53":{"position":[[281,10]]}},"keywords":{}}],["matter",{"_index":1174,"title":{},"content":{"63":{"position":[[1705,7]]}},"keywords":{}}],["max",{"_index":930,"title":{},"content":{"57":{"position":[[1096,3]]}},"keywords":{}}],["maximum",{"_index":1001,"title":{},"content":{"57":{"position":[[5612,7]]},"58":{"position":[[635,7],[2673,7],[5274,7]]}},"keywords":{}}],["maxsiz",{"_index":1085,"title":{},"content":{"58":{"position":[[5261,7],[5448,9]]}},"keywords":{}}],["mdx",{"_index":33,"title":{"2":{"position":[[0,3]]}},"content":{"2":{"position":[[57,4]]}},"keywords":{}}],["me!</button>",{"_index":48,"title":{},"content":{"2":{"position":[[197,18]]}},"keywords":{}}],["mean",{"_index":380,"title":{},"content":{"18":{"position":[[742,5]]},"39":{"position":[[167,7],[595,8]]},"57":{"position":[[735,5],[1251,7],[6082,5]]},"58":{"position":[[3879,5]]},"59":{"position":[[266,5],[424,5]]},"61":{"position":[[1333,7]]}},"keywords":{}}],["measur",{"_index":682,"title":{},"content":{"36":{"position":[[362,9]]},"57":{"position":[[6358,7]]}},"keywords":{}}],["mechan",{"_index":442,"title":{},"content":{"21":{"position":[[418,11]]},"36":{"position":[[250,11]]},"58":{"position":[[4923,11],[4941,11]]},"63":{"position":[[1778,9]]}},"keywords":{}}],["media",{"_index":223,"title":{},"content":{"11":{"position":[[536,5]]}},"keywords":{}}],["mention",{"_index":376,"title":{},"content":{"18":{"position":[[651,10]]},"23":{"position":[[542,10]]},"58":{"position":[[4197,9]]}},"keywords":{}}],["mere",{"_index":729,"title":{},"content":{"39":{"position":[[65,6]]}},"keywords":{}}],["mesh",{"_index":477,"title":{},"content":{"23":{"position":[[409,5]]}},"keywords":{}}],["messag",{"_index":1035,"title":{},"content":{"58":{"position":[[903,7],[1164,7],[1393,8],[2930,7]]},"62":{"position":[[432,7]]}},"keywords":{}}],["meta",{"_index":617,"title":{},"content":{"27":{"position":[[385,4]]}},"keywords":{}}],["metadata",{"_index":662,"title":{},"content":{"35":{"position":[[234,8],[291,8],[582,8]]}},"keywords":{}}],["method",{"_index":738,"title":{},"content":{"39":{"position":[[325,6]]},"59":{"position":[[1273,7],[1305,6],[1343,7],[1418,6],[1950,7]]}},"keywords":{}}],["microservic",{"_index":166,"title":{"10":{"position":[[0,12]]}},"content":{"10":{"position":[[23,13],[109,13],[506,13]]},"11":{"position":[[357,12]]},"16":{"position":[[430,14],[502,13]]},"22":{"position":[[334,12]]},"35":{"position":[[705,14]]}},"keywords":{}}],["middlewar",{"_index":488,"title":{},"content":{"23":{"position":[[683,11]]}},"keywords":{}}],["millisecond",{"_index":1010,"title":{},"content":{"57":{"position":[[6049,13]]},"58":{"position":[[5322,12]]}},"keywords":{}}],["minim",{"_index":841,"title":{},"content":{"46":{"position":[[489,7],[596,7]]}},"keywords":{}}],["minor",{"_index":407,"title":{},"content":{"19":{"position":[[463,5]]}},"keywords":{}}],["mitig",{"_index":813,"title":{},"content":{"44":{"position":[[241,9]]}},"keywords":{}}],["mobile/web",{"_index":171,"title":{},"content":{"10":{"position":[[75,12]]}},"keywords":{}}],["modern",{"_index":447,"title":{},"content":{"21":{"position":[[514,6]]}},"keywords":{}}],["modest",{"_index":259,"title":{},"content":{"12":{"position":[[352,6],[480,6]]}},"keywords":{}}],["modifi",{"_index":849,"title":{"60":{"position":[[0,8]]}},"content":{"47":{"position":[[256,6]]},"60":{"position":[[4,7],[261,7],[743,7]]},"61":{"position":[[144,9]]},"63":{"position":[[576,6]]}},"keywords":{}}],["modify(nam",{"_index":1117,"title":{},"content":{"60":{"position":[[438,13],[475,13]]},"63":{"position":[[439,13],[788,13]]}},"keywords":{}}],["modify(omit",{"_index":1123,"title":{},"content":{"60":{"position":[[872,13],[895,13]]}},"keywords":{}}],["monolith",{"_index":409,"title":{"20":{"position":[[3,9]]}},"content":{"20":{"position":[[45,8]]}},"keywords":{}}],["more",{"_index":252,"title":{},"content":{"12":{"position":[[183,4]]},"14":{"position":[[219,4]]},"15":{"position":[[384,4],[448,4]]},"17":{"position":[[416,4]]},"26":{"position":[[949,4]]},"37":{"position":[[1193,4]]},"39":{"position":[[343,4]]},"43":{"position":[[233,4]]},"58":{"position":[[171,5]]},"59":{"position":[[3475,4]]},"63":{"position":[[154,4],[1832,4],[1872,4]]}},"keywords":{}}],["moreov",{"_index":474,"title":{},"content":{"23":{"position":[[220,9]]}},"keywords":{}}],["multipl",{"_index":201,"title":{},"content":{"11":{"position":[[51,8],[149,8]]},"12":{"position":[[274,8]]},"13":{"position":[[297,8]]},"14":{"position":[[167,8]]},"16":{"position":[[1044,8]]},"31":{"position":[[193,8]]},"32":{"position":[[326,8]]},"37":{"position":[[127,8],[477,8]]},"39":{"position":[[886,8]]},"43":{"position":[[441,8]]},"47":{"position":[[44,8]]},"48":{"position":[[410,8]]},"53":{"position":[[542,8]]},"59":{"position":[[3428,8],[3991,8]]},"63":{"position":[[92,8]]}},"keywords":{}}],["mustach",{"_index":1094,"title":{},"content":{"59":{"position":[[1063,8],[1663,8],[2049,8],[2921,8]]}},"keywords":{}}],["mutat",{"_index":908,"title":{},"content":{"57":{"position":[[245,9],[255,8],[666,9],[676,8],[1339,9],[1349,8],[1917,9],[1927,8],[2587,9],[2597,8],[3803,9],[3813,8],[4677,9],[4687,8],[5404,9],[5414,8],[5963,9],[5973,8]]},"58":{"position":[[276,9],[286,8],[589,9],[599,8],[818,9],[828,8],[1057,9],[1067,8],[1300,9],[1310,8],[1564,9],[1574,8],[1982,9],[1992,8],[2638,9],[2648,8],[2846,9],[2856,8],[3079,9],[3089,8],[3296,9],[3306,8],[3753,9],[3763,8],[4463,9],[4473,8],[5177,9],[5187,8],[5551,9],[5561,8]]},"59":{"position":[[1451,8],[2137,8],[2316,8],[2640,8],[3060,8]]}},"keywords":{}}],["n",{"_index":637,"title":{"30":{"position":[[2,1]]},"40":{"position":[[9,1]]}},"content":{"30":{"position":[[87,1]]},"37":{"position":[[354,1],[378,1]]},"46":{"position":[[159,1],[173,1],[319,1],[390,1],[426,1]]},"59":{"position":[[3505,1]]}},"keywords":{}}],["n+1",{"_index":630,"title":{},"content":{"29":{"position":[[91,3]]},"30":{"position":[[36,3]]},"43":{"position":[[324,3],[1050,3]]},"44":{"position":[[67,3]]},"45":{"position":[[590,3]]},"46":{"position":[[77,3],[246,3],[523,3],[632,3]]},"47":{"position":[[196,3]]},"48":{"position":[[879,3]]}},"keywords":{}}],["name",{"_index":239,"title":{},"content":{"11":{"position":[[1007,5]]},"25":{"position":[[747,5]]},"26":{"position":[[179,4]]},"38":{"position":[[288,4]]},"45":{"position":[[230,5]]},"57":{"position":[[2811,5]]},"59":{"position":[[2597,5],[3292,4],[3353,4],[3539,5]]},"60":{"position":[[168,5],[240,4],[314,4],[382,4]]},"61":{"position":[[383,5]]},"62":{"position":[[145,6],[194,5]]},"63":{"position":[[285,5],[367,5],[717,4],[844,4],[861,4],[1347,5],[1530,7],[1538,4]]}},"keywords":{}}],["name"",{"_index":1111,"title":{},"content":{"59":{"position":[[3214,11]]}},"keywords":{}}],["necessari",{"_index":276,"title":{},"content":{"13":{"position":[[51,9]]},"33":{"position":[[67,9]]},"36":{"position":[[53,9]]},"57":{"position":[[426,10]]}},"keywords":{}}],["necessit",{"_index":518,"title":{},"content":{"24":{"position":[[509,12]]}},"keywords":{}}],["need",{"_index":281,"title":{},"content":{"13":{"position":[[246,5]]},"14":{"position":[[153,5]]},"15":{"position":[[118,5]]},"18":{"position":[[797,5]]},"22":{"position":[[132,4],[164,4],[354,5],[395,5]]},"38":{"position":[[35,5]]},"43":{"position":[[24,4]]},"50":{"position":[[149,5]]},"57":{"position":[[383,6],[2371,4]]},"63":{"position":[[1903,5]]}},"keywords":{}}],["nest",{"_index":1128,"title":{},"content":{"61":{"position":[[231,6]]}},"keywords":{}}],["network",{"_index":263,"title":{},"content":{"12":{"position":[[398,7],[506,7]]},"15":{"position":[[328,7]]},"16":{"position":[[784,7]]}},"keywords":{}}],["new",{"_index":202,"title":{},"content":{"11":{"position":[[77,3],[90,3],[207,3],[1175,3]]},"16":{"position":[[1001,3]]},"20":{"position":[[185,3]]},"27":{"position":[[481,3]]},"33":{"position":[[30,3]]}},"keywords":{}}],["newli",{"_index":750,"title":{},"content":{"39":{"position":[[1190,5]]}},"keywords":{}}],["next",{"_index":833,"title":{},"content":{"45":{"position":[[760,4]]}},"keywords":{}}],["node",{"_index":882,"title":{},"content":{"52":{"position":[[41,5]]},"53":{"position":[[39,5]]},"59":{"position":[[58,4]]},"60":{"position":[[97,4],[202,4],[682,4]]},"61":{"position":[[107,4]]}},"keywords":{}}],["nodej",{"_index":83,"title":{},"content":{"5":{"position":[[26,6]]}},"keywords":{}}],["nomenclatur",{"_index":490,"title":{},"content":{"23":{"position":[[764,13]]}},"keywords":{}}],["non",{"_index":268,"title":{},"content":{"12":{"position":[[459,3]]},"57":{"position":[[828,3]]}},"keywords":{}}],["notabl",{"_index":628,"title":{},"content":{"29":{"position":[[48,8]]},"57":{"position":[[4498,7]]}},"keywords":{}}],["note",{"_index":97,"title":{},"content":{"5":{"position":[[236,4]]},"8":{"position":[[668,4]]},"63":{"position":[[1660,4]]}},"keywords":{}}],["noth",{"_index":381,"title":{},"content":{"18":{"position":[[748,7]]}},"keywords":{}}],["now",{"_index":610,"title":{},"content":{"26":{"position":[[910,3]]},"27":{"position":[[7,4],[447,4]]},"61":{"position":[[1028,3]]},"63":{"position":[[939,3]]}},"keywords":{}}],["npm",{"_index":81,"title":{"5":{"position":[[0,4]]}},"content":{"5":{"position":[[148,3],[276,3]]}},"keywords":{}}],["nullabl",{"_index":1142,"title":{},"content":{"61":{"position":[[1183,10],[1245,9],[1282,9]]}},"keywords":{}}],["number",{"_index":700,"title":{},"content":{"37":{"position":[[855,6]]},"47":{"position":[[107,6]]},"48":{"position":[[727,6]]},"58":{"position":[[643,6]]}},"keywords":{}}],["numer",{"_index":808,"title":{},"content":{"43":{"position":[[1122,8]]}},"keywords":{}}],["object",{"_index":244,"title":{},"content":{"11":{"position":[[1335,6]]},"37":{"position":[[563,7],[664,7]]},"58":{"position":[[5209,6]]},"59":{"position":[[1649,6],[2033,6],[2372,6]]},"63":{"position":[[682,7],[928,7],[1465,6]]}},"keywords":{}}],["occaecati",{"_index":592,"title":{},"content":{"26":{"position":[[485,9]]}},"keywords":{}}],["occur",{"_index":695,"title":{},"content":{"37":{"position":[[527,5]]}},"keywords":{}}],["odit",{"_index":607,"title":{},"content":{"26":{"position":[[783,4]]}},"keywords":{}}],["offer",{"_index":634,"title":{},"content":{"29":{"position":[[203,6]]},"57":{"position":[[57,6],[5458,5]]}},"keywords":{}}],["omit",{"_index":1119,"title":{},"content":{"60":{"position":[[647,5],[722,4]]}},"keywords":{}}],["on",{"_index":277,"title":{"30":{"position":[[9,3]]}},"content":{"13":{"position":[[81,3]]},"17":{"position":[[0,3]]},"24":{"position":[[384,3]]},"30":{"position":[[94,3]]},"37":{"position":[[980,4]]},"39":{"position":[[1010,3]]},"46":{"position":[[232,3],[326,3],[397,3]]},"47":{"position":[[75,4]]},"48":{"position":[[433,4],[775,3]]},"57":{"position":[[874,4]]},"59":{"position":[[651,3],[4014,4]]}},"keywords":{}}],["onboard",{"_index":419,"title":{},"content":{"20":{"position":[[174,10]]}},"keywords":{}}],["onc",{"_index":109,"title":{},"content":{"6":{"position":[[283,4]]},"8":{"position":[[673,4]]},"37":{"position":[[0,4]]},"39":{"position":[[1283,4]]},"54":{"position":[[73,4]]}},"keywords":{}}],["onclick",{"_index":45,"title":{},"content":{"2":{"position":[[134,11]]}},"keywords":{}}],["onlin",{"_index":545,"title":{},"content":{"25":{"position":[[145,6]]}},"keywords":{}}],["open",{"_index":569,"title":{},"content":{"26":{"position":[[8,4]]},"27":{"position":[[452,4]]}},"keywords":{}}],["oper",{"_index":758,"title":{"56":{"position":[[0,9]]},"63":{"position":[[0,8]]}},"content":{"39":{"position":[[1461,8],[1569,11]]},"48":{"position":[[103,9]]},"50":{"position":[[98,9],[176,10]]},"57":{"position":[[2311,11],[2460,10],[3679,10]]},"58":{"position":[[4224,9],[4250,8]]},"59":{"position":[[11,8],[206,8],[680,9],[2536,9]]},"60":{"position":[[12,8],[158,9],[269,9],[751,9]]},"61":{"position":[[12,8],[628,9],[1155,8],[1701,8]]},"62":{"position":[[11,9],[229,8]]},"63":{"position":[[101,10],[563,9],[637,8],[824,8],[1030,8],[1437,9],[1687,9]]}},"keywords":{}}],["operation",{"_index":462,"title":{},"content":{"22":{"position":[[448,13]]}},"keywords":{}}],["opt",{"_index":988,"title":{},"content":{"57":{"position":[[4479,3]]}},"keywords":{}}],["optim",{"_index":317,"title":{},"content":{"16":{"position":[[112,9]]},"37":{"position":[[1004,13]]},"48":{"position":[[842,12]]},"57":{"position":[[6299,9]]}},"keywords":{}}],["optio",{"_index":594,"title":{},"content":{"26":{"position":[[505,5]]}},"keywords":{}}],["option",{"_index":632,"title":{},"content":{"29":{"position":[[158,9],[218,7]]},"31":{"position":[[5,6],[265,8]]},"32":{"position":[[398,8]]},"57":{"position":[[464,7]]},"58":{"position":[[326,7]]}},"keywords":{}}],["orchestr",{"_index":210,"title":{},"content":{"11":{"position":[[304,14],[370,14]]},"23":{"position":[[711,13]]},"39":{"position":[[702,14]]}},"keywords":{}}],["order",{"_index":1173,"title":{},"content":{"63":{"position":[[1674,5]]}},"keywords":{}}],["organiz",{"_index":494,"title":{"24":{"position":[[3,14]]}},"content":{"24":{"position":[[106,14],[764,14]]}},"keywords":{}}],["other",{"_index":683,"title":{},"content":{"36":{"position":[[378,7]]},"58":{"position":[[3974,6]]}},"keywords":{}}],["out",{"_index":348,"title":{},"content":{"17":{"position":[[224,3]]},"20":{"position":[[29,3]]},"27":{"position":[[371,3],[516,3]]},"39":{"position":[[1695,3]]},"58":{"position":[[2523,4]]},"59":{"position":[[3501,3]]}},"keywords":{}}],["outlin",{"_index":663,"title":{},"content":{"35":{"position":[[248,8]]}},"keywords":{}}],["output",{"_index":242,"title":{},"content":{"11":{"position":[[1213,6]]}},"keywords":{}}],["over",{"_index":248,"title":{},"content":{"12":{"position":[[87,4]]},"16":{"position":[[906,4]]}},"keywords":{}}],["overal",{"_index":265,"title":{},"content":{"12":{"position":[[427,7]]},"13":{"position":[[359,7]]},"16":{"position":[[372,7]]},"39":{"position":[[435,7]]}},"keywords":{}}],["overview",{"_index":568,"title":{},"content":{"25":{"position":[[1323,8]]}},"keywords":{}}],["ownership",{"_index":509,"title":{},"content":{"24":{"position":[[324,9],[419,9]]}},"keywords":{}}],["p",{"_index":151,"title":{},"content":{"8":{"position":[[455,1],[468,1]]}},"keywords":{}}],["pair",{"_index":676,"title":{},"content":{"36":{"position":[[150,6]]}},"keywords":{}}],["paradigm",{"_index":540,"title":{},"content":{"24":{"position":[[930,10]]}},"keywords":{}}],["paramet",{"_index":669,"title":{},"content":{"35":{"position":[[471,11]]},"46":{"position":[[338,10],[466,9]]},"48":{"position":[[470,9]]},"59":{"position":[[1592,10],[1693,11],[1711,10],[2452,9],[3411,9]]}},"keywords":{}}],["parent",{"_index":857,"title":{"53":{"position":[[0,7]]}},"content":{"48":{"position":[[283,6]]},"50":{"position":[[320,7]]},"53":{"position":[[32,6]]},"59":{"position":[[3864,6]]}},"keywords":{}}],["part",{"_index":446,"title":{},"content":{"21":{"position":[[504,4]]},"38":{"position":[[76,4]]},"63":{"position":[[1519,4],[1548,4]]}},"keywords":{}}],["particular",{"_index":258,"title":{},"content":{"12":{"position":[[320,10]]}},"keywords":{}}],["particularli",{"_index":948,"title":{},"content":{"57":{"position":[[2343,12]]}},"keywords":{}}],["pass",{"_index":878,"title":{},"content":{"51":{"position":[[24,6],[260,6]]},"59":{"position":[[1629,4],[2013,4],[3367,6]]}},"keywords":{}}],["past",{"_index":549,"title":{},"content":{"25":{"position":[[385,5]]}},"keywords":{}}],["path",{"_index":132,"title":{},"content":{"7":{"position":[[342,4]]},"25":{"position":[[590,4],[883,4]]},"27":{"position":[[72,4]]},"31":{"position":[[227,5]]},"32":{"position":[[360,5]]},"33":{"position":[[119,5]]},"47":{"position":[[412,5]]},"54":{"position":[[179,5]]},"57":{"position":[[1409,4],[1596,5]]},"58":{"position":[[4644,6],[4708,4]]},"59":{"position":[[326,4],[363,4],[403,4],[817,5],[1150,4],[1530,5],[2216,5]]},"61":{"position":[[724,4],[1237,4],[1483,4]]},"63":{"position":[[1136,4]]}},"keywords":{}}],["path/to/file1.graphql",{"_index":646,"title":{},"content":{"31":{"position":[[301,23]]},"32":{"position":[[425,23]]}},"keywords":{}}],["path/to/file2.graphql",{"_index":647,"title":{},"content":{"31":{"position":[[325,23]]},"32":{"position":[[449,23]]}},"keywords":{}}],["path=$path:~/.tailcall/bin",{"_index":138,"title":{},"content":{"7":{"position":[[417,26]]}},"keywords":{}}],["pattern",{"_index":496,"title":{},"content":{"24":{"position":[[32,8]]}},"keywords":{}}],["pellentesqu",{"_index":22,"title":{},"content":{"0":{"position":[[183,12],[362,12],[541,12],[720,12],[899,12],[1078,12],[1257,12],[1436,12],[1615,12],[1794,12],[1973,12],[2152,12],[2331,12],[2510,12],[2689,12],[2868,12]]},"1":{"position":[[57,12]]}},"keywords":{}}],["per",{"_index":1032,"title":{},"content":{"58":{"position":[[694,3]]}},"keywords":{}}],["perceiv",{"_index":525,"title":{},"content":{"24":{"position":[[704,8]]}},"keywords":{}}],["perform",{"_index":112,"title":{"14":{"position":[[11,12]]},"19":{"position":[[15,12]]}},"content":{"6":{"position":[[326,9]]},"10":{"position":[[402,7]]},"12":{"position":[[463,11]]},"14":{"position":[[91,11]]},"15":{"position":[[480,7]]},"16":{"position":[[184,7],[263,11],[639,11],[807,11]]},"18":{"position":[[272,11],[360,11],[454,8]]},"19":{"position":[[102,11],[337,7]]},"21":{"position":[[249,11]]},"37":{"position":[[289,11],[694,11]]},"57":{"position":[[4537,11],[4988,12],[5235,7],[5470,11]]},"58":{"position":[[5018,11]]},"61":{"position":[[1807,11]]}},"keywords":{}}],["permit",{"_index":972,"title":{},"content":{"57":{"position":[[3443,9]]},"58":{"position":[[3400,9]]}},"keywords":{}}],["perspect",{"_index":505,"title":{},"content":{"24":{"position":[[226,11]]}},"keywords":{}}],["pertin",{"_index":668,"title":{},"content":{"35":{"position":[[437,9]]}},"keywords":{}}],["phase",{"_index":992,"title":{},"content":{"57":{"position":[[4785,5]]}},"keywords":{}}],["phone",{"_index":829,"title":{},"content":{"45":{"position":[[277,6]]}},"keywords":{}}],["place",{"_index":476,"title":{},"content":{"23":{"position":[[309,5],[329,5]]},"57":{"position":[[3174,5]]}},"keywords":{}}],["placehold",{"_index":775,"title":{},"content":{"41":{"position":[[79,11]]},"43":{"position":[[365,11]]},"57":{"position":[[2838,11]]},"63":{"position":[[1190,11]]}},"keywords":{}}],["platform",{"_index":102,"title":{},"content":{"5":{"position":[[320,8]]},"11":{"position":[[542,9]]}},"keywords":{}}],["playground",{"_index":615,"title":{},"content":{"27":{"position":[[285,11],[461,10]]}},"keywords":{}}],["pleas",{"_index":764,"title":{},"content":{"39":{"position":[[1669,6]]},"44":{"position":[[414,6]]},"59":{"position":[[3488,6]]}},"keywords":{}}],["plu",{"_index":638,"title":{"30":{"position":[[4,4]]}},"content":{"30":{"position":[[89,4]]},"46":{"position":[[321,4],[392,4]]},"48":{"position":[[770,4]]}},"keywords":{}}],["plugin",{"_index":51,"title":{},"content":{"3":{"position":[[53,7]]}},"keywords":{}}],["point",{"_index":179,"title":{},"content":{"10":{"position":[[196,5]]},"18":{"position":[[691,5]]}},"keywords":{}}],["polici",{"_index":1044,"title":{},"content":{"58":{"position":[[1833,9]]}},"keywords":{}}],["pool",{"_index":1024,"title":{},"content":{"58":{"position":[[430,4]]}},"keywords":{}}],["poolidletimeout",{"_index":1023,"title":{},"content":{"58":{"position":[[373,16]]}},"keywords":{}}],["poolmaxidleperhost",{"_index":1031,"title":{},"content":{"58":{"position":[[611,19]]}},"keywords":{}}],["poor",{"_index":269,"title":{},"content":{"12":{"position":[[555,4]]},"37":{"position":[[689,4]]}},"keywords":{}}],["port",{"_index":158,"title":{},"content":{"8":{"position":[[657,4]]},"57":{"position":[[511,5],[536,4],[610,4],[709,4],[841,6],[915,4]]}},"keywords":{}}],["pose",{"_index":1005,"title":{},"content":{"57":{"position":[[5789,4]]}},"keywords":{}}],["post",{"_index":2,"title":{"0":{"position":[[10,4]]},"1":{"position":[[11,4]]},"2":{"position":[[9,4]]},"42":{"position":[[9,6]]}},"content":{"0":{"position":[[40,5],[98,4]]},"2":{"position":[[5,5],[116,6]]},"3":{"position":[[182,4],[290,4],[338,4]]},"11":{"position":[[476,5],[678,6],[704,6],[745,4],[874,4],[1246,4]]},"25":{"position":[[268,5],[826,5],[888,6],[895,6],[966,4],[1008,5],[1023,4]]},"26":{"position":[[184,5],[547,5],[822,5]]},"38":{"position":[[262,5]]},"41":{"position":[[126,5],[172,6]]},"42":{"position":[[41,6],[133,5],[220,5]]},"43":{"position":[[15,5],[180,5],[499,5],[652,5]]},"45":{"position":[[161,6],[168,6],[314,4],[481,6],[498,4],[608,4]]},"46":{"position":[[443,5],[563,5],[676,5],[694,4]]},"47":{"position":[[336,4]]},"48":{"position":[[290,5],[311,6],[764,5],[803,4]]},"52":{"position":[[66,4],[256,4]]},"53":{"position":[[58,6],[65,6],[111,4],[452,4],[551,4],[621,4]]},"59":{"position":[[1364,5],[1794,6],[1963,4],[2333,4],[3523,4],[3871,5],[3892,6]]},"61":{"position":[[332,4],[532,5],[791,4],[824,4],[947,5],[1548,4]]},"63":{"position":[[247,5],[299,4],[387,4],[1367,4],[1493,6]]}},"keywords":{}}],["post'",{"_index":783,"title":{},"content":{"43":{"position":[[259,6],[546,6]]}},"keywords":{}}],["post.us",{"_index":850,"title":{},"content":{"47":{"position":[[286,9]]}},"keywords":{}}],["postuserstreet",{"_index":1136,"title":{},"content":{"61":{"position":[[670,14],[1013,14]]}},"keywords":{}}],["postuserstreet(id",{"_index":1131,"title":{},"content":{"61":{"position":[[507,18],[899,18]]}},"keywords":{}}],["potent",{"_index":811,"title":{},"content":{"44":{"position":[[22,6]]}},"keywords":{}}],["potenti",{"_index":514,"title":{},"content":{"24":{"position":[[452,9]]},"29":{"position":[[81,9]]},"44":{"position":[[218,9]]},"46":{"position":[[67,9],[236,9]]},"57":{"position":[[4051,9],[5507,9],[6374,9]]}},"keywords":{}}],["power",{"_index":40,"title":{},"content":{"2":{"position":[[74,5]]},"3":{"position":[[33,7]]},"15":{"position":[[300,8]]},"16":{"position":[[750,8]]},"57":{"position":[[1977,8]]},"63":{"position":[[1769,8]]}},"keywords":{}}],["practic",{"_index":361,"title":{},"content":{"18":{"position":[[158,9]]},"37":{"position":[[907,9]]}},"keywords":{}}],["precis",{"_index":1175,"title":{},"content":{"63":{"position":[[1837,8]]}},"keywords":{}}],["predict",{"_index":386,"title":{},"content":{"19":{"position":[[90,7]]}},"keywords":{}}],["prepend",{"_index":1073,"title":{},"content":{"58":{"position":[[4607,7]]}},"keywords":{}}],["present",{"_index":486,"title":{},"content":{"23":{"position":[[655,12]]},"24":{"position":[[605,10],[818,8]]},"55":{"position":[[251,7]]},"60":{"position":[[611,9]]},"61":{"position":[[259,10]]}},"keywords":{}}],["prevent",{"_index":979,"title":{},"content":{"57":{"position":[[4040,10],[4380,10]]}},"keywords":{}}],["print",{"_index":161,"title":{},"content":{"8":{"position":[[747,7]]},"27":{"position":[[364,6]]}},"keywords":{}}],["proactiv",{"_index":812,"title":{},"content":{"44":{"position":[[188,9]]}},"keywords":{}}],["problem",{"_index":164,"title":{"9":{"position":[[0,7]]}},"content":{"12":{"position":[[76,7]]},"15":{"position":[[371,7]]},"21":{"position":[[316,7]]},"22":{"position":[[293,7]]},"37":{"position":[[360,8],[384,7],[741,7]]},"43":{"position":[[328,8],[674,7],[1054,7]]},"45":{"position":[[594,8]]},"46":{"position":[[527,8],[636,8]]},"48":{"position":[[883,8]]}},"keywords":{}}],["process",{"_index":199,"title":{},"content":{"11":{"position":[[30,7]]},"13":{"position":[[266,7]]},"16":{"position":[[927,8]]},"37":{"position":[[115,7],[1268,8]]},"44":{"position":[[492,7]]},"61":{"position":[[58,9],[193,8],[1138,8]]}},"keywords":{}}],["produc",{"_index":721,"title":{},"content":{"38":{"position":[[126,8]]}},"keywords":{}}],["product",{"_index":372,"title":{},"content":{"18":{"position":[[471,11]]},"22":{"position":[[265,11]]},"24":{"position":[[364,13]]},"39":{"position":[[945,11],[1315,11],[1403,7],[1515,10]]},"44":{"position":[[171,11]]},"57":{"position":[[2042,10],[3945,10],[4927,10],[6260,10]]}},"keywords":{}}],["profil",{"_index":219,"title":{},"content":{"11":{"position":[[491,7],[937,7]]}},"keywords":{}}],["project",{"_index":652,"title":{},"content":{"33":{"position":[[43,8]]}},"keywords":{}}],["project'",{"_index":912,"title":{},"content":{"57":{"position":[[373,9]]}},"keywords":{}}],["promot",{"_index":1150,"title":{},"content":{"61":{"position":[[1790,9]]}},"keywords":{}}],["prompt",{"_index":654,"title":{},"content":{"33":{"position":[[165,7]]}},"keywords":{}}],["prone",{"_index":364,"title":{},"content":{"18":{"position":[[254,5],[616,5]]}},"keywords":{}}],["propel",{"_index":535,"title":{},"content":{"24":{"position":[[862,7]]}},"keywords":{}}],["properli",{"_index":300,"title":{},"content":{"15":{"position":[[248,8]]},"18":{"position":[[561,8]]}},"keywords":{}}],["properti",{"_index":1169,"title":{},"content":{"63":{"position":[[774,9]]}},"keywords":{}}],["protect",{"_index":965,"title":{},"content":{"57":{"position":[[3258,9]]}},"keywords":{}}],["protocol",{"_index":325,"title":{},"content":{"16":{"position":[[550,10]]},"36":{"position":[[166,8]]}},"keywords":{}}],["provid",{"_index":316,"title":{},"content":{"16":{"position":[[67,9],[868,7]]},"26":{"position":[[475,9]]},"27":{"position":[[351,8]]},"33":{"position":[[105,8]]},"37":{"position":[[245,8],[1152,8]]},"39":{"position":[[332,8]]},"47":{"position":[[148,8]]},"57":{"position":[[1725,9],[2782,8],[3154,9]]},"58":{"position":[[2011,8],[3578,7],[4318,8]]},"59":{"position":[[2943,7],[3017,8]]},"60":{"position":[[32,8]]},"62":{"position":[[261,8],[360,8]]}},"keywords":{}}],["proxi",{"_index":648,"title":{},"content":{"32":{"position":[[69,5]]},"35":{"position":[[175,6],[524,6]]},"39":{"position":[[1120,6]]},"58":{"position":[[1586,6],[1597,5],[1750,5],[2203,6]]}},"keywords":{}}],["proxy'",{"_index":1048,"title":{},"content":{"58":{"position":[[2043,7]]}},"keywords":{}}],["publicli",{"_index":967,"title":{},"content":{"57":{"position":[[3346,8]]}},"keywords":{}}],["publish",{"_index":649,"title":{"37":{"position":[[0,8]]}},"content":{"32":{"position":[[120,7]]},"37":{"position":[[48,7],[104,10],[1085,10],[1257,10]]},"38":{"position":[[142,10]]},"44":{"position":[[158,9]]}},"keywords":{}}],["pull",{"_index":144,"title":{},"content":{"8":{"position":[[168,4],[242,4]]}},"keywords":{}}],["purpos",{"_index":471,"title":{},"content":{"23":{"position":[[161,7]]},"39":{"position":[[244,7],[455,7]]}},"keywords":{}}],["put",{"_index":1098,"title":{},"content":{"59":{"position":[[1370,4],[1971,3]]}},"keywords":{}}],["queri",{"_index":557,"title":{"30":{"position":[[13,8]]}},"content":{"25":{"position":[[543,6],[550,5],[563,5],[609,5]]},"26":{"position":[[108,5],[154,5],[160,5],[222,5],[954,7]]},"30":{"position":[[98,7]]},"45":{"position":[[133,6],[140,5],[153,5]]},"46":{"position":[[330,7],[401,7],[435,5],[497,5],[555,5],[604,5],[682,6]]},"47":{"position":[[437,6]]},"48":{"position":[[113,6]]},"51":{"position":[[46,6],[101,6],[126,5],[279,6]]},"53":{"position":[[50,5],[212,6],[626,6]]},"54":{"position":[[107,5]]},"55":{"position":[[84,5]]},"57":{"position":[[232,6],[239,5],[653,6],[660,5],[1326,6],[1333,5],[1548,5],[1904,6],[1911,5],[2574,6],[2581,5],[2613,5],[3431,7],[3790,6],[3797,5],[4284,7],[4336,5],[4424,8],[4664,6],[4671,5],[4804,8],[4876,7],[5391,6],[5398,5],[5631,5],[5750,7],[5950,6],[5957,5],[6092,5],[6446,7]]},"58":{"position":[[263,6],[270,5],[576,6],[583,5],[805,6],[812,5],[1044,6],[1051,5],[1287,6],[1294,5],[1551,6],[1558,5],[1969,6],[1976,5],[2625,6],[2632,5],[2833,6],[2840,5],[3066,6],[3073,5],[3283,6],[3290,5],[3740,6],[3747,5],[4450,6],[4457,5],[5164,6],[5171,5],[5538,6],[5545,5]]},"59":{"position":[[116,5],[249,5],[547,8],[695,5],[940,5],[1198,5],[1559,6],[1586,5],[1766,5],[1833,6],[3596,6],[3695,6]]},"61":{"position":[[312,6],[319,5],[499,5],[698,5],[871,6],[878,5],[891,5],[1777,5]]},"62":{"position":[[93,6],[100,5],[113,5]]}},"keywords":{}}],["question",{"_index":763,"title":{},"content":{"39":{"position":[[1658,10]]}},"keywords":{}}],["quia",{"_index":602,"title":{},"content":{"26":{"position":[[704,4]]}},"keywords":{}}],["quibusdam",{"_index":606,"title":{},"content":{"26":{"position":[[765,9]]}},"keywords":{}}],["quick",{"_index":567,"title":{},"content":{"25":{"position":[[1317,5]]}},"keywords":{}}],["quit",{"_index":472,"title":{},"content":{"23":{"position":[[169,5]]}},"keywords":{}}],["quot",{"_index":725,"title":{},"content":{"38":{"position":[[254,7],[305,9]]}},"keywords":{}}],["quot;/extern",{"_index":955,"title":{},"content":{"57":{"position":[[2652,15]]}},"keywords":{}}],["quot;/graphiql"",{"_index":939,"title":{},"content":{"57":{"position":[[1879,22]]}},"keywords":{}}],["quot;/posts"",{"_index":828,"title":{},"content":{"45":{"position":[[187,19]]},"53":{"position":[[84,19]]},"59":{"position":[[1813,19]]}},"keywords":{}}],["quot;/posts/{{value.id}}/comments"",{"_index":883,"title":{},"content":{"52":{"position":[[142,41]]}},"keywords":{}}],["quot;/users"",{"_index":559,"title":{},"content":{"25":{"position":[[641,19]]},"47":{"position":[[418,18]]},"53":{"position":[[192,19]]},"54":{"position":[[185,19]]},"59":{"position":[[156,19],[735,19],[980,19],[1536,19],[2222,19],[2699,19],[3109,19],[3576,19]]},"61":{"position":[[1651,19]]}},"keywords":{}}],["quot;/users/{{args.id}}"",{"_index":880,"title":{},"content":{"51":{"position":[[166,31]]},"59":{"position":[[1238,31]]}},"keywords":{}}],["quot;/users/{{headers.userid}}/comments"",{"_index":901,"title":{},"content":{"55":{"position":[[131,47]]}},"keywords":{}}],["quot;/users/{{userid}}"",{"_index":1164,"title":{},"content":{"63":{"position":[[487,30],[999,30]]}},"keywords":{}}],["quot;/users/{{value.id}}/posts"",{"_index":564,"title":{},"content":{"25":{"position":[[914,38]]}},"keywords":{}}],["quot;/users/{{value.userid}}"",{"_index":831,"title":{},"content":{"45":{"position":[[395,36]]}},"keywords":{}}],["quot;0"",{"_index":1146,"title":{},"content":{"61":{"position":[[1605,14]]}},"keywords":{}}],["quot;address"",{"_index":1134,"title":{},"content":{"61":{"position":[[571,20]]}},"keywords":{}}],["quot;apikey"",{"_index":952,"title":{},"content":{"57":{"position":[[2513,19]]}},"keywords":{}}],["quot;array"",{"_index":892,"title":{},"content":{"53":{"position":[[502,17]]}},"keywords":{}}],["quot;authorization"",{"_index":957,"title":{},"content":{"57":{"position":[[2700,26]]},"58":{"position":[[3686,27],[5507,28]]}},"keywords":{}}],["quot;batching"",{"_index":699,"title":{},"content":{"37":{"position":[[820,20]]}},"keywords":{}}],["quot;bear",{"_index":958,"title":{},"content":{"57":{"position":[[2734,12]]}},"keywords":{}}],["quot;data"",{"_index":580,"title":{},"content":{"26":{"position":[[295,17]]}},"keywords":{}}],["quot;eag",{"_index":697,"title":{},"content":{"37":{"position":[[791,11]]}},"keywords":{}}],["quot;ervin",{"_index":597,"title":{},"content":{"26":{"position":[[619,11]]}},"keywords":{}}],["quot;et",{"_index":599,"title":{},"content":{"26":{"position":[[687,8]]}},"keywords":{}}],["quot;front",{"_index":194,"title":{},"content":{"10":{"position":[[597,11]]}},"keywords":{}}],["quot;http://jsonplaceholder.typicode.com"",{"_index":556,"title":{},"content":{"25":{"position":[[492,48]]},"45":{"position":[[82,48]]},"58":{"position":[[525,48],[754,48],[993,48],[1236,48],[1500,48],[1918,48],[2243,48],[2574,48],[2782,48],[3015,48],[3232,48],[4399,48]]}},"keywords":{}}],["quot;http://localhost:3000"",{"_index":1046,"title":{},"content":{"58":{"position":[[1873,35],[2058,34],[2344,33]]}},"keywords":{}}],["quot;https://jsonplaceholder.typicode.com"",{"_index":1093,"title":{},"content":{"59":{"position":[[764,49]]}},"keywords":{}}],["quot;id"",{"_index":582,"title":{},"content":{"26":{"position":[[338,15],[582,15]]},"47":{"position":[[451,15],[514,16]]},"48":{"position":[[127,15],[447,17]]},"53":{"position":[[226,15],[292,17]]},"59":{"position":[[3610,15],[3674,17],[3708,15]]}},"keywords":{}}],["quot;in",{"_index":605,"title":{},"content":{"26":{"position":[[756,8]]}},"keywords":{}}],["quot;john"",{"_index":1156,"title":{},"content":{"62":{"position":[[152,17]]}},"keywords":{}}],["quot;leann",{"_index":584,"title":{},"content":{"26":{"position":[[375,12]]}},"keywords":{}}],["quot;name"",{"_index":583,"title":{},"content":{"26":{"position":[[357,17],[601,17]]},"61":{"position":[[1620,18]]},"63":{"position":[[419,19],[617,19]]}},"keywords":{}}],["quot;operators"",{"_index":1162,"title":{},"content":{"63":{"position":[[122,22]]}},"keywords":{}}],["quot;parent"",{"_index":890,"title":{},"content":{"53":{"position":[[418,18]]}},"keywords":{}}],["quot;post"",{"_index":1102,"title":{},"content":{"59":{"position":[[1512,17],[2198,17]]}},"keywords":{}}],["quot;posts"",{"_index":586,"title":{},"content":{"26":{"position":[[402,18],[645,18]]}},"keywords":{}}],["quot;query"",{"_index":724,"title":{},"content":{"38":{"position":[[233,20]]}},"keywords":{}}],["quot;street"",{"_index":1135,"title":{},"content":{"61":{"position":[[592,20]]}},"keywords":{}}],["quot;sunt",{"_index":588,"title":{},"content":{"26":{"position":[[444,10]]}},"keywords":{}}],["quot;tailcall"",{"_index":1108,"title":{},"content":{"59":{"position":[[2764,23],[3174,22]]}},"keywords":{}}],["quot;tailcall/1.0"",{"_index":1062,"title":{},"content":{"58":{"position":[[3197,25]]}},"keywords":{}}],["quot;title"",{"_index":587,"title":{},"content":{"26":{"position":[[425,18],[668,18],[737,18]]}},"keywords":{}}],["quot;us",{"_index":1110,"title":{},"content":{"59":{"position":[[3203,10]]}},"keywords":{}}],["quot;user"",{"_index":1133,"title":{},"content":{"61":{"position":[[552,18]]}},"keywords":{}}],["quot;userid"",{"_index":888,"title":{},"content":{"53":{"position":[[320,19]]},"59":{"position":[[1847,19]]},"60":{"position":[[452,19],[489,19]]}},"keywords":{}}],["quot;username"",{"_index":1163,"title":{},"content":{"63":{"position":[[453,21],[802,21]]}},"keywords":{}}],["quot;users"",{"_index":581,"title":{},"content":{"26":{"position":[[315,18]]},"61":{"position":[[1585,19]]}},"keywords":{}}],["quot;users","0","name"",{"_index":1144,"title":{},"content":{"61":{"position":[[1491,51]]}},"keywords":{}}],["quot;x",{"_index":1068,"title":{},"content":{"58":{"position":[[3714,7],[5484,8]]},"59":{"position":[[2735,7],[3145,7]]}},"keywords":{}}],["quot;your_api_key_here"",{"_index":953,"title":{},"content":{"57":{"position":[[2540,31],[2859,30]]}},"keywords":{}}],["quot;{{args.id}}"",{"_index":1105,"title":{},"content":{"59":{"position":[[1874,26]]}},"keywords":{}}],["quot;{{args.input}}"",{"_index":1106,"title":{},"content":{"59":{"position":[[2248,27]]}},"keywords":{}}],["quot;{{args.name}}"",{"_index":1112,"title":{},"content":{"59":{"position":[[3233,28]]}},"keywords":{}}],["quot;{{env.api_endpoint}}"",{"_index":897,"title":{},"content":{"54":{"position":[[145,33]]}},"keywords":{}}],["quot;{{value.userid}}"",{"_index":852,"title":{},"content":{"47":{"position":[[474,30]]},"48":{"position":[[150,31]]},"53":{"position":[[249,31]]},"59":{"position":[[3633,31],[3731,31]]}},"keywords":{}}],["rang",{"_index":665,"title":{},"content":{"35":{"position":[[314,5]]}},"keywords":{}}],["rate",{"_index":190,"title":{},"content":{"10":{"position":[[440,4]]},"23":{"position":[[98,4]]}},"keywords":{}}],["raw",{"_index":723,"title":{},"content":{"38":{"position":[[229,3]]}},"keywords":{}}],["reach",{"_index":766,"title":{},"content":{"39":{"position":[[1689,5]]},"58":{"position":[[1700,8]]}},"keywords":{}}],["react",{"_index":41,"title":{},"content":{"2":{"position":[[83,5]]}},"keywords":{}}],["readi",{"_index":687,"title":{},"content":{"37":{"position":[[38,6]]},"57":{"position":[[1771,5]]}},"keywords":{}}],["real",{"_index":791,"title":{},"content":{"43":{"position":[[610,4]]}},"keywords":{}}],["receipt",{"_index":670,"title":{},"content":{"35":{"position":[[488,7]]}},"keywords":{}}],["receiv",{"_index":782,"title":{},"content":{"43":{"position":[[167,8]]},"55":{"position":[[46,8]]},"57":{"position":[[1169,8],[5162,8]]}},"keywords":{}}],["recent",{"_index":229,"title":{},"content":{"11":{"position":[[697,6]]}},"keywords":{}}],["recommend",{"_index":701,"title":{},"content":{"37":{"position":[[883,9]]},"57":{"position":[[2013,11]]}},"keywords":{}}],["redirect",{"_index":1051,"title":{},"content":{"58":{"position":[[2391,10]]}},"keywords":{}}],["reduc",{"_index":285,"title":{"14":{"position":[[3,7]]}},"content":{"14":{"position":[[83,7]]},"37":{"position":[[844,6]]},"47":{"position":[[94,8]]},"48":{"position":[[716,6]]},"57":{"position":[[2177,7]]},"58":{"position":[[5033,8]]},"61":{"position":[[1768,8]]}},"keywords":{}}],["refer",{"_index":198,"title":{},"content":{"11":{"position":[[16,6],[803,9],[1304,9]]},"37":{"position":[[411,6]]},"43":{"position":[[382,6]]},"44":{"position":[[421,5]]},"54":{"position":[[247,6]]},"55":{"position":[[203,6]]},"57":{"position":[[522,6]]},"58":{"position":[[4128,6]]},"59":{"position":[[570,6],[828,6],[1286,6],[3495,5]]},"60":{"position":[[550,8]]}},"keywords":{}}],["registri",{"_index":149,"title":{},"content":{"8":{"position":[[371,9]]},"35":{"position":[[148,9],[194,8],[600,9]]},"37":{"position":[[90,9]]},"38":{"position":[[160,9]]}},"keywords":{}}],["regular",{"_index":57,"title":{},"content":{"3":{"position":[[123,7]]}},"keywords":{}}],["releas",{"_index":444,"title":{"22":{"position":[[11,8]]}},"content":{"21":{"position":[[463,8]]},"39":{"position":[[1068,9]]}},"keywords":{}}],["relev",{"_index":257,"title":{},"content":{"12":{"position":[[300,8]]}},"keywords":{}}],["reli",{"_index":448,"title":{},"content":{"21":{"position":[[556,4]]}},"keywords":{}}],["reliabl",{"_index":303,"title":{},"content":{"15":{"position":[[319,8]]},"16":{"position":[[279,11],[623,11],[823,11]]},"18":{"position":[[441,8]]},"21":{"position":[[233,11]]},"39":{"position":[[666,8]]}},"keywords":{}}],["remain",{"_index":246,"title":{},"content":{"12":{"position":[[35,7]]},"35":{"position":[[29,6]]},"39":{"position":[[519,7]]},"58":{"position":[[4681,7]]}},"keywords":{}}],["renam",{"_index":1115,"title":{},"content":{"60":{"position":[[182,6]]}},"keywords":{}}],["repellat",{"_index":591,"title":{},"content":{"26":{"position":[[466,8]]}},"keywords":{}}],["replac",{"_index":910,"title":{},"content":{"57":{"position":[[296,7]]},"63":{"position":[[1216,8]]}},"keywords":{}}],["repositori",{"_index":106,"title":{},"content":{"6":{"position":[[99,10]]},"35":{"position":[[215,10]]}},"keywords":{}}],["reprehenderit"",{"_index":595,"title":{},"content":{"26":{"position":[[511,19]]}},"keywords":{}}],["repres",{"_index":842,"title":{},"content":{"46":{"position":[[581,10]]},"52":{"position":[[5,10]]},"54":{"position":[[5,10]]},"59":{"position":[[1571,10]]},"61":{"position":[[1058,12]]}},"keywords":{}}],["represent",{"_index":731,"title":{},"content":{"39":{"position":[[89,14]]},"58":{"position":[[4493,15]]}},"keywords":{}}],["request",{"_index":173,"title":{},"content":{"10":{"position":[[93,8],[227,8]]},"11":{"position":[[137,8],[599,8],[896,7]]},"12":{"position":[[126,7]]},"13":{"position":[[285,8]]},"14":{"position":[[176,8]]},"19":{"position":[[232,8]]},"25":{"position":[[457,8]]},"35":{"position":[[508,7],[750,7]]},"36":{"position":[[133,7]]},"37":{"position":[[448,7],[497,8],[647,7],[865,8]]},"38":{"position":[[24,7],[88,8]]},"42":{"position":[[17,7],[107,7]]},"43":{"position":[[60,7],[201,8],[238,8],[310,9],[423,7],[461,9],[529,7],[592,9],[705,7],[766,9],[969,9],[1135,9]]},"44":{"position":[[118,8]]},"45":{"position":[[640,7]]},"46":{"position":[[727,7]]},"47":{"position":[[61,8]]},"48":{"position":[[419,8],[737,8],[787,7]]},"55":{"position":[[29,7]]},"57":{"position":[[3048,8]]},"58":{"position":[[1669,8],[2129,8],[2296,7],[3159,9],[3459,9],[3890,8]]},"59":{"position":[[470,7],[2338,7],[2417,7],[2510,7],[2810,7],[3033,8],[3381,8],[3442,8],[4000,8]]},"63":{"position":[[1088,7],[1264,8],[1627,8]]}},"keywords":{}}],["requir",{"_index":241,"title":{},"content":{"11":{"position":[[1148,8]]},"12":{"position":[[200,8]]},"17":{"position":[[94,8],[308,12]]},"18":{"position":[[492,7]]},"20":{"position":[[289,8]]},"21":{"position":[[41,8],[128,8],[363,8]]},"36":{"position":[[68,8]]},"37":{"position":[[581,7]]},"41":{"position":[[108,8]]},"57":{"position":[[1805,9],[2477,8]]}},"keywords":{}}],["resili",{"_index":383,"title":{},"content":{"18":{"position":[[820,9]]},"35":{"position":[[460,10]]},"36":{"position":[[208,10]]}},"keywords":{}}],["resolv",{"_index":524,"title":{},"content":{"24":{"position":[[679,9]]},"25":{"position":[[1227,7]]},"63":{"position":[[1063,8]]}},"keywords":{}}],["resourc",{"_index":798,"title":{},"content":{"43":{"position":[[793,10]]},"57":{"position":[[5776,9],[6309,8],[6472,10]]}},"keywords":{}}],["respect",{"_index":1074,"title":{},"content":{"58":{"position":[[4633,10]]}},"keywords":{}}],["respons",{"_index":182,"title":{},"content":{"10":{"position":[[242,11],[329,8]]},"11":{"position":[[730,9],[879,9],[977,9],[1117,8],[1179,8]]},"14":{"position":[[252,8]]},"26":{"position":[[262,8]]},"36":{"position":[[141,8]]},"43":{"position":[[826,8]]},"48":{"position":[[524,9],[669,8]]},"57":{"position":[[1081,10],[1159,9],[5143,9],[6228,8]]},"58":{"position":[[2500,8],[2733,9]]},"62":{"position":[[51,8]]}},"keywords":{}}],["rest",{"_index":326,"title":{},"content":{"16":{"position":[[569,4]]},"25":{"position":[[87,4],[152,4]]},"59":{"position":[[88,4],[312,4],[375,4]]}},"keywords":{}}],["restrict",{"_index":1065,"title":{},"content":{"58":{"position":[[3623,8]]}},"keywords":{}}],["result",{"_index":205,"title":{},"content":{"11":{"position":[[181,8],[1070,7]]},"12":{"position":[[544,7]]},"13":{"position":[[329,8]]},"14":{"position":[[73,6],[233,6]]},"19":{"position":[[416,7]]},"37":{"position":[[466,7],[623,9]]},"43":{"position":[[282,9]]},"53":{"position":[[608,7]]},"58":{"position":[[4341,7]]},"61":{"position":[[1259,9]]},"63":{"position":[[1717,9]]}},"keywords":{}}],["retriev",{"_index":228,"title":{},"content":{"11":{"position":[[688,8],[917,8]]},"35":{"position":[[554,9]]},"42":{"position":[[28,8]]}},"keywords":{}}],["return",{"_index":187,"title":{},"content":{"10":{"position":[[315,9]]},"25":{"position":[[700,8],[992,8]]},"37":{"position":[[545,7]]},"61":{"position":[[1041,7]]}},"keywords":{}}],["reusabl",{"_index":353,"title":{},"content":{"17":{"position":[[378,11]]}},"keywords":{}}],["revert",{"_index":460,"title":{},"content":{"22":{"position":[[366,9],[407,9]]}},"keywords":{}}],["rfc",{"_index":1081,"title":{},"content":{"58":{"position":[[4989,4]]}},"keywords":{}}],["rhoncu",{"_index":27,"title":{},"content":{"0":{"position":[[233,7],[412,7],[591,7],[770,7],[949,7],[1128,7],[1307,7],[1486,7],[1665,7],[1844,7],[2023,7],[2202,7],[2381,7],[2560,7],[2739,7],[2918,7]]},"1":{"position":[[107,7]]}},"keywords":{}}],["rich",{"_index":274,"title":{},"content":{"13":{"position":[[11,4]]}},"keywords":{}}],["right",{"_index":814,"title":{},"content":{"44":{"position":[[251,5]]}},"keywords":{}}],["risk",{"_index":292,"title":{"15":{"position":[[13,5]]}},"content":{"15":{"position":[[84,6]]}},"keywords":{}}],["rivet",{"_index":534,"title":{},"content":{"24":{"position":[[838,8]]}},"keywords":{}}],["robust",{"_index":382,"title":{},"content":{"18":{"position":[[809,6]]},"36":{"position":[[515,6]]}},"keywords":{}}],["rollbacks.break",{"_index":757,"title":{},"content":{"39":{"position":[[1411,18]]}},"keywords":{}}],["rout",{"_index":183,"title":{},"content":{"10":{"position":[[258,7]]},"21":{"position":[[410,7]]},"58":{"position":[[1686,6],[1812,7]]}},"keywords":{}}],["run",{"_index":88,"title":{"46":{"position":[[0,7]]}},"content":{"5":{"position":[[100,7],[224,8]]},"6":{"position":[[125,7],[271,8]]},"8":{"position":[[381,3],[450,3],[758,7]]},"22":{"position":[[254,7]]},"26":{"position":[[210,7]]},"27":{"position":[[12,3]]},"37":{"position":[[146,3]]},"39":{"position":[[882,3]]},"57":{"position":[[571,8],[5651,3],[5742,7],[6434,3]]}},"keywords":{}}],["runtim",{"_index":754,"title":{},"content":{"39":{"position":[[1351,8]]}},"keywords":{}}],["s",{"_index":125,"title":{},"content":{"7":{"position":[[157,1]]}},"keywords":{}}],["safeguard",{"_index":1003,"title":{},"content":{"57":{"position":[[5719,9]]}},"keywords":{}}],["safeti",{"_index":756,"title":{},"content":{"39":{"position":[[1393,6]]}},"keywords":{}}],["same",{"_index":491,"title":{},"content":{"23":{"position":[[791,4]]},"25":{"position":[[1262,4]]},"35":{"position":[[40,4]]},"38":{"position":[[109,4]]},"39":{"position":[[932,4]]},"63":{"position":[[1753,5]]}},"keywords":{}}],["sampl",{"_index":825,"title":{},"content":{"45":{"position":[[10,6]]}},"keywords":{}}],["scenario",{"_index":215,"title":{"41":{"position":[[0,9]]}},"content":{"11":{"position":[[409,8]]},"18":{"position":[[189,10]]},"59":{"position":[[3273,9]]}},"keywords":{}}],["schema",{"_index":542,"title":{"31":{"position":[[2,7]]}},"content":{"25":{"position":[[71,6],[328,7],[466,6],[1209,6],[1248,6],[1350,6]]},"27":{"position":[[344,6]]},"29":{"position":[[312,6]]},"31":{"position":[[39,6],[110,6],[294,6]]},"33":{"position":[[85,6]]},"35":{"position":[[141,6],[187,6],[392,6]]},"36":{"position":[[117,6]]},"45":{"position":[[56,6],[440,6]]},"47":{"position":[[312,6]]},"57":{"position":[[43,6],[192,6],[624,6],[1277,6],[1836,6],[2486,6],[3566,6],[3745,6],[4098,6],[4312,7],[4372,7],[4617,6],[5064,6],[5342,6],[5904,6]]},"58":{"position":[[220,6],[478,6],[704,6],[944,6],[1188,6],[1447,6],[1843,6],[2528,6],[2743,6],[2971,6],[3169,6],[3653,6],[4373,6],[5121,6],[5424,6]]},"60":{"position":[[122,7],[223,6],[395,7],[639,7],[705,6],[977,7]]},"61":{"position":[[124,7],[158,6],[295,7],[303,6],[846,6],[862,6],[1001,7],[1729,6]]},"62":{"position":[[68,7],[84,6],[346,6]]},"63":{"position":[[202,6],[1277,6],[1727,6],[1825,6]]}},"keywords":{}}],["screen",{"_index":254,"title":{},"content":{"12":{"position":[[216,7],[331,7]]}},"keywords":{}}],["script",{"_index":128,"title":{},"content":{"7":{"position":[[223,7]]}},"keywords":{}}],["seamless",{"_index":717,"title":{},"content":{"37":{"position":[[1333,8]]}},"keywords":{}}],["second",{"_index":236,"title":{},"content":{"11":{"position":[[835,7]]},"57":{"position":[[6068,8]]},"58":{"position":[[402,7],[871,7],[1109,7],[2456,7],[2689,7],[2894,7]]}},"keywords":{}}],["secret",{"_index":950,"title":{},"content":{"57":{"position":[[2410,8]]}},"keywords":{}}],["section",{"_index":713,"title":{},"content":{"37":{"position":[[1223,9]]},"43":{"position":[[1201,9]]},"45":{"position":[[765,8]]}},"keywords":{}}],["secur",{"_index":294,"title":{},"content":{"15":{"position":[[75,8],[257,8]]},"35":{"position":[[447,8],[743,6]]},"36":{"position":[[301,8],[526,6]]},"57":{"position":[[2164,8],[3114,8],[4028,8],[5794,8],[6349,8]]},"58":{"position":[[1824,8],[3604,8],[4088,8]]}},"keywords":{}}],["see",{"_index":577,"title":{},"content":{"26":{"position":[[251,3]]},"27":{"position":[[208,3]]}},"keywords":{}}],["seek",{"_index":989,"title":{},"content":{"57":{"position":[[4511,7]]}},"keywords":{}}],["seen",{"_index":1139,"title":{},"content":{"61":{"position":[[937,5]]}},"keywords":{}}],["segment",{"_index":1075,"title":{},"content":{"58":{"position":[[4713,9]]},"59":{"position":[[1041,9]]}},"keywords":{}}],["semant",{"_index":733,"title":{},"content":{"39":{"position":[[158,8],[586,8]]}},"keywords":{}}],["send",{"_index":204,"title":{},"content":{"11":{"position":[[129,7],[581,4]]},"12":{"position":[[175,7]]},"13":{"position":[[277,7]]},"42":{"position":[[10,4]]},"59":{"position":[[1980,4],[2325,5]]}},"keywords":{}}],["sens",{"_index":508,"title":{},"content":{"24":{"position":[[315,5]]},"39":{"position":[[1635,6]]}},"keywords":{}}],["sensit",{"_index":295,"title":{},"content":{"15":{"position":[[134,9]]},"57":{"position":[[3212,9]]}},"keywords":{}}],["sent",{"_index":719,"title":{},"content":{"38":{"position":[[66,4]]},"57":{"position":[[4884,4]]},"58":{"position":[[911,4],[1412,4],[2336,4],[2938,4]]}},"keywords":{}}],["separ",{"_index":226,"title":{},"content":{"11":{"position":[[590,8]]},"16":{"position":[[79,8],[346,8]]},"31":{"position":[[233,9]]},"32":{"position":[[366,9]]},"37":{"position":[[638,8]]}},"keywords":{}}],["seri",{"_index":1165,"title":{},"content":{"63":{"position":[[553,6]]}},"keywords":{}}],["serv",{"_index":661,"title":{},"content":{"35":{"position":[[203,6]]},"39":{"position":[[640,6]]},"59":{"position":[[20,6]]}},"keywords":{}}],["server",{"_index":147,"title":{"57":{"position":[[0,8]]}},"content":{"8":{"position":[[278,7],[511,7],[552,6]]},"10":{"position":[[167,6]]},"12":{"position":[[160,6]]},"15":{"position":[[511,6]]},"25":{"position":[[1143,7]]},"27":{"position":[[51,6],[321,6]]},"32":{"position":[[40,7],[109,6],[206,7]]},"43":{"position":[[759,6],[786,6],[849,6],[927,6]]},"47":{"position":[[117,6]]},"54":{"position":[[53,7],[87,6],[334,6]]},"55":{"position":[[71,7],[279,6]]},"57":{"position":[[4,7],[87,6],[130,6],[3460,7],[4244,6],[4530,6],[5685,7],[6181,7],[6465,6]]},"58":{"position":[[77,6],[1635,6],[4300,7]]},"59":{"position":[[447,6],[672,7],[1997,7],[2869,6]]}},"keywords":{}}],["server"",{"_index":1090,"title":{},"content":{"58":{"position":[[5493,13]]},"59":{"position":[[2743,13],[3153,13]]}},"keywords":{}}],["server'",{"_index":947,"title":{},"content":{"57":{"position":[[2302,8]]}},"keywords":{}}],["server(...[serverset",{"_index":907,"title":{},"content":{"57":{"position":[[199,32]]}},"keywords":{}}],["server(enablecachecontrolhead",{"_index":933,"title":{},"content":{"57":{"position":[[1284,33]]}},"keywords":{}}],["server(enableintrospect",{"_index":974,"title":{},"content":{"57":{"position":[[3752,28]]}},"keywords":{}}],["server(enablequeryvalid",{"_index":990,"title":{},"content":{"57":{"position":[[4624,30]]}},"keywords":{}}],["server(enableresponsevalid",{"_index":997,"title":{},"content":{"57":{"position":[[5349,33]]}},"keywords":{}}],["server(globalresponsetimeout",{"_index":1007,"title":{},"content":{"57":{"position":[[5911,30]]}},"keywords":{}}],["server(port",{"_index":917,"title":{},"content":{"57":{"position":[[631,13],[1843,13]]}},"keywords":{}}],["server(var",{"_index":951,"title":{},"content":{"57":{"position":[[2493,13]]}},"keywords":{}}],["serverset",{"_index":911,"title":{},"content":{"57":{"position":[[304,22],[449,14]]}},"keywords":{}}],["servic",{"_index":186,"title":{},"content":{"10":{"position":[[298,7],[355,7],[545,7],[646,9]]},"16":{"position":[[96,7]]},"20":{"position":[[69,7]]},"22":{"position":[[98,9],[123,8]]},"23":{"position":[[401,7]]},"35":{"position":[[20,8],[364,7]]},"43":{"position":[[989,7]]},"57":{"position":[[1208,9],[3142,8],[5189,9],[6394,7]]},"58":{"position":[[3438,8],[3558,9],[3954,9],[4066,9]]}},"keywords":{}}],["set",{"_index":504,"title":{},"content":{"24":{"position":[[217,4],[544,4]]},"29":{"position":[[249,9]]},"54":{"position":[[69,3],[341,9]]},"57":{"position":[[80,3],[414,8],[717,3],[1238,3],[1272,4],[2827,3],[3393,7],[3718,7],[4746,3],[5213,7],[5295,7],[5445,7],[6037,3],[6209,3]]},"58":{"position":[[110,8],[1603,7],[2035,3],[3819,3],[4524,3],[5241,9]]}},"keywords":{}}],["setup",{"_index":822,"title":{},"content":{"44":{"position":[[486,5]]},"57":{"position":[[1829,6]]}},"keywords":{}}],["sha",{"_index":726,"title":{},"content":{"39":{"position":[[4,3]]}},"keywords":{}}],["sha256",{"_index":709,"title":{},"content":{"37":{"position":[[1105,6]]}},"keywords":{}}],["shape",{"_index":672,"title":{},"content":{"35":{"position":[[643,5]]}},"keywords":{}}],["share",{"_index":869,"title":{},"content":{"50":{"position":[[161,6]]},"57":{"position":[[2428,6]]}},"keywords":{}}],["shift",{"_index":517,"title":{},"content":{"24":{"position":[[503,5]]}},"keywords":{}}],["show",{"_index":1159,"title":{},"content":{"62":{"position":[[443,4]]}},"keywords":{}}],["side",{"_index":245,"title":{},"content":{"12":{"position":[[30,4],[539,4]]},"13":{"position":[[75,5],[143,4]]},"14":{"position":[[53,4]]},"15":{"position":[[43,4],[518,4]]},"61":{"position":[[1122,4]]}},"keywords":{}}],["signific",{"_index":341,"title":{},"content":{"17":{"position":[[105,11]]},"18":{"position":[[500,11]]},"48":{"position":[[32,11],[830,11]]}},"keywords":{}}],["similar",{"_index":154,"title":{},"content":{"8":{"position":[[582,7]]},"47":{"position":[[53,7]]}},"keywords":{}}],["simpli",{"_index":52,"title":{},"content":{"3":{"position":[[61,6]]}},"keywords":{}}],["simplic",{"_index":1152,"title":{},"content":{"61":{"position":[[1823,11]]}},"keywords":{}}],["simplifi",{"_index":936,"title":{},"content":{"57":{"position":[[1537,10]]},"61":{"position":[[21,10],[1099,11]]}},"keywords":{}}],["singl",{"_index":178,"title":{},"content":{"10":{"position":[[189,6]]},"11":{"position":[[1110,6]]},"25":{"position":[[313,6]]},"37":{"position":[[441,6]]},"48":{"position":[[337,6]]},"59":{"position":[[3458,6],[3918,6]]}},"keywords":{}}],["sit",{"_index":17,"title":{},"content":{"0":{"position":[[144,3],[296,3],[323,3],[475,3],[502,3],[654,3],[681,3],[833,3],[860,3],[1012,3],[1039,3],[1191,3],[1218,3],[1370,3],[1397,3],[1549,3],[1576,3],[1728,3],[1755,3],[1907,3],[1934,3],[2086,3],[2113,3],[2265,3],[2292,3],[2444,3],[2471,3],[2623,3],[2650,3],[2802,3],[2829,3],[2981,3]]},"1":{"position":[[18,3],[170,3]]},"16":{"position":[[336,4]]}},"keywords":{}}],["situat",{"_index":693,"title":{},"content":{"37":{"position":[[423,9]]},"43":{"position":[[900,9]]},"57":{"position":[[4452,10]]}},"keywords":{}}],["size",{"_index":11,"title":{},"content":{"0":{"position":[[103,4]]},"13":{"position":[[367,4]]},"58":{"position":[[5282,4]]}},"keywords":{}}],["skill",{"_index":503,"title":{},"content":{"24":{"position":[[211,5],[538,5]]}},"keywords":{}}],["slower",{"_index":290,"title":{},"content":{"14":{"position":[[245,6]]},"43":{"position":[[819,6]]}},"keywords":{}}],["small",{"_index":387,"title":{},"content":{"19":{"position":[[126,5]]}},"keywords":{}}],["social",{"_index":222,"title":{},"content":{"11":{"position":[[529,6]]}},"keywords":{}}],["softwar",{"_index":539,"title":{},"content":{"24":{"position":[[909,8]]}},"keywords":{}}],["solut",{"_index":266,"title":{},"content":{"12":{"position":[[435,8]]},"17":{"position":[[80,8],[194,8],[407,8]]},"18":{"position":[[103,8],[238,8],[314,8],[588,8]]},"24":{"position":[[462,9]]},"43":{"position":[[1145,9]]}},"keywords":{}}],["solv",{"_index":315,"title":{"47":{"position":[[0,7]]}},"content":{"16":{"position":[[24,5]]},"21":{"position":[[305,5]]},"37":{"position":[[756,6]]}},"keywords":{}}],["sourc",{"_index":747,"title":{},"content":{"39":{"position":[[990,6]]},"60":{"position":[[343,6],[590,7]]}},"keywords":{}}],["space",{"_index":645,"title":{},"content":{"31":{"position":[[248,6]]},"32":{"position":[[381,6]]}},"keywords":{}}],["spaghetti",{"_index":416,"title":{},"content":{"20":{"position":[[134,9]]}},"keywords":{}}],["spec",{"_index":627,"title":{},"content":{"29":{"position":[[42,5],[338,5]]},"31":{"position":[[65,5]]},"32":{"position":[[186,6]]},"35":{"position":[[103,4]]},"36":{"position":[[30,6]]},"39":{"position":[[1139,4]]}},"keywords":{}}],["special",{"_index":340,"title":{"17":{"position":[[10,12]]}},"content":{"17":{"position":[[68,11]]}},"keywords":{}}],["specif",{"_index":103,"title":{"36":{"position":[[12,13]]}},"content":{"5":{"position":[[329,8]]},"16":{"position":[[131,8]]},"17":{"position":[[299,8]]},"32":{"position":[[80,8]]},"36":{"position":[[16,13],[175,10]]},"37":{"position":[[21,13],[60,13],[231,13],[1138,13]]},"39":{"position":[[37,13],[111,14],[182,13],[911,13],[1241,13],[1447,13]]},"43":{"position":[[74,8]]},"53":{"position":[[655,8]]},"57":{"position":[[332,8],[1658,8],[5864,8]]},"58":{"position":[[4699,8]]},"59":{"position":[[1131,8]]},"63":{"position":[[690,12],[1510,8],[1894,8]]}},"keywords":{}}],["specifi",{"_index":551,"title":{},"content":{"25":{"position":[[425,7],[573,7],[1189,7]]},"31":{"position":[[209,7]]},"32":{"position":[[342,7]]},"55":{"position":[[332,9]]},"57":{"position":[[587,10],[4222,9],[4606,10],[5272,10]]},"58":{"position":[[184,10],[1737,10],[3367,9],[3493,10],[4264,7],[5221,9]]},"59":{"position":[[351,7],[612,10],[655,9],[1395,10],[2560,10]]},"61":{"position":[[1349,7],[1471,7]]},"63":{"position":[[1126,9]]}},"keywords":{}}],["specification'",{"_index":743,"title":{},"content":{"39":{"position":[[570,15]]}},"keywords":{}}],["specul",{"_index":385,"title":{"19":{"position":[[3,11]]}},"content":{},"keywords":{}}],["ssl",{"_index":121,"title":{},"content":{"7":{"position":[[73,3]]}},"keywords":{}}],["stabil",{"_index":753,"title":{},"content":{"39":{"position":[[1301,10],[1581,9]]}},"keywords":{}}],["stabl",{"_index":739,"title":{},"content":{"39":{"position":[[348,6]]}},"keywords":{}}],["stage",{"_index":815,"title":{},"content":{"44":{"position":[[278,6]]},"57":{"position":[[3899,7]]}},"keywords":{}}],["standard",{"_index":346,"title":{},"content":{"17":{"position":[[181,8],[358,15]]},"23":{"position":[[494,8]]},"25":{"position":[[1090,8]]},"36":{"position":[[488,10]]},"37":{"position":[[893,8]]},"57":{"position":[[832,8]]}},"keywords":{}}],["start",{"_index":141,"title":{"32":{"position":[[0,6]]}},"content":{"8":{"position":[[76,9],[532,6]]},"27":{"position":[[41,5],[140,5],[328,6]]},"32":{"position":[[4,5],[196,5],[244,5],[301,5],[419,5]]},"54":{"position":[[94,7]]}},"keywords":{}}],["state",{"_index":689,"title":{},"content":{"37":{"position":[[205,6]]},"61":{"position":[[477,6]]}},"keywords":{}}],["statement",{"_index":165,"title":{"9":{"position":[[8,9]]}},"content":{},"keywords":{}}],["static",{"_index":1103,"title":{},"content":{"59":{"position":[[1642,6],[2026,6]]}},"keywords":{}}],["steer",{"_index":923,"title":{},"content":{"57":{"position":[[848,8]]}},"keywords":{}}],["step",{"_index":116,"title":{},"content":{"7":{"position":[[11,5]]},"8":{"position":[[56,5]]},"18":{"position":[[213,5],[547,5]]},"37":{"position":[[136,6],[1244,4]]}},"keywords":{}}],["store",{"_index":868,"title":{},"content":{"50":{"position":[[122,5]]},"57":{"position":[[2379,5],[3234,6]]}},"keywords":{}}],["strain",{"_index":1004,"title":{},"content":{"57":{"position":[[5769,6]]}},"keywords":{}}],["streamlin",{"_index":1127,"title":{},"content":{"61":{"position":[[214,12],[1740,10]]}},"keywords":{}}],["street",{"_index":1129,"title":{},"content":{"61":{"position":[[447,7],[1083,7]]}},"keywords":{}}],["stress",{"_index":797,"title":{},"content":{"43":{"position":[[776,9]]}},"keywords":{}}],["string",{"_index":232,"title":{},"content":{"11":{"position":[[767,7],[781,7],[1013,7],[1028,7],[1268,7],[1282,7]]},"25":{"position":[[753,7],[771,7],[786,7],[1046,7],[1060,7]]},"45":{"position":[[236,7],[254,7],[269,7],[284,6],[300,6],[350,7],[364,7]]},"47":{"position":[[372,7],[386,7]]},"52":{"position":[[88,7],[102,7]]},"53":{"position":[[147,7],[161,7]]},"59":{"position":[[3083,8],[3545,7]]},"61":{"position":[[389,7],[404,7],[455,7],[469,7],[484,7],[924,6],[1051,6]]},"62":{"position":[[200,6]]},"63":{"position":[[373,6],[975,7],[1353,6],[1384,6]]}},"keywords":{}}],["string>",{"_index":875,"title":{},"content":{"50":{"position":[[356,10],[391,10]]}},"keywords":{}}],["structur",{"_index":579,"title":{},"content":{"26":{"position":[[271,10]]},"35":{"position":[[274,11]]},"39":{"position":[[229,10]]},"57":{"position":[[285,10],[4147,11]]},"61":{"position":[[37,10]]}},"keywords":{}}],["subject",{"_index":478,"title":{},"content":{"23":{"position":[[425,10]]}},"keywords":{}}],["subsequ",{"_index":810,"title":{},"content":{"43":{"position":[[1190,10]]}},"keywords":{}}],["substanti",{"_index":846,"title":{},"content":{"47":{"position":[[80,13]]}},"keywords":{}}],["substitut",{"_index":1095,"title":{},"content":{"59":{"position":[[1085,10],[2070,10]]}},"keywords":{}}],["succe",{"_index":612,"title":{},"content":{"27":{"position":[[187,9]]}},"keywords":{}}],["such",{"_index":38,"title":{},"content":{"2":{"position":[[49,4]]},"3":{"position":[[225,4]]},"10":{"position":[[416,4]]},"15":{"position":[[157,4]]},"16":{"position":[[561,4]]},"19":{"position":[[152,4]]},"21":{"position":[[163,4]]},"23":{"position":[[90,4]]},"25":{"position":[[1135,4]]},"29":{"position":[[259,4]]},"36":{"position":[[219,4]]},"37":{"position":[[783,4]]},"48":{"position":[[349,4]]},"57":{"position":[[1602,4],[4564,4]]},"59":{"position":[[3930,4]]}},"keywords":{}}],["suffer",{"_index":832,"title":{},"content":{"45":{"position":[[573,7]]}},"keywords":{}}],["suggest",{"_index":512,"title":{},"content":{"24":{"position":[[394,7]]}},"keywords":{}}],["suitabl",{"_index":1177,"title":{},"content":{"63":{"position":[[1877,8]]}},"keywords":{}}],["summari",{"_index":3,"title":{},"content":{"0":{"position":[[12,7]]}},"keywords":{}}],["support",{"_index":34,"title":{"21":{"position":[[10,7]]}},"content":{"2":{"position":[[11,7]]},"3":{"position":[[360,8]]},"21":{"position":[[442,7],[579,8]]},"61":{"position":[[1314,8]]}},"keywords":{}}],["sure",{"_index":456,"title":{},"content":{"22":{"position":[[177,4]]},"38":{"position":[[49,4]]},"57":{"position":[[4867,4]]},"62":{"position":[[300,4]]}},"keywords":{}}],["suscept",{"_index":357,"title":{},"content":{"18":{"position":[[71,11]]}},"keywords":{}}],["syntax",{"_index":737,"title":{},"content":{"39":{"position":[[312,7],[403,7]]}},"keywords":{}}],["system",{"_index":120,"title":{},"content":{"7":{"position":[[59,7]]},"8":{"position":[[121,7]]},"16":{"position":[[658,7]]},"21":{"position":[[269,6]]},"35":{"position":[[535,6]]},"36":{"position":[[533,7]]},"39":{"position":[[778,6]]},"48":{"position":[[494,6],[622,6]]},"57":{"position":[[5857,6]]}},"keywords":{}}],["tab",{"_index":622,"title":{},"content":{"27":{"position":[[485,3]]}},"keywords":{}}],["tackl",{"_index":771,"title":{"40":{"position":[[0,8]]}},"content":{},"keywords":{}}],["tag",{"_index":73,"title":{},"content":{"3":{"position":[[369,4]]}},"keywords":{}}],["tailcal",{"_index":87,"title":{"46":{"position":[[12,8]]},"50":{"position":[[11,9]]}},"content":{"5":{"position":[[88,8],[189,8]]},"6":{"position":[[90,8],[215,8],[236,8],[366,8]]},"7":{"position":[[201,8],[270,11]]},"8":{"position":[[23,8],[184,8],[333,8],[389,8],[543,8]]},"24":{"position":[[639,9]]},"27":{"position":[[246,8]]},"32":{"position":[[31,8]]},"33":{"position":[[34,8]]},"35":{"position":[[166,8]]},"37":{"position":[[81,8]]},"44":{"position":[[4,8],[376,8]]},"45":{"position":[[740,8]]},"46":{"position":[[24,8],[206,8]]},"47":{"position":[[135,8]]},"48":{"position":[[188,8]]},"50":{"position":[[3,9]]},"55":{"position":[[62,8]]},"57":{"position":[[160,8],[554,8],[750,8],[1031,8],[1181,8],[1463,9],[1795,9],[2931,8],[3320,8],[5027,8]]},"58":{"position":[[4890,8]]},"59":{"position":[[2891,9],[3769,8]]}},"keywords":{}}],["tailcall/bin",{"_index":136,"title":{},"content":{"7":{"position":[[383,15]]}},"keywords":{}}],["tailcallhq/tailcal",{"_index":93,"title":{},"content":{"5":{"position":[[157,19]]},"6":{"position":[[182,19]]}},"keywords":{}}],["tailcallrc.graphql",{"_index":656,"title":{},"content":{"33":{"position":[[232,19]]}},"keywords":{}}],["tailor",{"_index":351,"title":{},"content":{"17":{"position":[[283,8]]},"57":{"position":[[356,8]]}},"keywords":{}}],["take",{"_index":288,"title":{},"content":{"14":{"position":[[214,4]]},"16":{"position":[[730,4]]},"57":{"position":[[6108,6]]},"61":{"position":[[1169,4]]},"63":{"position":[[1450,4]]}},"keywords":{}}],["taken",{"_index":363,"title":{},"content":{"18":{"position":[[227,6]]}},"keywords":{}}],["tap",{"_index":108,"title":{},"content":{"6":{"position":[[178,3]]},"47":{"position":[[233,3]]}},"keywords":{}}],["target",{"_index":1050,"title":{},"content":{"58":{"position":[[2304,9]]},"63":{"position":[[703,9]]}},"keywords":{}}],["task",{"_index":188,"title":{},"content":{"10":{"position":[[410,5]]}},"keywords":{}}],["tc",{"_index":96,"title":{},"content":{"5":{"position":[[233,2]]},"6":{"position":[[280,2]]},"8":{"position":[[766,2]]},"27":{"position":[[137,2]]},"29":{"position":[[149,2]]},"30":{"position":[[76,2]]},"31":{"position":[[99,2],[283,2]]},"32":{"position":[[241,2],[416,2]]},"33":{"position":[[125,2]]},"46":{"position":[[107,2],[349,2]]}},"keywords":{}}],["tcp",{"_index":1057,"title":{},"content":{"58":{"position":[[2915,3]]}},"keywords":{}}],["tcpkeepal",{"_index":1056,"title":{},"content":{"58":{"position":[[2868,13]]}},"keywords":{}}],["team",{"_index":511,"title":{},"content":{"24":{"position":[[357,6],[441,5],[564,5]]}},"keywords":{}}],["technic",{"_index":531,"title":{},"content":{"24":{"position":[[792,9]]}},"keywords":{}}],["techniqu",{"_index":696,"title":{},"content":{"37":{"position":[[772,10]]},"47":{"position":[[25,9]]}},"keywords":{}}],["tell",{"_index":837,"title":{},"content":{"46":{"position":[[187,5]]},"60":{"position":[[509,5],[915,5]]}},"keywords":{}}],["templat",{"_index":909,"title":{},"content":{"57":{"position":[[275,9]]},"59":{"position":[[1072,9],[1672,8],[2058,8],[2930,9]]}},"keywords":{}}],["tempor",{"_index":28,"title":{},"content":{"0":{"position":[[247,6],[426,6],[605,6],[784,6],[963,6],[1142,6],[1321,6],[1500,6],[1679,6],[1858,6],[2037,6],[2216,6],[2395,6],[2574,6],[2753,6],[2932,6]]},"1":{"position":[[121,6]]},"26":{"position":[[775,7]]}},"keywords":{}}],["termin",{"_index":91,"title":{},"content":{"5":{"position":[[138,9]]},"6":{"position":[[163,9]]},"57":{"position":[[5667,10],[6163,10]]}},"keywords":{}}],["test",{"_index":369,"title":{},"content":{"18":{"position":[[342,7],[372,8],[386,8],[411,8]]},"19":{"position":[[376,7]]},"57":{"position":[[1570,8]]}},"keywords":{}}],["text",{"_index":736,"title":{},"content":{"39":{"position":[[304,4]]}},"keywords":{}}],["textual",{"_index":730,"title":{},"content":{"39":{"position":[[81,7]]}},"keywords":{}}],["that'",{"_index":417,"title":{},"content":{"20":{"position":[[149,6]]},"23":{"position":[[593,6]]}},"keywords":{}}],["that’",{"_index":720,"title":{},"content":{"38":{"position":[[119,6]]}},"keywords":{}}],["therebi",{"_index":865,"title":{},"content":{"48":{"position":[[892,7]]},"61":{"position":[[1091,7]]}},"keywords":{}}],["therefor",{"_index":307,"title":{},"content":{"15":{"position":[[432,9]]},"39":{"position":[[508,10]]},"43":{"position":[[1011,10]]}},"keywords":{}}],["thereof",{"_index":432,"title":{"21":{"position":[[24,9]]}},"content":{},"keywords":{}}],["thing",{"_index":492,"title":{},"content":{"23":{"position":[[796,6]]}},"keywords":{}}],["think",{"_index":893,"title":{},"content":{"53":{"position":[[563,5]]}},"keywords":{}}],["thorough",{"_index":399,"title":{},"content":{"19":{"position":[[345,8]]}},"keywords":{}}],["thoroughli",{"_index":368,"title":{},"content":{"18":{"position":[[331,10]]}},"keywords":{}}],["those",{"_index":619,"title":{},"content":{"27":{"position":[[417,5]]}},"keywords":{}}],["thousand",{"_index":793,"title":{},"content":{"43":{"position":[[639,9],[735,9]]}},"keywords":{}}],["three",{"_index":659,"title":{},"content":{"35":{"position":[[65,5]]}},"keywords":{}}],["throttl",{"_index":469,"title":{},"content":{"23":{"position":[[129,11]]},"36":{"position":[[227,10]]}},"keywords":{}}],["through",{"_index":174,"title":{},"content":{"10":{"position":[[123,7]]},"44":{"position":[[474,7]]},"58":{"position":[[1642,7],[2190,7]]}},"keywords":{}}],["thu",{"_index":686,"title":{},"content":{"36":{"position":[[499,4]]},"58":{"position":[[4568,5]]},"60":{"position":[[985,4]]}},"keywords":{}}],["tidi",{"_index":1148,"title":{},"content":{"61":{"position":[[1716,4]]}},"keywords":{}}],["time",{"_index":289,"title":{},"content":{"14":{"position":[[224,4]]},"19":{"position":[[439,4]]},"39":{"position":[[937,4]]},"43":{"position":[[835,6]]},"58":{"position":[[394,4],[863,4],[1101,4],[2448,4],[2516,6],[2681,4],[2886,4]]},"62":{"position":[[287,4]]}},"keywords":{}}],["timelin",{"_index":218,"title":{},"content":{"11":{"position":[[464,8]]}},"keywords":{}}],["timeout",{"_index":1012,"title":{},"content":{"57":{"position":[[6237,8]]},"58":{"position":[[135,9],[2660,8]]}},"keywords":{}}],["tini",{"_index":426,"title":{},"content":{"20":{"position":[[277,4]]}},"keywords":{}}],["tip",{"_index":39,"title":{},"content":{"2":{"position":[[62,3]]},"57":{"position":[[804,3],[1939,3],[3057,3],[3825,3],[4813,3],[5426,3],[6189,3]]},"58":{"position":[[4651,3]]}},"keywords":{}}],["titl",{"_index":231,"title":{},"content":{"11":{"position":[[760,6],[1261,6]]},"25":{"position":[[1039,6]]},"26":{"position":[[192,5]]},"38":{"position":[[270,5]]},"45":{"position":[[343,6]]},"47":{"position":[[365,6]]},"52":{"position":[[81,6]]},"53":{"position":[[140,6]]}},"keywords":{}}],["togeth",{"_index":227,"title":{},"content":{"11":{"position":[[648,8]]},"26":{"position":[[962,9]]}},"keywords":{}}],["tool",{"_index":336,"title":{},"content":{"16":{"position":[[962,4]]},"44":{"position":[[29,4]]},"57":{"position":[[1986,4],[3612,5]]}},"keywords":{}}],["total",{"_index":784,"title":{},"content":{"43":{"position":[[297,5],[586,5]]}},"keywords":{}}],["touch",{"_index":413,"title":{},"content":{"20":{"position":[[54,8]]}},"keywords":{}}],["toward",{"_index":922,"title":{},"content":{"57":{"position":[[820,7]]}},"keywords":{}}],["transfer",{"_index":513,"title":{},"content":{"24":{"position":[[402,12]]}},"keywords":{}}],["transform",{"_index":1126,"title":{},"content":{"61":{"position":[[178,14]]},"63":{"position":[[167,15],[1295,14]]}},"keywords":{}}],["transmit",{"_index":929,"title":{},"content":{"57":{"position":[[1043,8]]}},"keywords":{}}],["travers",{"_index":1138,"title":{},"content":{"61":{"position":[[776,9]]}},"keywords":{}}],["tri",{"_index":623,"title":{},"content":{"27":{"position":[[509,3]]}},"keywords":{}}],["trigger",{"_index":639,"title":{},"content":{"30":{"position":[[10,8]]},"45":{"position":[[618,7]]},"46":{"position":[[512,7],[702,10]]}},"keywords":{}}],["true",{"_index":934,"title":{},"content":{"57":{"position":[[1318,5],[3737,7],[4594,4],[5383,5]]},"60":{"position":[[886,5],[909,5]]}},"keywords":{}}],["truncat",{"_index":7,"title":{},"content":{"0":{"position":[[60,8]]},"26":{"position":[[553,9],[828,9],[874,9]]}},"keywords":{}}],["tune",{"_index":906,"title":{},"content":{"57":{"position":[[155,4]]}},"keywords":{}}],["turn",{"_index":411,"title":{},"content":{"20":{"position":[[23,5]]},"57":{"position":[[3970,7]]}},"keywords":{}}],["tweak",{"_index":855,"title":{},"content":{"48":{"position":[[44,6]]}},"keywords":{}}],["two",{"_index":225,"title":{},"content":{"11":{"position":[[586,3],[611,3],[1089,3]]},"63":{"position":[[221,3]]}},"keywords":{}}],["type",{"_index":181,"title":{},"content":{"10":{"position":[[219,4]]},"11":{"position":[[740,4],[987,4],[1241,4]]},"25":{"position":[[558,4],[679,4],[726,4],[812,4],[971,4],[1018,4]]},"30":{"position":[[48,5]]},"31":{"position":[[71,5]]},"45":{"position":[[148,4],[209,4],[309,4]]},"47":{"position":[[331,4]]},"51":{"position":[[121,4]]},"52":{"position":[[61,4],[261,5]]},"53":{"position":[[45,4],[106,4],[457,5],[556,6]]},"54":{"position":[[102,4]]},"55":{"position":[[79,4]]},"57":{"position":[[2608,4],[3660,6]]},"59":{"position":[[111,4],[255,5],[690,4],[935,4],[1193,4],[1446,4],[1761,4],[2132,4],[2635,4],[3055,4],[3518,4]]},"60":{"position":[[417,4],[851,4]]},"61":{"position":[[327,4],[362,4],[432,4],[494,4],[704,5],[886,4],[971,5],[1269,4],[1411,4],[1543,4]]},"62":{"position":[[108,4],[182,4],[393,4]]},"63":{"position":[[230,5],[262,4],[304,4],[347,4],[382,4],[1327,4],[1362,4]]}},"keywords":{}}],["typescript",{"_index":870,"title":{},"content":{"50":{"position":[[236,10]]}},"keywords":{}}],["typic",{"_index":168,"title":{},"content":{"10":{"position":[[15,7]]},"16":{"position":[[326,9]]},"19":{"position":[[23,9],[317,9]]},"41":{"position":[[220,9]]},"47":{"position":[[188,7]]},"57":{"position":[[866,7]]}},"keywords":{}}],["ultrici",{"_index":25,"title":{},"content":{"0":{"position":[[216,10],[395,10],[574,10],[753,10],[932,10],[1111,10],[1290,10],[1469,10],[1648,10],[1827,10],[2006,10],[2185,10],[2364,10],[2543,10],[2722,10],[2901,10]]},"1":{"position":[[90,10]]}},"keywords":{}}],["uncov",{"_index":840,"title":{},"content":{"46":{"position":[[476,8]]}},"keywords":{}}],["undeni",{"_index":499,"title":{},"content":{"24":{"position":[[95,10]]}},"keywords":{}}],["under",{"_index":255,"title":{},"content":{"12":{"position":[[228,5]]}},"keywords":{}}],["underli",{"_index":207,"title":{},"content":{"11":{"position":[[245,10]]},"16":{"position":[[1053,10]]},"39":{"position":[[211,10]]},"60":{"position":[[327,10],[574,10]]}},"keywords":{}}],["underpin",{"_index":1091,"title":{},"content":{"59":{"position":[[71,11],[295,11]]}},"keywords":{}}],["understand",{"_index":823,"title":{"48":{"position":[[0,13]]}},"content":{"44":{"position":[[513,10]]},"46":{"position":[[270,13]]},"57":{"position":[[3645,10]]},"63":{"position":[[1856,11]]}},"keywords":{}}],["unifi",{"_index":715,"title":{},"content":{"37":{"position":[[1279,7]]},"57":{"position":[[3166,7]]}},"keywords":{}}],["unintention",{"_index":966,"title":{},"content":{"57":{"position":[[3284,16]]}},"keywords":{}}],["uniqu",{"_index":533,"title":{},"content":{"24":{"position":[[829,8]]},"37":{"position":[[1098,6]]},"39":{"position":[[695,6]]},"48":{"position":[[584,6]]}},"keywords":{}}],["unit",{"_index":370,"title":{},"content":{"18":{"position":[[381,4]]}},"keywords":{}}],["unknown",{"_index":437,"title":{},"content":{"21":{"position":[[280,8]]}},"keywords":{}}],["unless",{"_index":742,"title":{},"content":{"39":{"position":[[538,6]]}},"keywords":{}}],["unlik",{"_index":345,"title":{},"content":{"17":{"position":[[146,6]]}},"keywords":{}}],["unnecessari",{"_index":392,"title":{},"content":{"19":{"position":[[209,11]]},"57":{"position":[[2185,11]]},"58":{"position":[[5042,11]]}},"keywords":{}}],["unnot",{"_index":394,"title":{},"content":{"19":{"position":[[248,9]]}},"keywords":{}}],["unoccupi",{"_index":926,"title":{},"content":{"57":{"position":[[923,11]]}},"keywords":{}}],["unoptim",{"_index":389,"title":{},"content":{"19":{"position":[[160,11]]}},"keywords":{}}],["unreli",{"_index":267,"title":{},"content":{"12":{"position":[[444,10]]}},"keywords":{}}],["unspecifi",{"_index":1083,"title":{},"content":{"58":{"position":[[5076,12]]}},"keywords":{}}],["unstandardis",{"_index":247,"title":{},"content":{"12":{"position":[[43,15]]}},"keywords":{}}],["up",{"_index":251,"title":{},"content":{"12":{"position":[[172,2],[264,2]]},"23":{"position":[[21,2],[469,2]]},"61":{"position":[[1721,2]]}},"keywords":{}}],["updat",{"_index":114,"title":{"48":{"position":[[18,7]]}},"content":{"6":{"position":[[346,6]]}},"keywords":{}}],["upgrad",{"_index":111,"title":{},"content":{"6":{"position":[[310,8],[358,7]]},"20":{"position":[[222,9]]}},"keywords":{}}],["upon",{"_index":129,"title":{},"content":{"7":{"position":[[293,4]]},"35":{"position":[[483,4]]}},"keywords":{}}],["upstream",{"_index":932,"title":{"58":{"position":[[0,10]]}},"content":{"57":{"position":[[1199,8],[5180,8]]},"58":{"position":[[4,8],[68,8],[1660,8],[3429,8],[3549,8],[3945,8],[4214,9]]}},"keywords":{}}],["upstream(...[upstreamset",{"_index":1021,"title":{},"content":{"58":{"position":[[227,35]]}},"keywords":{}}],["upstream(allowedhead",{"_index":1067,"title":{},"content":{"58":{"position":[[3660,25]]}},"keywords":{}}],["upstream(baseurl",{"_index":555,"title":{},"content":{"25":{"position":[[473,18]]},"45":{"position":[[63,18]]},"58":{"position":[[4380,18],[4729,18],[4789,18]]}},"keywords":{}}],["upstream(batch",{"_index":1087,"title":{},"content":{"58":{"position":[[5431,16]]}},"keywords":{}}],["upstream(connecttimeout",{"_index":1054,"title":{},"content":{"58":{"position":[[2535,25]]}},"keywords":{}}],["upstream(enablehttpcach",{"_index":1084,"title":{},"content":{"58":{"position":[[5128,26]]}},"keywords":{}}],["upstream(keepaliveinterv",{"_index":1036,"title":{},"content":{"58":{"position":[[951,28]]}},"keywords":{}}],["upstream(keepalivetimeout",{"_index":1038,"title":{},"content":{"58":{"position":[[1195,27]]}},"keywords":{}}],["upstream(keepalivewhileidl",{"_index":1041,"title":{},"content":{"58":{"position":[[1454,29]]}},"keywords":{}}],["upstream(poolidletimeout",{"_index":1028,"title":{},"content":{"58":{"position":[[485,26]]}},"keywords":{}}],["upstream(poolmaxidleperhost",{"_index":1033,"title":{},"content":{"58":{"position":[[711,29]]}},"keywords":{}}],["upstream(proxi",{"_index":1045,"title":{},"content":{"58":{"position":[[1850,16]]}},"keywords":{}}],["upstream(tcpkeepal",{"_index":1058,"title":{},"content":{"58":{"position":[[2978,23]]}},"keywords":{}}],["upstream(timeout",{"_index":1055,"title":{},"content":{"58":{"position":[[2750,18]]}},"keywords":{}}],["upstream(userag",{"_index":1061,"title":{},"content":{"58":{"position":[[3176,20]]}},"keywords":{}}],["upstreamset",{"_index":1022,"title":{},"content":{"58":{"position":[[310,15]]}},"keywords":{}}],["url",{"_index":553,"title":{},"content":{"25":{"position":[[440,3]]},"27":{"position":[[472,3]]},"48":{"position":[[229,3],[344,4]]},"57":{"position":[[1667,3]]},"58":{"position":[[1756,4],[1867,5],[2051,3],[4155,3],[4620,3],[4677,3]]},"59":{"position":[[589,3],[640,3],[1743,4],[3810,3],[3925,4]]}},"keywords":{}}],["us",{"_index":5,"title":{"44":{"position":[[0,5]]},"47":{"position":[[8,5]]}},"content":{"0":{"position":[[46,3]]},"2":{"position":[[66,3]]},"3":{"position":[[445,3]]},"5":{"position":[[248,3]]},"8":{"position":[[206,5]]},"10":{"position":[[484,6]]},"16":{"position":[[516,5],[955,6]]},"17":{"position":[[27,5]]},"18":{"position":[[23,5]]},"19":{"position":[[57,3]]},"21":{"position":[[330,3]]},"23":{"position":[[256,3],[778,4]]},"25":{"position":[[190,3],[840,3]]},"29":{"position":[[106,3]]},"32":{"position":[[214,3]]},"35":{"position":[[618,4]]},"37":{"position":[[766,5]]},"39":{"position":[[1025,5]]},"43":{"position":[[350,5]]},"45":{"position":[[730,5]]},"46":{"position":[[309,3]]},"48":{"position":[[557,5],[687,5]]},"50":{"position":[[114,4],[216,5]]},"51":{"position":[[65,4],[229,4]]},"52":{"position":[[221,4]]},"55":{"position":[[290,3]]},"57":{"position":[[181,3],[1780,3],[5126,4]]},"58":{"position":[[214,5],[3146,4]]},"59":{"position":[[343,4],[1059,3],[1338,4],[1659,3],[1941,4],[2043,3],[2552,4],[2914,3]]},"60":{"position":[[149,3],[230,5],[712,5],[773,6]]},"63":{"position":[[546,4],[649,4],[836,4],[1042,4],[1417,4],[1613,5]]}},"keywords":{}}],["usag",{"_index":817,"title":{},"content":{"44":{"position":[[308,6]]}},"keywords":{}}],["user",{"_index":221,"title":{"43":{"position":[[9,6]]}},"content":{"11":{"position":[[519,4],[816,4],[907,6],[992,4],[1290,5],[1296,5],[1330,4]]},"12":{"position":[[560,4]]},"13":{"position":[[16,4]]},"16":{"position":[[701,4]]},"18":{"position":[[778,4]]},"21":{"position":[[215,5]]},"24":{"position":[[67,4]]},"25":{"position":[[205,6],[229,6],[283,5],[603,5],[615,6],[622,6],[674,4],[716,5],[731,4],[807,4]]},"26":{"position":[[168,5],[868,5]]},"38":{"position":[[281,4]]},"43":{"position":[[83,4],[662,6],[700,4],[878,4]]},"45":{"position":[[214,4],[372,5],[378,4],[528,4],[672,4]]},"46":{"position":[[451,4],[571,4],[759,4]]},"47":{"position":[[394,5],[400,4]]},"48":{"position":[[243,4],[651,4],[944,4]]},"51":{"position":[[149,4],[274,4]]},"53":{"position":[[169,5],[175,4]]},"54":{"position":[[115,6],[122,7]]},"55":{"position":[[342,5]]},"57":{"position":[[2126,6]]},"58":{"position":[[3116,4]]},"59":{"position":[[139,4],[231,4],[281,4],[411,7],[533,4],[718,4],[963,4],[1140,5],[1221,4],[1493,4],[2179,4],[2349,7],[2682,4],[2821,6],[3092,4],[3287,4],[3553,5],[3559,4],[3824,4]]},"60":{"position":[[422,4],[856,4]]},"61":{"position":[[348,5],[354,5],[367,4],[953,5],[1399,5],[1416,7],[1457,5],[1566,4]]},"62":{"position":[[121,5],[127,4],[187,4]]},"63":{"position":[[238,4],[257,4],[330,4],[352,4],[394,5],[400,4],[587,4],[677,4],[902,4],[923,4],[1109,4],[1332,4],[1477,4]]}},"keywords":{}}],["user'",{"_index":238,"title":{},"content":{"11":{"position":[[930,6]]},"25":{"position":[[856,6]]},"48":{"position":[[567,6]]}},"keywords":{}}],["user(id",{"_index":879,"title":{},"content":{"51":{"position":[[134,8]]},"59":{"position":[[124,8],[703,8],[948,8],[1206,8]]}},"keywords":{}}],["user.nam",{"_index":1168,"title":{},"content":{"63":{"position":[[764,9]]}},"keywords":{}}],["userag",{"_index":1059,"title":{},"content":{"58":{"position":[[3101,10]]}},"keywords":{}}],["userid",{"_index":234,"title":{},"content":{"11":{"position":[[789,7],[852,6]]},"42":{"position":[[178,6]]},"45":{"position":[[330,7]]},"47":{"position":[[352,7]]},"48":{"position":[[267,6]]},"53":{"position":[[127,7],[390,6],[523,6],[638,6]]},"55":{"position":[[229,6],[299,6]]},"59":{"position":[[3848,6]]},"60":{"position":[[624,6]]},"63":{"position":[[339,7],[518,7],[1174,10],[1241,6],[1391,7]]}},"keywords":{}}],["userinput",{"_index":1100,"title":{},"content":{"59":{"position":[[1480,12],[2166,12],[2669,12]]}},"keywords":{}}],["usernam",{"_index":562,"title":{},"content":{"25":{"position":[[761,9]]},"45":{"position":[[244,9]]},"63":{"position":[[875,9],[950,8],[1374,9],[1553,11]]}},"keywords":{}}],["userposts(id",{"_index":1104,"title":{},"content":{"59":{"position":[[1774,13]]}},"keywords":{}}],["users(nam",{"_index":1109,"title":{},"content":{"59":{"position":[[3071,11]]}},"keywords":{}}],["users/:id/post",{"_index":547,"title":{},"content":{"25":{"position":[[240,16]]}},"keywords":{}}],["users/{{args.id",{"_index":1096,"title":{},"content":{"59":{"position":[[1173,19]]}},"keywords":{}}],["users/{{userid",{"_index":1171,"title":{},"content":{"63":{"position":[[1148,19]]}},"keywords":{}}],["users?id=1&id=2&id=3...id=10",{"_index":859,"title":{},"content":{"48":{"position":[[357,38]]},"59":{"position":[[3938,38]]}},"keywords":{}}],["util",{"_index":1013,"title":{},"content":{"57":{"position":[[6318,11]]},"58":{"position":[[4902,7]]}},"keywords":{}}],["valid",{"_index":626,"title":{},"content":{"29":{"position":[[18,9]]},"36":{"position":[[127,5]]},"37":{"position":[[158,11]]},"57":{"position":[[4258,8],[4320,10],[4774,10],[4905,10],[5134,8]]},"62":{"position":[[248,8]]}},"keywords":{}}],["valu",{"_index":851,"title":{"52":{"position":[[0,6]]}},"content":{"47":{"position":[[467,6]]},"48":{"position":[[143,6],[656,5]]},"50":{"position":[[308,6]]},"52":{"position":[[20,5]]},"53":{"position":[[242,6],[572,5]]},"57":{"position":[[1104,5],[1145,6],[2533,6],[2727,6],[2850,5],[5884,5]]},"58":{"position":[[203,6],[1352,5],[3134,5]]},"59":{"position":[[1867,6],[2577,5],[2613,7],[2757,6],[2885,5],[2959,6],[3167,6],[3226,6],[3306,5],[3626,6],[3724,6]]},"62":{"position":[[270,5],[369,5]]}},"keywords":{}}],["value.id",{"_index":884,"title":{},"content":{"52":{"position":[[209,8]]}},"keywords":{}}],["value.userid",{"_index":889,"title":{},"content":{"53":{"position":[[357,12]]}},"keywords":{}}],["var",{"_index":944,"title":{},"content":{"57":{"position":[[2207,5]]}},"keywords":{}}],["variabl",{"_index":134,"title":{},"content":{"7":{"position":[[359,8]]},"50":{"position":[[61,8]]},"54":{"position":[[35,9],[272,8]]},"57":{"position":[[2259,9],[2329,9],[2802,8],[3067,10]]},"59":{"position":[[1096,10],[2081,9],[2108,10]]}},"keywords":{}}],["variou",{"_index":635,"title":{},"content":{"29":{"position":[[210,7]]},"32":{"position":[[128,7]]},"57":{"position":[[173,7],[441,7],[2452,7]]},"58":{"position":[[45,7],[302,7]]}},"keywords":{}}],["vars.apikey}}"",{"_index":959,"title":{},"content":{"57":{"position":[[2747,24]]}},"keywords":{}}],["vastli",{"_index":211,"title":{},"content":{"11":{"position":[[335,6]]}},"keywords":{}}],["veri",{"_index":4,"title":{},"content":{"0":{"position":[[25,4]]},"19":{"position":[[281,4],[429,4]]},"21":{"position":[[475,4]]},"22":{"position":[[462,4]]},"23":{"position":[[239,4]]}},"keywords":{}}],["verifi",{"_index":94,"title":{},"content":{"5":{"position":[[177,6]]},"6":{"position":[[224,6]]},"8":{"position":[[721,6]]}},"keywords":{}}],["vero",{"_index":601,"title":{},"content":{"26":{"position":[[699,4]]}},"keywords":{}}],["version",{"_index":148,"title":{},"content":{"8":{"position":[[318,7],[739,7],[804,9]]},"22":{"position":[[229,7]]},"39":{"position":[[827,11],[854,7],[895,8],[1147,9]]}},"keywords":{}}],["via",{"_index":113,"title":{},"content":{"6":{"position":[[336,4]]},"35":{"position":[[516,3]]}},"keywords":{}}],["view",{"_index":13,"title":{},"content":{"0":{"position":[[120,5]]}},"keywords":{}}],["viz",{"_index":660,"title":{},"content":{"35":{"position":[[82,4]]}},"keywords":{}}],["volum",{"_index":804,"title":{},"content":{"43":{"position":[[959,6]]}},"keywords":{}}],["vulner",{"_index":298,"title":{},"content":{"15":{"position":[[219,10]]}},"keywords":{}}],["wait",{"_index":1025,"title":{},"content":{"58":{"position":[[440,4],[1142,4],[2489,4],[2722,4]]}},"keywords":{}}],["walk",{"_index":821,"title":{},"content":{"44":{"position":[[465,4]]}},"keywords":{}}],["want",{"_index":76,"title":{},"content":{"3":{"position":[[400,4]]},"8":{"position":[[7,4]]},"16":{"position":[[986,4]]},"53":{"position":[[672,4]]},"60":{"position":[[787,4]]},"61":{"position":[[1432,4]]}},"keywords":{}}],["way",{"_index":439,"title":{},"content":{"21":{"position":[[298,3]]},"23":{"position":[[503,3]]},"37":{"position":[[320,3]]},"53":{"position":[[375,3]]},"57":{"position":[[3246,3]]}},"keywords":{}}],["we'll",{"_index":826,"title":{},"content":{"45":{"position":[[36,5]]}},"keywords":{}}],["we'r",{"_index":772,"title":{},"content":{"41":{"position":[[9,5]]}},"keywords":{}}],["we'v",{"_index":1047,"title":{},"content":{"58":{"position":[[2029,5]]},"63":{"position":[[1411,5]]}},"keywords":{}}],["web",{"_index":570,"title":{},"content":{"26":{"position":[[15,3]]}},"keywords":{}}],["websit",{"_index":830,"title":{},"content":{"45":{"position":[[291,8]]}},"keywords":{}}],["welcom",{"_index":50,"title":{"3":{"position":[[0,7]]}},"content":{},"keywords":{}}],["welcome.md2019",{"_index":67,"title":{},"content":{"3":{"position":[[245,14]]}},"keywords":{}}],["welcome/index.md",{"_index":68,"title":{},"content":{"3":{"position":[[266,16]]}},"keywords":{}}],["well",{"_index":74,"title":{},"content":{"3":{"position":[[377,5]]},"16":{"position":[[522,4]]},"18":{"position":[[463,4]]},"57":{"position":[[3253,4]]}},"keywords":{}}],["what’",{"_index":253,"title":{},"content":{"12":{"position":[[193,6]]}},"keywords":{}}],["whenev",{"_index":962,"title":{},"content":{"57":{"position":[[2922,8]]}},"keywords":{}}],["whether",{"_index":970,"title":{},"content":{"57":{"position":[[3409,7],[4232,7]]},"58":{"position":[[1374,7]]}},"keywords":{}}],["wise",{"_index":978,"title":{},"content":{"57":{"position":[[3912,4]]}},"keywords":{}}],["within",{"_index":843,"title":{},"content":{"46":{"position":[[665,6]]},"57":{"position":[[1456,6]]},"60":{"position":[[102,6]]},"61":{"position":[[112,6]]}},"keywords":{}}],["without",{"_index":565,"title":{},"content":{"25":{"position":[[1273,7]]},"39":{"position":[[957,7]]}},"keywords":{}}],["won't",{"_index":760,"title":{},"content":{"39":{"position":[[1526,5]]},"57":{"position":[[1744,5]]},"60":{"position":[[993,5]]}},"keywords":{}}],["work",{"_index":1125,"title":{},"content":{"61":{"position":[[135,5]]}},"keywords":{}}],["world",{"_index":792,"title":{},"content":{"43":{"position":[[615,5]]}},"keywords":{}}],["worth",{"_index":375,"title":{},"content":{"18":{"position":[[645,5]]},"23":{"position":[[536,5]]}},"keywords":{}}],["write",{"_index":566,"title":{},"content":{"25":{"position":[[1291,5]]}},"keywords":{}}],["written",{"_index":344,"title":{},"content":{"17":{"position":[[132,7]]},"19":{"position":[[40,7]]},"59":{"position":[[1162,7]]}},"keywords":{}}],["x",{"_index":1070,"title":{},"content":{"58":{"position":[[3855,1]]},"59":{"position":[[2867,1]]}},"keywords":{}}],["yield",{"_index":795,"title":{},"content":{"43":{"position":[[717,5]]}},"keywords":{}}],["you'r",{"_index":942,"title":{},"content":{"57":{"position":[[2081,6]]},"59":{"position":[[855,6]]}},"keywords":{}}],["yourself",{"_index":624,"title":{},"content":{"27":{"position":[[524,9]]},"44":{"position":[[344,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/lunr-index.json b/lunr-index.json index db4d981629..a9f0db3c0c 100644 --- a/lunr-index.json +++ b/lunr-index.json @@ -1 +1 @@ -{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,294.024,1,371.371,2,164.089]],["content/0",[3,11.186,4,12.07,5,11.186,6,10.031,7,11.186,8,9.171,9,9.171,10,9.171,11,9.171,12,9.171,13,9.171,14,9.171,15,9.171,16,9.171,17,8.224,18,9.171,19,9.171,20,9.171]],["keywords/0",[]],["title/1",[1,371.371,2,164.089,21,525.48]],["content/1",[1,7.939,2,3.508,21,9.236,22,7.001,23,9.236,24,9.236,25,5.767,26,4.064,27,8.282,28,1.879,29,6.527,30,10.684,31,6.122,32,9.236,33,10.684,34,10.684,35,9.236,36,10.684,37,10.684,38,10.684,39,10.684]],["keywords/1",[]],["title/2",[1,371.371,2,164.089,40,471.213]],["content/2",[1,3.031,2,1.339,3,12.505,4,13.061,5,12.505,6,11.213,7,12.505,8,11.089,9,11.089,10,11.089,11,11.089,12,11.089,13,11.089,14,11.089,15,11.089,16,11.089,17,9.943,18,11.089,19,11.089,20,11.089,28,0.513,35,2.522,40,2.261,41,2.917,42,1.911,43,2.917,44,2.917,45,2.067,46,2.261,47,2.261,48,1.671,49,2.917]],["keywords/2",[]],["title/3",[50,933.725]],["content/3",[1,9.302,2,3.451,22,5.743,23,9.914,24,7.577,25,4.731,26,3.334,28,1.541,29,5.355,51,8.765,52,8.765,53,6.21,54,4.472,55,11.468,56,9.914,57,8.765,58,5.022,59,5.743,60,8.765,61,8.765,62,6.794,63,8.765,64,8.765,65,11.468,66,11.468,67,8.765,68,8.765,69,8.765,70,8.765,71,7.577,72,7.577,73,8.765,74,6.21,75,6.794,76,5.355,77,7.577,78,5.743,79,8.765]],["keywords/3",[]],["title/4",[80,570.45]],["content/4",[]],["keywords/4",[]],["title/5",[81,807.171]],["content/5",[28,1.732,75,7.635,80,8.913,81,10.683,82,6.978,83,9.849,84,8.514,85,6.017,86,5.316,87,3.479,88,6.306,89,3.921,90,4.526,91,7.635,92,9.849,93,8.514,94,7.635,95,8.514,96,4.764,97,7.635,98,9.849,99,9.849,100,8.514,101,7.635,102,9.849,103,8.514,104,3.921,105,7.635]],["keywords/5",[]],["title/6",[106,723.812]],["content/6",[53,6.845,75,7.489,80,8.592,82,6.845,84,8.351,85,5.902,86,5.214,87,3.959,88,6.23,89,3.845,90,4.44,91,7.489,93,8.351,94,7.489,95,8.351,96,4.673,106,9.464,107,8.351,108,14.064,109,8.351,110,6.33,111,8.351,112,10.554,113,3.674,114,8.351,115,8.351]],["keywords/6",[]],["title/7",[116,611.836]],["content/7",[54,4.993,56,10.64,71,8.459,80,8.632,87,3.464,89,3.895,90,4.497,116,6.412,117,6.933,118,6.412,119,9.786,120,4.733,121,4.993,122,9.786,123,9.786,124,2.233,125,9.786,126,9.786,127,3.56,128,8.459,129,9.786,130,8.459,131,8.459,132,8.459,133,4.081,134,7.586,135,6.412,136,4.081,137,9.786,138,9.786,139,9.786]],["keywords/7",[]],["title/8",[140,807.171]],["content/8",[28,1.353,72,9.087,76,4.701,80,8.23,86,4.153,87,3.792,88,6.109,89,4.766,90,6.191,94,5.965,96,3.722,97,5.965,106,5.965,110,5.042,117,5.452,118,5.042,121,3.926,127,2.799,140,12.705,141,4.409,142,6.888,143,3.926,144,7.695,145,10.512,146,10.512,147,10.512,148,4.554,149,9.281,150,5.452,151,6.422,152,10.512,153,7.695,154,7.695,155,6.652,156,5.965,157,3.209,158,4.409,159,6.652,160,6.652,161,7.695,162,6.652,163,5.965,164,5.965]],["keywords/8",[]],["title/9",[165,534.997]],["content/9",[0,2.755,2,3.516,26,2.166,28,1.491,31,5.804,48,3.263,54,5.725,86,3.074,89,2.267,124,3.33,132,4.924,133,3.536,148,2.166,157,5.003,165,3.263,166,2.491,167,3.732,168,5.18,169,4.575,170,6.573,171,3.522,172,5.696,173,4.415,174,5.696,175,5.696,176,2.166,177,3.177,178,5.696,179,1.744,180,3.48,181,3.263,182,4.415,183,5.696,184,5.696,185,5.168,186,4.415,187,3.48,188,5.467,189,1.537,190,4.415,191,4.415,192,3.907,193,4.193,194,4.101,195,3.48,196,4.655,197,6.007,198,4.032,199,4.326,200,2.617,201,5.803,202,4.415,203,3.732,204,3.732,205,4.415,206,4.924,207,5.696,208,3.074,209,3.074,210,4.101,211,3.48,212,4.924,213,2.267,214,3.48,215,4.415,216,4.415,217,3.48,218,4.924,219,4.924,220,5.696,221,3.263,222,5.696,223,5.696]],["keywords/9",[]],["title/10",[224,356.173,225,736.357]],["content/10",[]],["keywords/10",[]],["title/11",[226,449.87,227,397.458]],["content/11",[26,3.296,28,1.524,46,6.717,113,3.296,148,3.296,171,4.116,179,2.653,180,5.293,189,3.072,193,2.889,197,6.139,226,7.766,227,6.144,228,5.293,229,6.717,230,3.892,231,8.664,232,3.963,233,6.717,234,9.564,235,7.458,236,7.49,237,7.49,238,5.808,239,6.717,240,7.49,241,6.522,242,6.888,243,8.664,244,6.139,245,7.49,246,5.678,247,6.139,248,8.664,249,8.664,250,4.191]],["keywords/11",[]],["title/12",[171,216.151,251,245.513]],["content/12",[0,2.776,2,3.404,31,5.83,89,4.05,103,4.961,111,4.961,124,3.062,131,4.961,151,3.506,166,2.51,168,3.506,171,4.154,177,2.98,179,1.757,180,3.506,189,2.747,193,3.392,198,5.34,200,2.637,201,6.1,203,3.76,205,4.449,208,4.602,209,4.602,210,2.776,226,3.506,230,3.115,232,1.998,235,3.76,238,6.141,251,2.843,252,4.921,253,3.506,254,7.98,255,3.243,256,7.38,257,4.449,258,5.587,259,3.919,260,5.739,261,4.066,262,3.288,263,4.066,264,6.61,265,5.739,266,6.041,267,6.041,268,4.066,269,3.288,270,4.449,271,5.739,272,8.527,273,6.216,274,5.739,275,5.739,276,3.098,277,8.795,278,3.76,279,4.961,280,6.61,281,5.739,282,4.124,283,2.928,284,4.449,285,2.776,286,4.961,287,3.76]],["keywords/12",[]],["title/13",[230,225.457,251,245.513]],["content/13",[113,3.277,127,4.125,148,3.277,171,2.529,176,4.313,177,1.966,181,4.936,189,2.326,224,4.167,230,4.124,232,4.413,251,2.872,255,3.277,258,5.645,259,3.959,262,4.936,285,4.167,288,7.43,289,6.104,290,8.615,291,7.447,292,9.802,293,8.79,294,3.959,295,8.615,296,11.339,297,8.615,298,8.615,299,8.615,300,11.339,301,11.339,302,8.615,303,11.339,304,8.79,305,11.339,306,6.104,307,5.645,308,8.615,309,7.447,310,7.447,311,5.645]],["keywords/13",[]],["title/14",[312,348.291,313,371.371,314,371.371]],["content/14",[47,7.537,53,6.889,105,7.537,171,3.941,177,2.219,189,2.625,221,5.571,230,4.449,251,4.087,253,5.94,254,6.889,255,3.698,258,6.371,259,4.468,269,5.571,288,8.032,306,6.889,313,5.94,314,7.489,315,9.723,316,6.889,317,6.889,318,4.253,319,9.723,320,5.571,321,6.371,322,4.703,323,6.371]],["keywords/14",[]],["title/15",[113,231.209,324,430.679,325,328.104]],["content/15",[113,3.979,168,6.392,171,4.073,189,2.824,230,3.928,232,3.643,238,5.338,251,3.488,255,3.979,259,5.896,266,7.413,288,6.856,294,4.808,313,6.392,320,5.995,322,5.061,325,5.647,326,7.413,327,10.462,328,6.856,329,6.392,330,9.044]],["keywords/15",[]],["title/16",[313,371.371,331,525.48,332,525.48]],["content/16",[26,3.454,29,5.548,113,3.454,148,3.454,171,3.817,213,3.615,224,4.392,230,3.981,232,3.162,244,6.434,250,4.392,251,4.335,273,5.548,288,7.69,294,5.393,304,7.039,313,5.548,320,5.203,321,5.95,322,4.392,323,5.95,332,7.85,333,7.69,334,7.85,335,4.901,336,9.081,337,9.081,338,7.85,339,7.85,340,6.434,341,7.85,342,5.95,343,5.95,344,5.95,345,7.85,346,7.039,347,7.039,348,6.434,349,7.039]],["keywords/16",[]],["title/17",[241,348.291,350,398.314,351,310.165]],["content/17",[6,5.292,26,2.597,28,1.701,29,4.171,31,3.911,59,4.473,74,4.837,76,4.171,104,2.717,113,4.647,121,3.483,168,5.909,170,5.292,171,3.931,177,1.558,179,2.09,212,5.901,214,4.171,219,5.901,226,5.909,227,3.685,228,4.171,230,3.741,232,2.377,241,3.911,242,3.483,247,4.837,250,3.302,251,3.745,253,4.171,254,4.837,255,2.597,256,4.473,257,5.292,261,4.837,262,3.911,278,6.338,291,5.901,304,5.292,306,4.837,311,4.473,316,4.837,320,5.542,328,4.473,341,5.901,342,7.36,350,7.36,351,6.834,352,5.162,353,6.338,354,4.837,355,4.231,356,4.837,357,4.837,358,6.827,359,8.707,360,4.473,361,4.837,362,6.827,363,3.911,364,5.901,365,6.827,366,6.827,367,5.292,368,6.827,369,6.827,370,5.901,371,4.473,372,5.292,373,3.302]],["keywords/17",[]],["title/18",[312,348.291,374,525.48,375,525.48]],["content/18",[28,1.657,104,3.75,171,2.765,179,2.884,211,7.34,221,5.397,230,2.884,232,3.28,234,6.674,285,5.812,294,4.329,307,8.669,314,5.755,318,4.121,320,5.397,344,6.173,350,6.173,351,7.11,352,4.329,374,8.143,375,8.143,376,7.302,377,9.42,378,9.42,379,7.302,380,9.42,381,5.755,382,5.755,383,9.42,384,6.674,385,8.143,386,8.143,387,9.42,388,8.143,389,6.674]],["keywords/18",[]],["title/19",[324,521.715,390,636.554]],["content/19",[28,1.381,74,5.565,89,4.243,113,4.603,117,7.553,136,3.276,143,4.008,167,5.147,177,1.793,215,6.089,236,6.79,237,6.79,241,4.5,250,3.799,268,5.565,283,4.008,285,3.799,307,8.504,320,4.5,322,3.799,323,5.147,326,5.565,339,6.79,342,5.147,351,6.923,352,5.561,373,3.799,376,6.089,390,9.215,391,7.855,392,10.66,393,6.79,394,6.79,395,6.79,396,5.147,397,7.855,398,10.66,399,6.79,400,3.799,401,6.089,402,7.855,403,8.504,404,7.855,405,6.089,406,4.799,407,7.855,408,7.855,409,6.79,410,6.089,411,6.79,412,4.799,413,7.855,414,6.79,415,6.089,416,7.855]],["keywords/19",[]],["title/20",[113,231.209,331,525.48,417,607.869]],["content/20",[26,3.413,28,1.578,42,7.63,113,4.429,141,5.141,167,5.88,179,2.747,189,2.422,221,5.141,228,7.114,246,5.88,259,4.124,276,4.843,329,5.482,343,5.88,351,4.578,352,4.124,367,6.956,373,4.34,379,6.956,384,6.357,388,7.757,400,4.34,403,5.88,418,8.973,419,8.973,420,7.114,421,8.973,422,8.973,423,7.757,424,6.956,425,8.973,426,8.973,427,8.973,428,8.973,429,8.973,430,6.956,431,8.973,432,8.973,433,6.956,434,8.973,435,8.973,436,6.956,437,6.956,438,8.973,439,8.973]],["keywords/20",[]],["title/21",[440,736.357,441,636.554]],["content/21",[112,8.514,151,6.017,221,5.643,227,5.316,241,5.643,242,5.026,256,6.454,285,4.764,352,5.679,381,6.017,382,6.017,389,6.978,420,6.017,441,8.514,442,9.849,443,8.514,444,9.849,445,9.849,446,9.849,447,9.849,448,9.849,449,8.514,450,9.849,451,9.849,452,9.849,453,7.635,454,9.849,455,9.849,456,9.849,457,9.849,458,9.849,459,8.514,460,9.849,461,8.514]],["keywords/21",[]],["title/22",[22,295.27,386,389.538,462,389.538,463,389.538,464,450.612]],["content/22",[0,4.264,22,7.543,25,4.759,26,3.353,28,1.55,42,5.777,113,3.353,121,4.498,156,6.834,177,2.012,213,3.509,224,4.264,230,2.699,239,6.834,241,5.051,285,6.2,314,5.386,342,5.777,351,6.541,352,5.891,354,6.246,381,7.033,420,7.831,430,6.834,461,7.621,463,7.621,465,8.816,466,7.621,467,8.816,468,6.834,469,8.816,470,8.816,471,5.777,472,8.816,473,8.816,474,6.246,475,7.621,476,6.834,477,6.834,478,6.834,479,8.816,480,8.816,481,8.816]],["keywords/22",[]],["title/23",[476,471.213,482,607.869,483,525.48]],["content/23",[0,4.446,42,6.023,88,4.69,149,7.125,167,6.023,204,6.023,224,4.446,226,5.615,230,2.814,232,4.118,235,6.023,242,6.035,276,4.961,322,6.678,343,6.023,345,7.945,351,6.673,352,6.01,360,6.023,381,5.615,399,7.945,406,5.615,420,5.615,436,7.125,483,7.945,484,9.191,485,7.945,486,9.191,487,6.023,488,6.512,489,9.191,490,9.191,491,11.827,492,9.191,493,9.191,494,7.945]],["keywords/23",[]],["title/24",[234,430.679,495,607.869,496,525.48]],["content/24",[26,2.854,28,1.817,42,4.917,46,5.817,82,5.317,124,1.713,171,3.737,179,2.298,211,4.584,217,4.584,230,2.298,232,3.597,234,9.021,242,3.829,244,5.317,245,6.487,262,4.3,264,5.817,266,5.317,283,5.272,292,8.932,293,8.01,344,4.917,350,4.917,351,7.042,352,6.62,360,4.917,409,6.487,410,5.817,430,5.817,449,6.487,471,4.917,496,6.487,497,7.504,498,7.504,499,6.487,500,6.487,501,5.817,502,6.487,503,7.504,504,7.504,505,7.504,506,6.487,507,8.932,508,7.504,509,7.504,510,7.504,511,6.487,512,5.317,513,7.504,514,5.317,515,7.504,516,7.504,517,4.917,518,7.504,519,7.504,520,7.504,521,7.504,522,7.504]],["keywords/24",[]],["title/25",[523,607.869,524,525.48,525,525.48]],["content/25",[87,2.112,136,3.129,177,1.713,216,5.817,241,4.3,283,3.829,307,4.917,311,4.917,318,3.282,320,5.92,350,8.343,351,6.03,352,3.449,361,5.317,373,4.998,400,4.998,406,4.584,423,6.487,511,6.487,512,5.317,517,6.77,524,8.932,525,6.487,526,7.504,527,5.317,528,7.321,529,7.504,530,6.487,531,7.504,532,7.504,533,10.332,534,6.77,535,7.504,536,7.504,537,7.504,538,6.487,539,10.332,540,6.487,541,11.817,542,7.504,543,7.504,544,4.917,545,7.504,546,7.504,547,7.504,548,7.504,549,7.504,550,7.504,551,7.504,552,7.504,553,7.504,554,7.504,555,7.504,556,7.504,557,7.504,558,7.504,559,5.817,560,7.504,561,7.504,562,5.317,563,7.504,564,7.504,565,7.504,566,7.504,567,7.504,568,7.504,569,7.504]],["keywords/25",[]],["title/26",[570,723.812]],["content/26",[31,5.081,54,4.525,87,2.496,88,4.525,89,4.6,90,5.311,96,4.289,118,5.811,124,2.637,133,3.698,142,8.423,148,4.395,162,7.666,169,3.226,182,8.958,187,5.418,210,4.289,256,5.811,273,5.418,355,3.879,382,7.06,433,6.874,459,7.666,570,8.958,571,8.187,572,8.868,573,7.666,574,8.868,575,8.868,576,11.556,577,8.868,578,8.868,579,8.868,580,8.868,581,5.081,582,8.868,583,8.868,584,8.868,585,7.666,586,7.666,587,7.666]],["keywords/26",[]],["title/27",[124,118.125,312,296.546,588,517.558,589,316.197]],["content/27",[]],["keywords/27",[]],["title/28",[268,661.551]],["content/28",[2,3.538,25,7.075,58,6.209,127,3.942,171,3.181,176,4.122,228,6.621,267,7.678,285,5.242,344,7.101,373,5.242,581,6.209,590,10.837,591,9.368,592,10.837,593,7.678,594,7.678,595,9.368,596,7.678]],["keywords/28",[]],["title/29",[2,198.773,127,267.866]],["content/29",[0,5.28,2,3.816,48,6.254,58,6.254,116,7.152,127,3.971,136,4.552,171,3.204,179,3.342,189,3.554,196,5.016,210,5.28,258,7.152,280,8.461,282,5.28,597,10.915,598,8.461]],["keywords/29",[]],["title/30",[127,267.866,177,168.063]],["content/30",[0,3.054,2,3.182,28,1.11,58,5.24,101,4.894,104,2.513,116,4.137,148,4.484,171,3.156,177,2.691,179,3.61,189,3.942,213,3.64,224,5.201,229,4.894,232,3.184,238,3.222,242,3.222,252,3.054,255,2.401,259,2.902,262,3.618,269,5.24,283,3.222,294,2.902,307,4.137,311,4.137,321,5.993,322,3.054,326,4.473,329,3.857,330,5.458,343,4.137,346,4.894,367,4.894,373,3.054,400,4.424,437,4.894,468,8.336,487,4.137,527,4.473,581,6.161,591,5.458,593,4.473,594,4.473,599,6.314,600,6.314,601,4.894,602,9.146,603,9.146,604,7.906,605,4.936,606,5.458,607,4.473,608,4.137,609,6.314,610,6.314,611,6.314,612,6.314,613,9.146,614,6.314,615,6.314,616,6.314,617,6.314,618,5.458,619,6.314,620,5.458,621,6.314,622,4.894,623,6.314,624,6.314,625,6.314,626,5.458,627,5.458,628,4.894,629,6.314,630,6.314,631,6.314,632,4.894]],["keywords/30",[]],["title/31",[28,129.503,120,356.173]],["content/31",[80,5.482,82,6.357,87,3.278,90,4.124,120,5.633,141,6.672,143,4.578,157,3.742,165,5.141,189,2.422,215,6.956,233,6.956,252,4.34,253,5.482,269,5.141,335,4.843,343,5.88,353,7.63,372,6.956,373,5.633,400,5.633,406,5.482,544,5.88,587,7.757,605,4.843,633,8.973,634,5.88,635,6.357,636,5.88,637,8.973,638,6.956,639,4.124,640,8.973,641,8.973,642,7.757,643,8.973,644,8.973,645,8.973,646,8.973,647,6.956,648,7.757,649,8.973,650,7.757,651,5.88]],["keywords/31",[]],["title/32",[166,322.109,652,736.357]],["content/32",[2,3.703,28,1.294,48,4.216,54,3.754,86,3.972,87,2.071,120,3.559,124,3.272,127,3.708,136,3.068,157,3.068,169,3.708,176,3.877,177,3.026,179,3.121,189,1.986,190,5.704,191,5.704,192,4.072,193,3.899,194,4.93,198,4.057,199,5.968,200,3.381,201,6.803,202,5.704,203,4.821,204,4.821,208,3.972,209,3.972,213,2.929,224,3.559,230,2.253,282,3.559,363,4.216,400,3.559,605,3.972,606,6.361,632,5.704,634,4.821,639,3.381,653,7.358,654,7.358,655,7.358,656,5.704,657,7.358,658,7.358,659,7.358,660,7.222,661,7.358,662,5.704,663,7.358]],["keywords/32",[]],["title/33",[87,171.102,88,310.165,120,294.024]],["content/33",[2,3.332,28,1.228,54,3.564,87,2.767,90,3.21,96,4.754,120,4.754,124,3.365,127,2.541,157,2.913,176,2.657,177,2.596,179,2.138,182,7.619,189,1.885,192,4.826,210,3.378,213,2.78,224,4.754,276,3.77,312,7.731,318,4.975,321,4.577,396,6.441,400,5.501,544,6.441,589,7.947,596,4.948,605,6.662,634,4.577,651,4.577,660,4.948,662,7.619,664,6.516,665,6.984,666,9.829,667,6.984,668,6.038,669,5.414,670,6.984,671,6.964,672,6.964,673,6.038,674,6.984,675,9.829,676,4.577,677,4.948]],["keywords/33",[]],["title/34",[28,106.906,354,430.679,678,398.314]],["content/34",[2,2.326,25,4.65,87,2.425,89,3.429,109,7.447,120,4.167,124,2.893,133,3.593,148,3.277,155,7.447,157,4.729,169,3.134,177,2.588,181,4.936,188,6.121,189,2.326,192,2.999,193,2.872,195,5.263,198,3.429,199,5.786,201,5.485,208,4.65,209,4.65,214,5.263,228,5.263,255,3.277,282,4.167,318,3.769,325,4.65,335,4.65,348,6.104,355,3.769,400,4.167,605,4.65,628,6.678,678,5.645,679,7.447,680,7.447,681,8.615,682,6.104,683,8.615,684,8.615,685,5.645,686,8.615,687,7.43,688,4.167,689,6.104,690,6.678]],["keywords/34",[]],["title/35",[115,636.554,651,482.509]],["content/35",[2,3.387,26,2.758,28,1.775,48,6.65,85,6.165,86,3.914,87,2.041,120,4.881,121,5.149,177,2.649,179,2.22,180,4.431,187,6.165,188,3.914,189,3.133,192,2.525,198,4.017,205,5.622,214,4.431,224,3.508,238,5.149,255,2.758,282,3.508,311,4.752,318,4.414,323,4.752,324,5.138,325,3.914,335,5.447,347,5.622,348,5.138,356,5.138,376,7.823,420,4.431,468,5.622,487,4.752,512,5.138,528,5.138,562,5.138,604,6.269,605,3.914,607,5.138,638,5.622,639,3.333,671,5.138,672,5.138,678,4.752,682,5.138,687,6.612,688,4.881,689,5.138,690,7.823,691,6.269,692,7.252,693,7.252,694,3.172,695,5.622,696,4.752,697,5.138,698,6.269,699,6.269,700,6.269,701,6.269,702,7.252,703,7.252,704,6.269,705,6.269,706,7.252]],["keywords/35",[]],["title/36",[403,611.836]],["content/36",[2,2.688,17,5.516,53,5.042,89,3.964,124,3.613,168,4.347,177,2.622,179,3.049,192,4,196,3.27,198,2.832,200,3.27,208,5.375,213,2.832,279,6.151,286,6.151,294,3.27,312,4.077,324,5.042,355,3.113,403,4.663,571,5.042,573,6.151,586,6.151,687,6.525,707,7.116,708,7.116,709,6.151,710,7.72,711,7.116,712,7.116,713,9.958,714,11.488,715,7.116,716,7.116,717,7.116,718,7.116,719,7.116,720,7.116,721,7.116,722,7.116,723,7.116,724,7.116,725,7.116,726,7.116,727,7.116,728,7.116,729,7.116,730,7.116,731,7.116,732,7.116,733,7.116,734,7.116,735,7.116]],["keywords/36",[]],["title/37",[120,451.639]],["content/37",[]],["keywords/37",[]],["title/38",[664,534.997]],["content/38",[26,3.746,28,1.732,89,3.921,90,6.508,96,4.764,158,5.643,169,3.583,251,4.121,266,6.978,270,7.635,371,6.454,400,4.764,534,6.454,544,6.454,605,5.316,664,8.115,669,7.635,736,6.454,737,7.55,738,8.514,739,8.514,740,8.098,741,8.514,742,8.514,743,6.978,744,7.635]],["keywords/38",[]],["title/39",[192,180.193,318,226.398,589,316.197,671,366.694]],["content/39",[78,7.42,96,5.477,100,9.789,192,3.943,193,3.776,318,4.953,400,5.477,589,6.918,605,6.112,662,8.778,664,6.488,669,8.778,671,8.023,741,9.789,745,9.789]],["keywords/39",[]],["title/40",[169,339.663]],["content/40",[54,6.332,78,6.496,90,4.556,96,6.002,124,2.263,133,4.134,166,4.337,169,4.928,179,3.035,185,5.059,193,3.305,251,3.305,255,3.771,270,7.685,278,6.496,357,7.024,639,4.556,664,7.761,737,6.057,740,8.131,745,8.57,746,8.57,747,8.57,748,8.57,749,8.57,750,8.57,751,8.57]],["keywords/40",[]],["title/41",[142,611.836]],["content/41",[28,1.616,54,6.035,87,2.587,89,3.659,90,6.01,96,5.721,104,3.659,124,2.098,133,3.833,142,9.361,148,4.974,157,4.932,165,6.777,166,4.02,179,2.814,185,4.69,235,6.023,251,3.064,255,3.496,263,6.512,278,6.023,570,7.125,636,6.023,639,4.224,737,5.615,740,6.023,743,6.512,746,7.945,747,7.945,748,7.945,749,7.945,750,7.945,751,7.945,752,6.512]],["keywords/41",[]],["title/42",[753,807.171]],["content/42",[31,7.32,54,7.364,87,2.925,90,5.871,96,5.026,133,4.333,157,4.333,165,5.953,169,3.78,213,4.136,256,6.809,317,7.362,355,4.545,753,11.044,754,10.39,755,10.39,756,10.39,757,10.39,758,10.39,759,10.39,760,7.362]],["keywords/42",[]],["title/43",[227,503.989]],["content/43",[]],["keywords/43",[]],["title/44",[227,328.104,437,471.213,761,525.48]],["content/44",[28,1.449,87,2.319,107,7.123,114,7.123,121,4.204,130,7.123,136,3.436,143,4.204,150,8.784,158,6.308,169,4.51,171,2.419,189,2.972,213,3.28,217,5.034,226,5.034,230,3.371,242,5.617,247,5.838,251,2.747,263,5.838,273,6.726,280,6.387,289,5.838,323,5.399,333,7.214,347,6.387,348,5.838,361,5.838,415,6.387,559,6.387,581,4.721,660,5.838,672,5.838,737,5.034,744,6.387,752,7.8,762,8.24,763,8.24,764,6.387,765,12.398,766,8.24,767,5.838,768,7.123,769,8.24,770,7.123,771,8.24,772,8.24,773,8.24,774,8.24,775,6.387,776,8.24]],["keywords/44",[]],["title/45",[104,241.965,251,202.673,744,471.213]],["content/45",[26,3.433,58,5.172,104,4.653,121,4.606,136,3.764,143,5.965,169,3.284,171,3.431,176,3.433,179,2.764,189,2.437,206,7.803,211,5.515,227,4.872,238,4.606,244,6.395,246,5.915,247,6.395,251,3.01,285,4.366,317,6.395,333,7.66,363,5.172,364,7.803,401,6.997,414,7.803,415,6.997,474,6.395,500,7.803,695,6.997,736,5.915,737,5.515,768,10.106,777,9.026,778,9.026,779,6.997,780,9.026,781,9.026,782,9.026,783,7.803,784,7.803,785,7.803,786,9.026,787,6.997]],["keywords/45",[]],["title/46",[636,611.836]],["content/46",[26,2.315,28,1.07,48,3.487,87,1.713,88,3.105,104,4.612,110,3.987,113,3.386,117,6.308,124,2.032,136,2.538,141,3.487,143,3.105,150,4.311,158,3.487,168,3.718,171,4.004,176,3.386,179,2.726,180,3.718,189,3.128,197,4.311,211,3.718,213,3.544,224,5.093,251,3.863,252,2.943,253,5.439,255,3.386,259,4.092,262,3.487,278,3.987,285,2.943,287,5.834,294,2.796,310,5.26,312,5.101,313,3.718,318,2.662,321,3.987,325,3.285,326,4.311,354,4.311,355,3.895,356,4.311,373,5.093,394,5.26,395,5.26,405,6.902,433,4.717,471,3.987,487,5.834,501,4.717,514,4.311,562,4.311,589,5.439,622,4.717,632,4.717,634,3.987,635,6.308,636,7.592,664,3.487,679,5.26,682,4.311,736,3.987,788,5.26,789,5.26,790,5.26,791,6.085,792,7.697,793,6.085,794,6.085,795,6.085,796,6.085,797,5.26,798,6.085,799,4.717,800,6.085,801,4.717,802,6.085,803,4.311,804,6.085,805,6.085,806,4.311,807,6.085,808,6.085,809,5.26,810,5.26,811,5.26,812,6.085]],["keywords/46",[]],["title/47",[230,225.457,813,736.357]],["content/47",[2,2.642,116,6.412,124,3.392,141,5.607,150,6.933,176,3.722,177,2.233,189,3.322,200,4.497,203,6.412,208,5.282,209,5.282,217,5.978,230,2.996,232,4.285,322,4.733,478,7.586,488,6.933,636,6.412,806,8.72,814,7.586,815,9.786,816,9.786,817,9.786,818,9.786,819,9.786,820,12.308]],["keywords/47",[]],["title/48",[221,421.912,806,521.715]],["content/48",[0,2.745,25,5.455,28,0.998,31,3.251,45,4.02,88,2.895,89,2.259,104,4.999,110,3.718,121,2.895,143,4.314,149,8.682,164,4.399,171,2.482,173,4.399,179,3.429,213,2.259,217,3.467,218,4.905,221,3.251,227,3.063,230,1.737,232,1.976,251,2.819,255,2.158,257,4.399,261,4.02,264,4.399,289,4.02,294,2.608,306,4.02,318,2.482,329,3.467,342,3.718,346,4.399,349,4.399,355,2.482,371,5.541,373,2.745,381,5.166,382,3.467,389,5.991,405,4.399,406,6.843,412,5.166,420,7.318,453,4.399,475,4.905,476,4.399,477,4.399,485,4.905,502,7.309,528,4.02,538,4.905,540,7.309,562,4.02,634,3.718,638,4.399,639,2.608,647,4.399,694,3.699,704,4.905,737,3.467,739,4.905,752,4.02,764,4.399,767,4.02,775,4.399,806,8.486,821,5.674,822,5.674,823,4.905,824,5.674,825,5.674,826,4.905,827,4.905,828,8.455,829,5.674,830,5.674,831,5.674,832,8.455,833,4.905,834,5.674,835,7.309,836,4.905,837,5.674,838,5.674,839,5.674,840,4.905,841,5.674,842,4.905,843,5.674,844,5.674,845,5.674,846,8.455,847,5.674,848,5.674,849,5.674,850,5.674,851,5.674,852,4.399,853,5.674,854,5.674,855,5.674,856,5.674,857,4.905,858,5.674,859,4.905,860,5.674,861,5.674]],["keywords/48",[]],["title/49",[862,570.45]],["content/49",[]],["keywords/49",[]],["title/50",[87,207.269,862,449.87]],["content/50",[28,2.147,87,2.719,89,3.845,124,2.786,135,6.33,157,4.029,176,3.674,250,5.905,316,8.65,322,4.673,344,6.33,360,6.33,593,6.845,688,4.673,691,8.351,694,5.341,696,6.33,862,8.592,863,8.351,864,8.351,865,9.661,866,8.351,867,13.386,868,9.661,869,7.489,870,12.209,871,5.902]],["keywords/50",[]],["title/51",[866,807.171]],["content/51",[28,2.247,124,2.916,166,5.589,177,2.916,192,5.025,193,3.464,194,5.026,198,5.086,204,6.809,250,6.18,872,9.802,873,11.044,874,8.982,875,8.982,876,10.39]],["keywords/51",[]],["title/52",[688,451.639]],["content/52",[2,3.434,28,1.815,45,9.014,124,2.904,166,4.514,193,4.242,194,4.992,196,4.742,198,5.49,201,6.154,204,6.762,208,5.57,209,5.57,210,4.992,250,4.992,608,6.762,676,6.762,688,4.992,877,6.762,878,10.32,879,10.32]],["keywords/52",[]],["title/53",[696,611.836]],["content/53",[2,3.8,48,4.596,62,6.218,76,4.901,104,3.193,124,2.988,127,2.918,151,6.606,177,2.468,192,4.258,193,4.364,194,5.23,195,4.901,196,3.686,198,3.193,199,5.517,201,5.23,208,4.33,209,4.33,255,3.051,259,3.686,273,4.901,276,4.33,282,6.332,283,4.093,335,5.836,471,5.256,514,5.683,656,6.218,687,7.085,688,5.23,689,5.683,696,5.256,862,6.606,877,5.256,880,8.021,881,8.021,882,8.021,883,6.218,884,8.021,885,8.021,886,5.683,887,8.021,888,8.021,889,8.021]],["keywords/53",[]],["title/54",[869,723.812]],["content/54",[110,6.671,124,2.879,133,4.246,134,9.78,135,8.267,142,6.671,148,5.214,166,4.453,177,2.879,181,5.833,192,3.545,193,3.394,195,6.22,210,4.924,252,4.924,363,5.833,534,8.267,676,6.671,890,10.181,891,10.181,892,10.181,893,10.181,894,10.181]],["keywords/54",[]],["title/55",[871,570.45]],["content/55",[28,1.815,45,9.014,86,5.57,87,2.905,124,2.904,127,3.754,148,4.839,177,2.355,181,5.913,185,5.266,189,2.786,192,3.593,193,3.441,194,4.992,252,4.992,282,6.154,517,6.762,601,8,862,6.305,871,7.773,895,10.32,896,10.32,897,10.32]],["keywords/55",[]],["title/56",[694,408.444]],["content/56",[]],["keywords/56",[]],["title/57",[148,355.151]],["content/57",[25,2.081,26,1.466,27,6.615,28,0.911,29,1.332,32,1.885,40,1.691,58,1.25,59,1.429,74,1.545,78,4.682,85,1.332,87,2.811,88,3.192,91,2.988,101,2.988,104,2.062,113,2.379,118,1.429,121,1.113,124,2.809,127,1.402,128,1.885,133,1.608,134,4.849,135,4.099,136,0.909,141,1.25,143,3.192,148,3.638,156,2.988,157,2.609,158,2.968,159,6.824,160,1.885,165,5.937,166,2.736,169,4.189,171,0.64,176,2.379,177,0.498,179,0.668,185,3.192,187,1.332,188,2.081,189,0.589,192,4.732,193,1.285,194,1.055,196,1.002,198,1.534,200,1.002,210,1.055,211,1.332,213,0.868,214,1.332,228,1.332,230,1.18,232,0.759,235,2.526,238,3.192,240,1.885,242,3.192,246,1.429,250,3.026,252,1.055,267,2.731,269,1.25,273,3.822,276,1.177,283,3.646,284,1.691,285,1.865,309,1.885,314,1.332,316,2.731,317,1.545,318,0.954,322,1.865,325,1.177,328,1.429,333,4.682,334,1.885,335,2.081,338,3.332,352,1.002,353,1.429,355,2.266,356,1.545,357,3.67,359,2.988,363,2.968,371,1.429,372,2.988,373,2.506,381,1.332,385,1.885,396,1.429,403,1.429,406,3.822,412,3.165,424,1.691,436,1.691,443,1.885,462,1.885,466,1.885,471,1.429,488,1.545,494,1.885,499,1.885,506,1.885,507,1.885,527,1.545,528,2.731,534,7.384,544,3.394,581,1.25,585,1.885,594,1.545,601,2.988,618,4.478,620,1.885,622,1.691,626,3.332,627,1.885,639,2.875,642,1.885,650,1.885,651,1.429,660,1.545,664,1.25,673,1.885,677,1.545,688,3.819,694,2.266,736,4.682,738,1.885,740,1.429,742,3.332,743,3.67,760,5.593,761,1.885,767,2.731,775,1.691,779,1.691,784,1.885,788,1.885,789,1.885,797,1.885,799,2.988,801,1.691,810,1.885,811,3.332,814,1.691,842,1.885,852,1.691,863,3.332,864,1.885,869,1.691,871,4.366,886,1.545,898,2.181,899,3.855,900,2.181,901,2.181,902,2.181,903,9.405,904,1.885,905,1.885,906,3.855,907,2.181,908,1.885,909,2.181,910,1.885,911,3.855,912,3.855,913,3.855,914,2.181,915,1.885,916,2.181,917,2.181,918,2.181,919,2.181,920,2.181,921,2.181,922,3.855,923,1.885,924,2.181,925,2.181,926,1.885,927,2.988,928,2.181,929,5.408,930,3.855,931,7.146,932,1.885,933,2.181,934,2.181,935,2.181,936,7.146,937,5.18,938,1.885,939,3.332,940,2.181,941,3.855,942,2.181,943,2.181,944,2.181,945,2.181,946,2.181,947,2.181,948,2.181,949,3.855,950,3.855,951,2.181,952,2.181,953,1.885,954,2.181,955,2.181,956,5.18,957,2.181,958,2.181,959,3.855,960,2.181,961,2.181,962,2.181,963,2.181,964,2.181,965,2.181,966,3.332,967,6.256,968,1.885,969,2.181,970,2.181,971,1.885,972,2.181,973,2.181,974,2.181,975,3.855,976,2.181,977,2.181,978,2.181,979,5.18,980,3.332,981,5.18,982,2.181,983,2.181,984,2.181,985,2.181,986,2.181,987,2.181,988,2.181,989,2.181,990,3.855,991,2.181,992,2.181,993,2.181,994,2.181,995,5.18,996,1.885,997,1.885,998,3.855,999,2.181,1000,2.181,1001,2.181,1002,1.885,1003,2.181,1004,3.855,1005,1.885,1006,1.885,1007,2.181,1008,1.885,1009,1.885,1010,2.181,1011,2.181,1012,2.181]],["keywords/57",[]],["title/58",[927,723.812]],["content/58",[0,1.212,25,1.353,27,1.943,28,0.766,47,1.943,58,1.436,59,1.642,78,3.783,87,0.705,104,0.998,113,0.953,118,1.642,124,3.171,127,0.912,133,1.816,136,2.408,141,4.475,143,2.946,148,2.196,151,1.531,158,1.436,165,2.495,166,1.905,169,4.389,171,2.025,173,1.943,176,1.656,177,0.572,179,2.112,181,1.436,185,4.37,186,3.375,187,5.233,188,5.259,189,2.312,190,4.475,191,8.756,192,4.863,210,1.212,213,0.998,214,2.66,232,0.873,233,3.375,238,2.222,239,3.375,242,3.519,246,2.853,252,1.212,259,1.152,283,1.279,284,6.639,287,1.642,289,1.776,294,1.152,325,1.353,329,5.621,333,3.783,335,1.353,352,2.001,355,2.525,357,1.776,359,1.943,360,3.783,361,1.776,363,1.436,371,1.642,382,1.531,384,1.776,389,4.09,393,2.166,396,1.642,410,1.943,412,1.531,424,1.943,474,3.085,512,1.776,514,1.776,527,3.085,530,4.991,534,5.612,581,1.436,596,1.776,607,1.776,635,1.776,639,2.001,678,5.117,682,1.776,688,2.793,694,1.905,697,1.776,740,1.642,743,3.085,752,4.887,760,4.09,779,1.943,783,2.166,785,2.166,787,1.943,809,2.166,814,5.347,823,2.166,826,2.166,836,2.166,857,2.166,859,2.166,871,6.238,886,1.776,903,10.828,910,2.166,923,2.166,927,7.132,953,3.764,966,2.166,968,2.166,980,2.166,996,2.166,997,4.991,1002,2.166,1006,2.166,1008,3.764,1009,2.166,1013,10.978,1014,6.751,1015,7.81,1016,2.506,1017,2.506,1018,2.506,1019,2.506,1020,2.506,1021,6.897,1022,4.354,1023,5.773,1024,2.506,1025,9.2,1026,10.611,1027,2.506,1028,2.506,1029,2.506,1030,2.506,1031,5.963,1032,2.506,1033,2.506,1034,2.506,1035,2.506,1036,2.506,1037,2.506,1038,2.506,1039,2.506,1040,2.506,1041,2.506,1042,5.773,1043,2.166,1044,2.506,1045,2.506,1046,2.166,1047,2.506,1048,2.506,1049,2.506,1050,2.506,1051,2.506,1052,2.506,1053,2.506,1054,2.506,1055,2.506,1056,2.506,1057,2.506,1058,2.506,1059,6.897,1060,5.773,1061,2.506,1062,2.506,1063,2.506,1064,3.764,1065,2.506,1066,2.166,1067,2.506,1068,2.506,1069,2.506,1070,2.506,1071,2.506,1072,2.506,1073,2.166,1074,2.506,1075,2.506,1076,2.506,1077,2.506,1078,2.166,1079,2.506,1080,2.506,1081,2.506,1082,2.506,1083,4.354,1084,2.166,1085,2.506,1086,2.506,1087,2.506,1088,2.166]],["keywords/58",[]],["title/59",[188,503.989]],["content/59",[2,2.707,26,1.131,28,1.855,59,3.305,77,2.571,85,1.817,86,1.605,87,1.42,104,1.184,120,2.44,124,3.108,127,1.082,133,4.182,135,4.303,136,2.739,148,2.942,151,1.817,157,2.103,158,2.89,166,4.809,167,1.949,170,5.091,171,3.227,176,1.918,177,3.05,180,3.082,181,4.961,185,4.418,186,3.91,187,5.29,188,5.078,189,2.968,192,4.18,193,3.905,194,5.103,195,6.445,196,3.555,198,3.992,199,1.518,200,3.555,201,2.44,209,4.175,210,1.439,213,1.184,232,1.756,252,3.741,255,1.918,258,3.305,268,2.107,276,1.605,282,1.439,283,1.518,287,4.303,294,1.367,312,1.704,318,2.206,335,5.413,355,2.206,379,2.306,382,1.817,384,2.107,412,3.082,487,1.949,501,2.306,559,5.996,581,1.704,589,1.817,593,2.107,598,2.306,608,3.305,635,2.107,639,1.367,647,2.306,648,2.571,656,2.306,672,6.135,676,1.949,678,1.949,680,2.571,687,4.303,688,5.665,689,3.574,690,5.091,694,3.384,695,2.306,696,1.949,697,2.107,698,2.571,699,2.571,700,2.571,701,2.571,760,3.574,764,2.306,770,2.571,827,2.571,833,7.485,862,1.817,871,6.445,872,4.653,873,5.677,874,6.687,875,2.571,877,1.949,883,2.306,903,6.712,904,6.687,908,2.571,938,2.571,1026,4.36,1064,4.36,1066,2.571,1073,2.571,1078,2.571,1088,4.36,1089,5.044,1090,5.044,1091,2.974,1092,7.735,1093,5.044,1094,2.974,1095,2.974,1096,5.044,1097,6.567,1098,6.567,1099,5.044,1100,5.044,1101,5.044,1102,2.974,1103,2.974,1104,2.974,1105,2.974,1106,5.044,1107,2.974,1108,2.974,1109,2.974,1110,2.974,1111,2.974]],["keywords/59",[]],["title/60",[685,611.836]],["content/60",[28,2.162,76,4.228,124,2.806,136,2.886,157,5.61,163,5.365,169,4.894,176,4.304,177,2.229,193,3.256,196,6.354,198,4.504,199,4.983,200,5.649,230,2.99,250,3.347,252,3.347,261,6.919,282,3.347,340,4.903,353,4.535,355,3.027,370,5.982,517,4.535,595,5.982,608,6.399,668,8.442,677,4.903,685,7.415,694,5.377,787,5.365,835,5.982,840,8.442,852,5.365,872,6.919,877,7.415,883,7.57,929,8.442,971,5.982,1014,5.982,1112,6.92,1113,6.92,1114,6.92,1115,8.442,1116,6.92,1117,9.765,1118,6.92,1119,6.92,1120,6.92,1121,9.765]],["keywords/60",[]],["title/61",[803,661.551]],["content/61",[0,2.363,2,3.2,22,3.202,76,2.985,113,1.858,124,3.292,127,3.355,133,3.846,136,2.038,169,4.643,176,4.265,177,2.913,185,3.851,192,4.444,193,4.461,194,2.363,195,2.985,196,5.679,197,3.462,198,3.005,199,5.294,200,2.245,201,5.977,203,3.202,230,1.496,250,2.363,253,5.635,259,2.245,267,3.462,269,2.8,276,2.637,288,3.202,293,3.788,325,2.637,328,3.202,353,3.202,401,3.788,412,2.985,453,3.788,517,3.202,571,3.462,598,3.788,608,3.202,628,8.693,676,3.202,677,3.462,685,3.202,694,4.538,705,4.224,709,4.224,710,3.788,767,3.462,790,4.224,799,3.788,803,9.281,872,3.462,877,3.202,886,3.462,932,6.525,939,4.224,1084,4.224,1122,4.886,1123,4.886,1124,4.224,1125,7.548,1126,4.886,1127,7.548,1128,4.886,1129,7.548,1130,6.525,1131,4.886,1132,4.886,1133,4.886,1134,7.548,1135,4.886,1136,4.886,1137,4.886,1138,4.886,1139,4.886,1140,9.223,1141,7.548,1142,4.886,1143,4.886,1144,4.886,1145,4.886,1146,4.886,1147,4.886,1148,4.886,1149,4.886,1150,4.886]],["keywords/61",[]],["title/62",[1151,807.171]],["content/62",[124,3.29,163,8.857,169,4.637,177,2.909,192,4.438,193,4.25,196,5.25,199,4.447,200,5.25,201,4.215,232,3.034,238,4.447,329,5.324,340,6.174,355,4.998,396,5.71,488,6.174,639,4.005,688,5.526,694,4.998,697,6.174,736,5.71,792,7.533,801,6.755,926,9.877,1031,7.533,1151,9.877,1152,8.714,1153,8.714,1154,8.714,1155,8.714,1156,8.714,1157,8.714,1158,8.714]],["keywords/62",[]],["title/63",[251,245.513,694,322.109]],["content/63",[2,3.036,28,2.09,29,3.005,62,3.812,85,4.635,97,3.812,104,3.686,105,3.812,124,2.919,127,3.369,133,2.051,157,3.862,164,3.812,166,2.151,169,3.787,176,3.96,177,3.201,185,2.509,188,4.095,189,2.5,193,4.13,194,3.669,196,5.692,198,3.686,199,5.312,200,5.878,201,5.035,202,8.07,216,3.812,217,3.005,229,3.812,232,3.224,251,2.529,254,3.484,255,1.871,259,2.26,262,2.818,263,3.484,269,2.818,277,4.251,282,5.44,287,6.068,294,4.256,314,4.635,322,2.379,328,3.223,340,3.484,349,3.812,363,2.818,411,4.251,474,3.484,477,3.812,478,5.881,571,3.484,594,3.484,596,3.484,607,3.484,639,3.486,651,3.223,685,3.223,694,5.418,710,5.881,803,3.484,905,4.251,915,4.251,1005,4.251,1043,4.251,1046,4.251,1115,6.558,1124,6.558,1130,6.558,1159,4.918,1160,4.918,1161,7.586,1162,7.586,1163,4.918,1164,4.918,1165,4.918,1166,4.918,1167,4.918,1168,4.918,1169,4.918,1170,4.918,1171,4.918,1172,4.918,1173,4.918,1174,4.918,1175,4.918]],["keywords/63",[]]],"invertedIndex":[["",{"_index":124,"title":{"27":{"position":[[11,1]]}},"content":{"7":{"position":[[149,1]]},"9":{"position":[[423,1],[541,1],[556,1],[569,1],[571,1],[661,1],[663,1],[736,1],[794,1],[838,1],[953,1],[955,1],[1028,1],[1068,1]]},"12":{"position":[[750,1],[801,1],[833,1],[997,1],[1036,1],[1251,1],[1302,1],[1342,1]]},"24":{"position":[[744,1]]},"26":{"position":[[243,2],[282,2]]},"32":{"position":[[131,1],[146,1],[159,1],[207,1],[219,1],[307,1],[319,1],[432,1]]},"33":{"position":[[161,1],[175,1],[428,1],[441,1],[449,1],[456,1],[458,1],[561,1],[569,1],[576,1],[578,2]]},"34":{"position":[[341,1],[531,1],[533,1]]},"36":{"position":[[104,1],[112,1],[128,1],[136,1],[138,1],[140,1],[184,1],[204,1],[225,1],[227,1],[312,1],[314,1],[422,2],[425,3],[429,1],[431,2],[434,1],[518,1],[520,1],[586,2],[589,1],[660,2],[663,3],[667,1],[669,1],[671,1],[673,1],[675,1]]},"40":{"position":[[145,3]]},"41":{"position":[[278,3]]},"46":{"position":[[356,1],[380,1]]},"47":{"position":[[220,1],[268,1],[286,1],[299,1],[301,1],[303,1]]},"50":{"position":[[276,1],[402,1]]},"51":{"position":[[132,1],[198,1]]},"52":{"position":[[71,1],[184,1]]},"53":{"position":[[56,1],[104,1],[116,1],[340,1]]},"54":{"position":[[113,1],[205,1]]},"55":{"position":[[90,1],[179,1]]},"57":{"position":[[264,1],[651,1],[685,1],[1324,1],[1358,1],[1902,1],[1936,1],[2572,1],[2606,1],[2619,1],[2772,1],[3788,1],[3822,1],[4662,1],[4696,1],[5389,1],[5423,1],[5948,1],[5982,1]]},"58":{"position":[[295,1],[574,1],[608,1],[803,1],[837,1],[1042,1],[1076,1],[1285,1],[1319,1],[1549,1],[1583,1],[1967,1],[2001,1],[2623,1],[2657,1],[2831,1],[2865,1],[3064,1],[3098,1],[3281,1],[3315,1],[3738,1],[3772,1],[4448,1],[4482,1],[5162,1],[5196,1],[5536,1],[5570,1]]},"59":{"position":[[122,1],[176,1],[701,1],[814,1],[946,1],[1000,1],[1204,1],[1270,1],[1460,1],[1556,1],[1772,1],[1901,1],[2146,1],[2276,1],[2649,1],[2788,1],[3069,1],[3262,1],[3507,1],[3528,1],[3692,1]]},"60":{"position":[[427,1],[472,1],[861,1],[892,1]]},"61":{"position":[[310,1],[325,1],[337,1],[360,1],[372,1],[430,1],[445,1],[492,1],[505,1],[613,1],[869,1],[884,1],[897,1],[931,1],[1553,1],[1671,1]]},"62":{"position":[[91,1],[106,1],[119,1],[180,1],[192,1],[216,1]]},"63":{"position":[[357,1],[380,1],[392,1],[531,1],[1337,1],[1360,1],[1372,1],[1404,1]]}},"keywords":{}}],["0.0.0.0:8000",{"_index":575,"title":{},"content":{"26":{"position":[[267,14]]}},"keywords":{}}],["05",{"_index":65,"title":{},"content":{"3":{"position":[[239,2],[260,2]]}},"keywords":{}}],["1",{"_index":312,"title":{"14":{"position":[[0,2]]},"18":{"position":[[0,2]]},"27":{"position":[[13,1]]}},"content":{"33":{"position":[[163,2],[166,1],[177,2],[180,1],[430,2],[433,1]]},"36":{"position":[[245,2]]},"46":{"position":[[358,1],[382,1]]},"59":{"position":[[3509,1]]}},"keywords":{}}],["10",{"_index":1087,"title":{},"content":{"58":{"position":[[5471,3]]}},"keywords":{}}],["100",{"_index":468,"title":{},"content":{"22":{"position":[[207,4]]},"30":{"position":[[176,3],[229,3],[495,3]]},"35":{"position":[[760,3]]}},"keywords":{}}],["1000",{"_index":1086,"title":{},"content":{"58":{"position":[[5458,5]]}},"keywords":{}}],["101",{"_index":604,"title":{},"content":{"30":{"position":[[306,3],[582,3]]},"35":{"position":[[751,3]]}},"keywords":{}}],["12",{"_index":1155,"title":{},"content":{"62":{"position":[[175,4]]}},"keywords":{}}],["2",{"_index":324,"title":{"15":{"position":[[0,2]]},"19":{"position":[[0,2]]}},"content":{"35":{"position":[[822,2]]},"36":{"position":[[452,2]]}},"keywords":{}}],["2019",{"_index":64,"title":{},"content":{"3":{"position":[[234,4]]}},"keywords":{}}],["256",{"_index":822,"title":{},"content":{"48":{"position":[[8,3]]}},"keywords":{}}],["3",{"_index":331,"title":{"16":{"position":[[0,2]]},"20":{"position":[[0,2]]}},"content":{},"keywords":{}}],["30",{"_index":66,"title":{},"content":{"3":{"position":[[242,2],[263,2]]}},"keywords":{}}],["4",{"_index":440,"title":{"21":{"position":[[0,2]]}},"content":{},"keywords":{}}],["5",{"_index":462,"title":{"22":{"position":[[0,2]]}},"content":{"57":{"position":[[6066,1]]}},"keywords":{}}],["5000",{"_index":1004,"title":{},"content":{"57":{"position":[[5942,5],[6044,4]]}},"keywords":{}}],["6",{"_index":482,"title":{"23":{"position":[[0,2]]}},"content":{},"keywords":{}}],["60",{"_index":1025,"title":{},"content":{"58":{"position":[[512,3],[741,3],[980,3],[1223,3],[2561,3],[2769,3],[3002,3]]}},"keywords":{}}],["7",{"_index":495,"title":{"24":{"position":[[0,2]]}},"content":{},"keywords":{}}],["8",{"_index":523,"title":{"25":{"position":[[0,2]]}},"content":{},"keywords":{}}],["80",{"_index":919,"title":{},"content":{"57":{"position":[[884,2]]}},"keywords":{}}],["8000",{"_index":911,"title":{},"content":{"57":{"position":[[618,5],[1857,5]]}},"keywords":{}}],["8080",{"_index":160,"title":{},"content":{"8":{"position":[[662,5]]},"57":{"position":[[890,5]]}},"keywords":{}}],["8080:8080",{"_index":153,"title":{},"content":{"8":{"position":[[457,9]]}},"keywords":{}}],["8081:8081",{"_index":154,"title":{},"content":{"8":{"position":[[470,9]]}},"keywords":{}}],["8090",{"_index":913,"title":{},"content":{"57":{"position":[[645,5],[724,5]]}},"keywords":{}}],["abov",{"_index":210,"title":{},"content":{"9":{"position":[[1074,5],[1344,5]]},"12":{"position":[[868,5]]},"26":{"position":[[130,6]]},"29":{"position":[[101,5]]},"33":{"position":[[543,5]]},"52":{"position":[[202,6]]},"54":{"position":[[215,5]]},"57":{"position":[[4714,6]]},"58":{"position":[[3790,6]]},"59":{"position":[[2294,6]]}},"keywords":{}}],["access",{"_index":250,"title":{},"content":{"11":{"position":[[635,6]]},"16":{"position":[[290,6]]},"17":{"position":[[767,6]]},"19":{"position":[[759,10]]},"50":{"position":[[78,10],[132,6]]},"51":{"position":[[73,6],[237,6]]},"52":{"position":[[229,6]]},"57":{"position":[[767,10],[1631,6],[3123,6],[3355,11]]},"60":{"position":[[1002,10]]},"61":{"position":[[246,8]]}},"keywords":{}}],["accord",{"_index":1078,"title":{},"content":{"58":{"position":[[4956,10]]},"59":{"position":[[3336,9]]}},"keywords":{}}],["accur",{"_index":839,"title":{},"content":{"48":{"position":[[653,8]]}},"keywords":{}}],["acquir",{"_index":609,"title":{},"content":{"30":{"position":[[485,9]]}},"keywords":{}}],["act",{"_index":235,"title":{},"content":{"11":{"position":[[179,4],[585,4]]},"12":{"position":[[220,4]]},"23":{"position":[[54,3]]},"41":{"position":[[48,6]]},"57":{"position":[[5709,4],[6339,4]]}},"keywords":{}}],["activ",{"_index":923,"title":{},"content":{"57":{"position":[[1010,10]]},"58":{"position":[[4871,10]]}},"keywords":{}}],["actual",{"_index":164,"title":{},"content":{"8":{"position":[[787,6]]},"48":{"position":[[965,8]]},"63":{"position":[[1234,6]]}},"keywords":{}}],["ad",{"_index":59,"title":{},"content":{"3":{"position":[[151,5]]},"17":{"position":[[876,5]]},"57":{"position":[[2149,5]]},"58":{"position":[[3589,5]]},"59":{"position":[[218,5],[1730,5]]}},"keywords":{}}],["adapt",{"_index":520,"title":{},"content":{"24":{"position":[[736,7]]}},"keywords":{}}],["add",{"_index":53,"title":{},"content":{"3":{"position":[[68,3]]},"6":{"position":[[82,3]]},"14":{"position":[[348,3]]},"36":{"position":[[689,3]]}},"keywords":{}}],["addit",{"_index":213,"title":{},"content":{"9":{"position":[[1125,9]]},"16":{"position":[[3,9]]},"22":{"position":[[372,10]]},"30":{"position":[[450,10],[748,10]]},"32":{"position":[[629,10]]},"33":{"position":[[716,10]]},"36":{"position":[[693,10]]},"42":{"position":[[177,10]]},"44":{"position":[[53,8]]},"46":{"position":[[486,10],[589,10]]},"48":{"position":[[1035,10]]},"57":{"position":[[1818,10]]},"58":{"position":[[1778,10]]},"59":{"position":[[2844,10]]}},"keywords":{}}],["addition",{"_index":401,"title":{},"content":{"19":{"position":[[292,13]]},"45":{"position":[[262,13]]},"61":{"position":[[1292,13]]}},"keywords":{}}],["address",{"_index":628,"title":{},"content":{"30":{"position":[[1038,7]]},"34":{"position":[[176,7]]},"61":{"position":[[412,8],[421,8],[437,7],[963,7],[1075,7]]}},"keywords":{}}],["adipisc",{"_index":9,"title":{},"content":{"0":{"position":[[40,10]]},"2":{"position":[[166,10],[345,10],[524,10],[703,10],[882,10],[1061,10],[1240,10],[1419,10],[1598,10],[1777,10],[1956,10],[2135,10],[2314,10],[2493,10],[2672,10],[2851,10]]}},"keywords":{}}],["adjust",{"_index":908,"title":{},"content":{"57":{"position":[[390,6]]},"59":{"position":[[3329,6]]}},"keywords":{}}],["advantag",{"_index":368,"title":{},"content":{"17":{"position":[[735,9]]}},"keywords":{}}],["adversari",{"_index":1011,"title":{},"content":{"57":{"position":[[6416,11]]}},"keywords":{}}],["affect",{"_index":540,"title":{},"content":{"25":{"position":[[334,9]]},"48":{"position":[[424,6],[1532,6]]}},"keywords":{}}],["ag",{"_index":926,"title":{},"content":{"57":{"position":[[1100,3]]},"62":{"position":[[170,4],[207,4]]}},"keywords":{}}],["against",{"_index":981,"title":{},"content":{"57":{"position":[[4292,7],[5729,7],[6366,7]]}},"keywords":{}}],["agent",{"_index":1056,"title":{},"content":{"58":{"position":[[3121,5]]}},"keywords":{}}],["aim",{"_index":1045,"title":{},"content":{"58":{"position":[[2138,5]]}},"keywords":{}}],["alert("button",{"_index":36,"title":{},"content":{"1":{"position":[[152,18]]}},"keywords":{}}],["algorithm",{"_index":422,"title":{},"content":{"20":{"position":[[172,11]]}},"keywords":{}}],["align",{"_index":695,"title":{},"content":{"35":{"position":[[251,6]]},"45":{"position":[[464,6]]},"59":{"position":[[3832,6]]}},"keywords":{}}],["aliquam",{"_index":19,"title":{},"content":{"0":{"position":[[133,7]]},"2":{"position":[[259,7],[438,7],[617,7],[796,7],[975,7],[1154,7],[1333,7],[1512,7],[1691,7],[1870,7],[2049,7],[2228,7],[2407,7],[2586,7],[2765,7],[2944,7]]}},"keywords":{}}],["aliv",{"_index":1015,"title":{},"content":{"58":{"position":[[150,5],[897,5],[1158,5],[1387,5],[2924,5]]}},"keywords":{}}],["allow",{"_index":639,"title":{},"content":{"31":{"position":[[207,6]]},"32":{"position":[[447,6]]},"35":{"position":[[611,6]]},"40":{"position":[[182,6]]},"41":{"position":[[315,6]]},"48":{"position":[[796,6]]},"57":{"position":[[2232,6],[3518,8],[5221,6],[5640,7]]},"58":{"position":[[23,6],[3826,5]]},"59":{"position":[[2462,6]]},"62":{"position":[[21,6]]},"63":{"position":[[70,6],[1793,6]]}},"keywords":{}}],["allowedhead",{"_index":1059,"title":{},"content":{"58":{"position":[[3318,15],[3338,14],[3472,14],[3801,14]]}},"keywords":{}}],["alreadi",{"_index":82,"title":{},"content":{"5":{"position":[[13,7]]},"6":{"position":[[13,7]]},"24":{"position":[[191,7]]},"31":{"position":[[405,8]]}},"keywords":{}}],["alter",{"_index":835,"title":{},"content":{"48":{"position":[[482,5],[1340,7]]},"60":{"position":[[60,5]]}},"keywords":{}}],["although",{"_index":971,"title":{},"content":{"57":{"position":[[3829,8]]},"60":{"position":[[528,8]]}},"keywords":{}}],["alway",{"_index":915,"title":{},"content":{"57":{"position":[[808,6]]},"63":{"position":[[1739,6]]}},"keywords":{}}],["amet",{"_index":7,"title":{},"content":{"0":{"position":[[22,5],[174,4]]},"2":{"position":[[148,5],[300,4],[327,5],[479,4],[506,5],[658,4],[685,5],[837,4],[864,5],[1016,4],[1043,5],[1195,4],[1222,5],[1374,4],[1401,5],[1553,4],[1580,5],[1732,4],[1759,5],[1911,4],[1938,5],[2090,4],[2117,5],[2269,4],[2296,5],[2448,4],[2475,5],[2627,4],[2654,5],[2806,4],[2833,5],[2985,4]]}},"keywords":{}}],["amount",{"_index":377,"title":{},"content":{"18":{"position":[[117,6]]}},"keywords":{}}],["anoth",{"_index":326,"title":{},"content":{"15":{"position":[[0,7]]},"19":{"position":[[0,7]]},"30":{"position":[[521,7]]},"46":{"position":[[610,7]]}},"keywords":{}}],["anticip",{"_index":780,"title":{},"content":{"45":{"position":[[190,13]]}},"keywords":{}}],["anyth",{"_index":434,"title":{},"content":{"20":{"position":[[391,8]]}},"keywords":{}}],["api",{"_index":171,"title":{"12":{"position":[[0,3]]}},"content":{"9":{"position":[[92,4],[157,3],[198,3],[722,3],[1014,3]]},"11":{"position":[[134,3],[150,3],[381,3],[561,3],[573,3]]},"12":{"position":[[0,3],[60,4],[81,3],[158,4],[211,3],[256,5],[267,3],[300,3],[625,4],[1093,4],[1236,4]]},"13":{"position":[[283,3]]},"14":{"position":[[32,3],[113,3],[306,4]]},"15":{"position":[[23,3],[198,5],[279,4]]},"16":{"position":[[13,3],[165,3],[488,3]]},"17":{"position":[[48,3],[192,3],[307,4],[851,4],[1005,4],[1064,5]]},"18":{"position":[[156,3]]},"24":{"position":[[78,3],[207,3],[263,3],[732,3]]},"28":{"position":[[91,4]]},"29":{"position":[[148,4]]},"30":{"position":[[377,4],[419,3],[1131,3]]},"44":{"position":[[265,4]]},"45":{"position":[[94,5],[447,3]]},"46":{"position":[[324,4],[395,3],[462,3],[541,3],[618,4],[732,4],[921,3],[1342,3]]},"48":{"position":[[263,3],[470,4]]},"57":{"position":[[2109,4]]},"58":{"position":[[3722,3],[3857,3],[4168,5],[4578,3]]},"59":{"position":[[93,4],[317,4],[380,4],[600,4],[842,3],[1011,3],[1319,3],[1611,3],[1926,3]]}},"keywords":{}}],["api/data"",{"_index":952,"title":{},"content":{"57":{"position":[[2668,15]]}},"keywords":{}}],["api_endpoint",{"_index":894,"title":{},"content":{"54":{"position":[[288,13]]}},"keywords":{}}],["apikey",{"_index":956,"title":{},"content":{"57":{"position":[[2817,6],[3001,6],[3083,7]]}},"keywords":{}}],["appli",{"_index":799,"title":{},"content":{"46":{"position":[[993,5]]},"57":{"position":[[28,7],[5895,8]]},"61":{"position":[[655,7]]}},"keywords":{}}],["applic",{"_index":269,"title":{},"content":{"12":{"position":[[433,11]]},"14":{"position":[[206,12]]},"30":{"position":[[621,12],[1099,12]]},"31":{"position":[[89,12]]},"57":{"position":[[3629,12]]},"61":{"position":[[829,12]]},"63":{"position":[[1917,12]]}},"keywords":{}}],["application'",{"_index":706,"title":{},"content":{"35":{"position":[[915,13]]}},"keywords":{}}],["approach",{"_index":638,"title":{},"content":{"31":{"position":[[198,8]]},"35":{"position":[[698,9]]},"48":{"position":[[609,8]]}},"keywords":{}}],["appropri",{"_index":240,"title":{},"content":{"11":{"position":[[278,11]]},"57":{"position":[[6216,11]]}},"keywords":{}}],["architectur",{"_index":227,"title":{"11":{"position":[[13,13]]},"43":{"position":[[0,12]]},"44":{"position":[[11,13]]}},"content":{"11":{"position":[[37,12],[520,13]]},"17":{"position":[[380,13]]},"21":{"position":[[245,12]]},"45":{"position":[[451,12]]},"48":{"position":[[1616,12]]}},"keywords":{}}],["arg",{"_index":866,"title":{"51":{"position":[[0,5]]}},"content":{"50":{"position":[[278,5]]}},"keywords":{}}],["args.id",{"_index":876,"title":{},"content":{"51":{"position":[[218,7]]}},"keywords":{}}],["argument",{"_index":872,"title":{},"content":{"51":{"position":[[14,9],[84,9],[251,8]]},"59":{"position":[[331,8],[2996,9],[3358,8]]},"60":{"position":[[245,8],[727,8]]},"61":{"position":[[729,9]]}},"keywords":{}}],["aris",{"_index":684,"title":{},"content":{"34":{"position":[[211,6]]}},"keywords":{}}],["array",{"_index":1084,"title":{},"content":{"58":{"position":[[5372,5]]},"61":{"position":[[1361,5]]}},"keywords":{}}],["aspect",{"_index":783,"title":{},"content":{"45":{"position":[[310,8]]},"58":{"position":[[53,7]]}},"keywords":{}}],["assist",{"_index":665,"title":{},"content":{"33":{"position":[[41,6]]}},"keywords":{}}],["associ",{"_index":660,"title":{},"content":{"32":{"position":[[517,10],[661,10]]},"33":{"position":[[748,10]]},"44":{"position":[[399,10]]},"57":{"position":[[4113,10]]}},"keywords":{}}],["attack",{"_index":338,"title":{},"content":{"16":{"position":[[233,7]]},"57":{"position":[[4061,9],[6402,7]]}},"keywords":{}}],["attempt",{"_index":515,"title":{},"content":{"24":{"position":[[606,9]]}},"keywords":{}}],["attribut",{"_index":1112,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["aut",{"_index":716,"title":{},"content":{"36":{"position":[[346,3]]}},"keywords":{}}],["autem"",{"_index":730,"title":{},"content":{"36":{"position":[[574,11]]}},"keywords":{}}],["authent",{"_index":244,"title":{},"content":{"11":{"position":[[424,15]]},"16":{"position":[[178,14]]},"24":{"position":[[113,15]]},"45":{"position":[[329,14]]}},"keywords":{}}],["author",{"_index":58,"title":{},"content":{"3":{"position":[[136,7]]},"28":{"position":[[155,7]]},"29":{"position":[[206,6]]},"30":{"position":[[266,6],[553,6]]},"45":{"position":[[348,13]]},"57":{"position":[[3015,13]]},"58":{"position":[[3837,13]]}},"keywords":{}}],["author'",{"_index":599,"title":{},"content":{"30":{"position":[[40,8]]}},"keywords":{}}],["authors.yml",{"_index":60,"title":{},"content":{"3":{"position":[[160,12]]}},"keywords":{}}],["automat",{"_index":811,"title":{},"content":{"46":{"position":[[1299,13]]},"57":{"position":[[5036,13],[6149,13]]}},"keywords":{}}],["avail",{"_index":626,"title":{},"content":{"30":{"position":[[997,13]]},"57":{"position":[[1753,10],[3690,10]]}},"keywords":{}}],["avoid",{"_index":98,"title":{},"content":{"5":{"position":[[241,5]]}},"keywords":{}}],["backend",{"_index":241,"title":{"17":{"position":[[0,7]]}},"content":{"11":{"position":[[290,7],[347,7]]},"17":{"position":[[88,7]]},"19":{"position":[[709,8]]},"21":{"position":[[85,8]]},"22":{"position":[[33,7]]},"25":{"position":[[4,8]]}},"keywords":{}}],["base",{"_index":186,"title":{},"content":{"9":{"position":[[435,4]]},"58":{"position":[[4150,4],[4672,4]]},"59":{"position":[[584,4],[635,4]]}},"keywords":{}}],["baseurl",{"_index":1026,"title":{},"content":{"58":{"position":[[516,8],[745,8],[984,8],[1227,8],[1491,8],[1909,8],[2162,7],[2232,7],[2565,8],[2773,8],[3006,8],[3223,8],[4114,8],[4280,8],[4329,8],[4513,7]]},"59":{"position":[[556,8],[755,8]]}},"keywords":{}}],["bash",{"_index":125,"title":{},"content":{"7":{"position":[[151,4]]}},"keywords":{}}],["basic",{"_index":215,"title":{},"content":{"9":{"position":[[1176,9]]},"19":{"position":[[732,9]]},"31":{"position":[[362,6]]}},"keywords":{}}],["batch",{"_index":678,"title":{"34":{"position":[[14,9]]}},"content":{"34":{"position":[[0,8]]},"35":{"position":[[302,5]]},"58":{"position":[[5199,6],[5235,5],[5294,7],[5348,7],[5416,7]]},"59":{"position":[[3883,5]]}},"keywords":{}}],["be",{"_index":514,"title":{},"content":{"24":{"position":[[600,5]]},"46":{"position":[[506,5]]},"53":{"position":[[645,5]]},"58":{"position":[[2385,5]]}},"keywords":{}}],["becom",{"_index":453,"title":{},"content":{"21":{"position":[[204,6]]},"48":{"position":[[1083,7]]},"61":{"position":[[853,8]]}},"keywords":{}}],["befor",{"_index":141,"title":{},"content":{"8":{"position":[[69,6]]},"20":{"position":[[384,6]]},"31":{"position":[[107,6],[285,6]]},"46":{"position":[[1078,6]]},"47":{"position":[[135,6]]},"57":{"position":[[5655,6]]},"58":{"position":[[445,6],[1172,6],[1693,6],[2378,6],[2509,6]]}},"keywords":{}}],["behalf",{"_index":358,"title":{},"content":{"17":{"position":[[211,6]]}},"keywords":{}}],["behav",{"_index":900,"title":{},"content":{"57":{"position":[[137,7]]}},"keywords":{}}],["behind",{"_index":829,"title":{},"content":{"48":{"position":[[252,6]]}},"keywords":{}}],["below",{"_index":118,"title":{},"content":{"7":{"position":[[17,5]]},"8":{"position":[[62,6]]},"26":{"position":[[236,6]]},"57":{"position":[[504,6]]},"58":{"position":[[366,6]]}},"keywords":{}}],["benchmark",{"_index":432,"title":{},"content":{"20":{"position":[[354,12]]}},"keywords":{}}],["benefici",{"_index":972,"title":{},"content":{"57":{"position":[[3855,10]]}},"keywords":{}}],["best",{"_index":394,"title":{},"content":{"19":{"position":[[153,4]]},"46":{"position":[[902,4]]}},"keywords":{}}],["better",{"_index":1149,"title":{},"content":{"61":{"position":[[1800,6]]}},"keywords":{}}],["between",{"_index":360,"title":{},"content":{"17":{"position":[[394,7]]},"23":{"position":[[70,7]]},"24":{"position":[[338,7]]},"50":{"position":[[168,7]]},"58":{"position":[[879,7],[2902,7],[5335,7]]}},"keywords":{}}],["beyond",{"_index":565,"title":{},"content":{"25":{"position":[[873,6]]}},"keywords":{}}],["bff",{"_index":351,"title":{"17":{"position":[[21,6]]}},"content":{"17":{"position":[[2,3],[177,3],[316,3],[589,4],[722,3],[1113,3]]},"18":{"position":[[35,3],[190,3],[249,3],[403,3]]},"19":{"position":[[31,3],[99,3],[310,3],[584,3],[669,3]]},"20":{"position":[[8,3]]},"22":{"position":[[72,3],[152,3],[521,3]]},"23":{"position":[[0,3],[244,3],[385,3]]},"24":{"position":[[0,3],[282,3],[366,3],[383,3],[634,3],[650,4]]},"25":{"position":[[26,5],[248,3],[415,3]]}},"keywords":{}}],["big",{"_index":444,"title":{},"content":{"21":{"position":[[41,3]]}},"keywords":{}}],["bit",{"_index":582,"title":{},"content":{"26":{"position":[[438,4]]}},"keywords":{}}],["blog",{"_index":1,"title":{"0":{"position":[[6,4]]},"1":{"position":[[4,4]]},"2":{"position":[[5,4]]}},"content":{"1":{"position":[[0,4],[111,4]]},"2":{"position":[[35,4],[93,4]]},"3":{"position":[[11,8],[48,4],[107,4],[131,4],[177,4],[285,4],[333,4],[355,4],[407,5],[449,5]]}},"keywords":{}}],["blue",{"_index":472,"title":{},"content":{"22":{"position":[[334,4]]}},"keywords":{}}],["blueprint",{"_index":744,"title":{"45":{"position":[[26,12]]}},"content":{"38":{"position":[[286,10]]},"44":{"position":[[127,13]]}},"keywords":{}}],["bodi",{"_index":209,"title":{},"content":{"9":{"position":[[1054,5]]},"12":{"position":[[775,5],[1276,5]]},"32":{"position":[[358,5]]},"34":{"position":[[380,5]]},"47":{"position":[[276,4]]},"52":{"position":[[96,5]]},"53":{"position":[[155,5]]},"59":{"position":[[1904,5],[1914,4],[2242,5],[2425,5]]}},"keywords":{}}],["boolean",{"_index":1036,"title":{},"content":{"58":{"position":[[1344,7]]}},"keywords":{}}],["booleandefault",{"_index":745,"title":{},"content":{"39":{"position":[[54,15]]},"40":{"position":[[77,15]]}},"keywords":{}}],["bootstrap",{"_index":754,"title":{},"content":{"42":{"position":[[17,10]]}},"keywords":{}}],["both",{"_index":362,"title":{},"content":{"17":{"position":[[469,4]]}},"keywords":{}}],["bottleneck",{"_index":791,"title":{},"content":{"46":{"position":[[301,11]]}},"keywords":{}}],["box",{"_index":383,"title":{},"content":{"18":{"position":[[235,4]]}},"keywords":{}}],["break",{"_index":851,"title":{},"content":{"48":{"position":[[1495,8]]}},"keywords":{}}],["brew",{"_index":108,"title":{},"content":{"6":{"position":[[173,4],[202,4],[341,4],[353,4]]}},"keywords":{}}],["bridg",{"_index":486,"title":{},"content":{"23":{"position":[[63,6]]}},"keywords":{}}],["browser",{"_index":585,"title":{},"content":{"26":{"position":[[497,7]]},"57":{"position":[[1512,7]]}},"keywords":{}}],["bug",{"_index":399,"title":{},"content":{"19":{"position":[[263,4]]},"23":{"position":[[323,3]]}},"keywords":{}}],["build",{"_index":105,"title":{},"content":{"5":{"position":[[349,7]]},"14":{"position":[[3,5]]},"63":{"position":[[148,5]]}},"keywords":{}}],["built",{"_index":466,"title":{},"content":{"22":{"position":[[103,5]]},"57":{"position":[[1487,5]]}},"keywords":{}}],["busi",{"_index":978,"title":{},"content":{"57":{"position":[[4124,8]]}},"keywords":{}}],["bypass",{"_index":987,"title":{},"content":{"57":{"position":[[4760,9]]}},"keywords":{}}],["cach",{"_index":246,"title":{},"content":{"11":{"position":[[459,8]]},"20":{"position":[[196,8]]},"45":{"position":[[242,7]]},"57":{"position":[[1052,5]]},"58":{"position":[[4915,7],[4981,7]]}},"keywords":{}}],["call",{"_index":181,"title":{},"content":{"9":{"position":[[350,6]]},"13":{"position":[[287,5]]},"34":{"position":[[124,6]]},"54":{"position":[[281,6]]},"55":{"position":[[222,6]]},"58":{"position":[[4582,5]]},"59":{"position":[[871,5],[1323,5],[1615,5],[1930,5],[3465,5]]}},"keywords":{}}],["can't",{"_index":484,"title":{},"content":{"23":{"position":[[11,5]]}},"keywords":{}}],["canari",{"_index":463,"title":{"22":{"position":[[3,6]]}},"content":{"22":{"position":[[456,6]]}},"keywords":{}}],["capabl",{"_index":683,"title":{},"content":{"34":{"position":[[162,10]]}},"keywords":{}}],["care",{"_index":1139,"title":{},"content":{"61":{"position":[[1174,5]]}},"keywords":{}}],["case",{"_index":276,"title":{},"content":{"12":{"position":[[560,5]]},"20":{"position":[[61,5]]},"23":{"position":[[307,4]]},"33":{"position":[[549,5]]},"53":{"position":[[351,5]]},"57":{"position":[[185,6]]},"59":{"position":[[393,5]]},"61":{"position":[[646,5]]}},"keywords":{}}],["caus",{"_index":536,"title":{},"content":{"25":{"position":[[274,7]]}},"keywords":{}}],["certain",{"_index":1119,"title":{},"content":{"60":{"position":[[800,7]]}},"keywords":{}}],["chain",{"_index":1135,"title":{},"content":{"61":{"position":[[754,5]]}},"keywords":{}}],["challeng",{"_index":320,"title":{},"content":{"14":{"position":[[97,10]]},"15":{"position":[[8,9]]},"16":{"position":[[389,11]]},"17":{"position":[[34,10],[1095,10]]},"18":{"position":[[11,10]]},"19":{"position":[[8,9]]},"25":{"position":[[624,11],[847,9]]}},"keywords":{}}],["chang",{"_index":420,"title":{},"content":{"20":{"position":[[137,7],[469,8]]},"21":{"position":[[282,6]]},"22":{"position":[[6,6],[137,7],[177,7]]},"23":{"position":[[191,6]]},"35":{"position":[[14,7]]},"48":{"position":[[368,7],[555,7],[844,6],[1430,8],[1504,7]]}},"keywords":{}}],["channel",{"_index":859,"title":{},"content":{"48":{"position":[[1720,8]]},"58":{"position":[[2180,9]]}},"keywords":{}}],["characterist",{"_index":848,"title":{},"content":{"48":{"position":[[1365,14]]}},"keywords":{}}],["check",{"_index":664,"title":{"38":{"position":[[0,6]]}},"content":{"33":{"position":[[9,5],[110,5],[356,5]]},"38":{"position":[[4,5],[114,5],[152,5],[189,5]]},"39":{"position":[[79,5]]},"40":{"position":[[102,5],[168,5],[286,5]]},"46":{"position":[[174,5]]},"57":{"position":[[4569,7]]}},"keywords":{}}],["chosen",{"_index":920,"title":{},"content":{"57":{"position":[[908,6]]}},"keywords":{}}],["citi",{"_index":1128,"title":{},"content":{"61":{"position":[[463,5]]}},"keywords":{}}],["class",{"_index":475,"title":{},"content":{"22":{"position":[[436,5]]},"48":{"position":[[1099,5]]}},"keywords":{}}],["clear",{"_index":506,"title":{},"content":{"24":{"position":[[244,5]]},"57":{"position":[[857,5]]}},"keywords":{}}],["cli",{"_index":120,"title":{"31":{"position":[[10,4]]},"33":{"position":[[21,4]]},"37":{"position":[[0,3]]}},"content":{"7":{"position":[[47,3]]},"31":{"position":[[13,3],[385,4]]},"32":{"position":[[749,3]]},"33":{"position":[[33,3],[215,3]]},"34":{"position":[[144,3]]},"35":{"position":[[197,3],[322,3]]},"59":{"position":[[3778,3],[3903,3]]}},"keywords":{}}],["click",{"_index":39,"title":{},"content":{"1":{"position":[[216,5]]}},"keywords":{}}],["clicked!")}>click",{"_index":37,"title":{},"content":{"1":{"position":[[171,25]]}},"keywords":{}}],["client",{"_index":230,"title":{"13":{"position":[[15,8]]},"47":{"position":[[0,6]]}},"content":{"11":{"position":[[67,7],[370,7],[624,7]]},"12":{"position":[[426,6],[570,6],[1042,6]]},"13":{"position":[[23,6],[111,6],[253,6],[532,6]]},"14":{"position":[[68,6],[136,6],[199,6],[239,6],[394,6]]},"15":{"position":[[46,6],[146,6]]},"16":{"position":[[36,6],[111,6],[270,6]]},"17":{"position":[[149,7],[225,7],[415,6],[487,6]]},"18":{"position":[[337,7]]},"22":{"position":[[116,6]]},"23":{"position":[[82,7]]},"24":{"position":[[350,7]]},"32":{"position":[[454,7]]},"44":{"position":[[4,7],[501,6]]},"47":{"position":[[9,6]]},"48":{"position":[[1548,8]]},"57":{"position":[[3527,7],[3622,6]]},"60":{"position":[[829,7],[1020,7]]},"61":{"position":[[1115,6]]}},"keywords":{}}],["client'",{"_index":776,"title":{},"content":{"44":{"position":[[696,8]]}},"keywords":{}}],["close",{"_index":1022,"title":{},"content":{"58":{"position":[[452,7],[1179,8]]}},"keywords":{}}],["co",{"_index":70,"title":{},"content":{"3":{"position":[[323,2]]}},"keywords":{}}],["code",{"_index":221,"title":{"48":{"position":[[5,5]]}},"content":{"9":{"position":[[1301,5]]},"14":{"position":[[401,5]]},"18":{"position":[[140,5]]},"20":{"position":[[132,4]]},"21":{"position":[[144,4]]},"48":{"position":[[997,4]]}},"keywords":{}}],["combin",{"_index":254,"title":{},"content":{"12":{"position":[[41,9],[167,9],[634,8],[1058,7]]},"14":{"position":[[315,9]]},"17":{"position":[[1013,9]]},"63":{"position":[[84,7]]}},"keywords":{}}],["come",{"_index":808,"title":{},"content":{"46":{"position":[[1216,6]]}},"keywords":{}}],["command",{"_index":90,"title":{},"content":{"5":{"position":[[122,7]]},"6":{"position":[[147,7]]},"7":{"position":[[168,7]]},"8":{"position":[[226,8],[291,7],[434,8],[524,7],[769,7]]},"26":{"position":[[30,7],[179,7]]},"31":{"position":[[532,9]]},"33":{"position":[[15,8]]},"38":{"position":[[10,7],[62,7],[120,8],[195,7]]},"40":{"position":[[174,7]]},"41":{"position":[[10,7],[232,8],[307,7]]},"42":{"position":[[9,7],[157,7]]}},"keywords":{}}],["comment",{"_index":45,"title":{},"content":{"2":{"position":[[76,7]]},"48":{"position":[[379,8]]},"52":{"position":[[110,9],[120,9]]},"55":{"position":[[109,9],[315,8]]}},"keywords":{}}],["commentsforus",{"_index":895,"title":{},"content":{"55":{"position":[[92,16]]}},"keywords":{}}],["commit",{"_index":553,"title":{},"content":{"25":{"position":[[666,9]]}},"keywords":{}}],["common",{"_index":470,"title":{},"content":{"22":{"position":[[291,6]]}},"keywords":{}}],["commonli",{"_index":1095,"title":{},"content":{"59":{"position":[[1329,8]]}},"keywords":{}}],["commun",{"_index":361,"title":{},"content":{"17":{"position":[[452,11]]},"25":{"position":[[152,13]]},"44":{"position":[[675,11]]},"58":{"position":[[4040,12]]}},"keywords":{}}],["compani",{"_index":430,"title":{},"content":{"20":{"position":[[327,9]]},"22":{"position":[[546,9]]},"24":{"position":[[456,7]]}},"keywords":{}}],["compat",{"_index":489,"title":{},"content":{"23":{"position":[[201,10]]}},"keywords":{}}],["compel",{"_index":557,"title":{},"content":{"25":{"position":[[743,10]]}},"keywords":{}}],["compelet",{"_index":161,"title":{},"content":{"8":{"position":[[698,11]]}},"keywords":{}}],["compil",{"_index":697,"title":{},"content":{"35":{"position":[[326,8]]},"58":{"position":[[4354,11]]},"59":{"position":[[3907,8]]},"62":{"position":[[279,7]]}},"keywords":{}}],["complet",{"_index":131,"title":{},"content":{"7":{"position":[[298,10]]},"12":{"position":[[1321,8]]}},"keywords":{}}],["complex",{"_index":314,"title":{"14":{"position":[[13,11]]}},"content":{"14":{"position":[[181,10],[376,10]]},"18":{"position":[[421,7]]},"22":{"position":[[402,7]]},"57":{"position":[[6438,7]]},"63":{"position":[[159,7],[1457,7]]}},"keywords":{}}],["compon",{"_index":247,"title":{},"content":{"11":{"position":[[491,9]]},"17":{"position":[[355,9]]},"44":{"position":[[71,10]]},"45":{"position":[[430,9]]}},"keywords":{}}],["compos",{"_index":168,"title":{},"content":{"9":{"position":[[53,7],[293,7]]},"12":{"position":[[1227,8]]},"15":{"position":[[270,8]]},"17":{"position":[[298,8],[842,8]]},"36":{"position":[[716,7]]},"46":{"position":[[333,8]]}},"keywords":{}}],["composit",{"_index":251,"title":{"12":{"position":[[4,12]]},"13":{"position":[[0,11]]},"45":{"position":[[0,11]]},"63":{"position":[[9,12]]}},"content":{"12":{"position":[[4,11],[271,11]]},"13":{"position":[[4,11]]},"14":{"position":[[36,11],[117,11]]},"15":{"position":[[27,11]]},"16":{"position":[[17,11],[359,11],[492,11]]},"17":{"position":[[52,11],[196,11],[915,11]]},"38":{"position":[[30,11],[326,11]]},"40":{"position":[[53,11]]},"41":{"position":[[174,11]]},"44":{"position":[[91,11]]},"45":{"position":[[4,11]]},"46":{"position":[[9,11],[219,11],[399,11],[925,11]]},"48":{"position":[[25,11],[267,12]]},"63":{"position":[[40,11],[1422,11]]}},"keywords":{}}],["comprehens",{"_index":898,"title":{},"content":{"57":{"position":[[66,13]]}},"keywords":{}}],["compris",{"_index":777,"title":{},"content":{"45":{"position":[[103,9]]}},"keywords":{}}],["concept",{"_index":1159,"title":{},"content":{"63":{"position":[[29,7]]}},"keywords":{}}],["concern",{"_index":499,"title":{},"content":{"24":{"position":[[63,8]]},"57":{"position":[[5803,9]]}},"keywords":{}}],["conclus",{"_index":1145,"title":{},"content":{"61":{"position":[[1677,11]]}},"keywords":{}}],["condit",{"_index":305,"title":{},"content":{"13":{"position":[[406,10],[514,10]]}},"keywords":{}}],["config",{"_index":79,"title":{},"content":{"3":{"position":[[480,7]]}},"keywords":{}}],["configur",{"_index":165,"title":{"9":{"position":[[0,13]]}},"content":{"9":{"position":[[0,13]]},"31":{"position":[[139,14]]},"41":{"position":[[89,15],[144,15]]},"42":{"position":[[206,14]]},"57":{"position":[[94,15],[341,14],[990,14],[1382,13],[2218,13],[2394,15],[2895,13],[3184,15],[3329,13],[4208,13],[5583,13]]},"58":{"position":[[2098,13],[3353,13]]}},"keywords":{}}],["confin",{"_index":566,"title":{},"content":{"25":{"position":[[884,8]]}},"keywords":{}}],["conform",{"_index":982,"title":{},"content":{"57":{"position":[[4354,10]]}},"keywords":{}}],["confus",{"_index":504,"title":{},"content":{"24":{"position":[[175,9]]}},"keywords":{}}],["conjunct",{"_index":302,"title":{},"content":{"13":{"position":[[375,11]]}},"keywords":{}}],["connect",{"_index":1013,"title":{},"content":{"58":{"position":[[84,11],[124,10],[419,10],[465,12],[658,11],[932,11],[1126,10],[1427,10],[2473,10],[2706,10],[2959,11]]}},"keywords":{}}],["connecttimeout",{"_index":1049,"title":{},"content":{"58":{"position":[[2428,15]]}},"keywords":{}}],["consectetur",{"_index":8,"title":{},"content":{"0":{"position":[[28,11]]},"2":{"position":[[154,11],[333,11],[512,11],[691,11],[870,11],[1049,11],[1228,11],[1407,11],[1586,11],[1765,11],[1944,11],[2123,11],[2302,11],[2481,11],[2660,11],[2839,11]]}},"keywords":{}}],["consequat",{"_index":20,"title":{},"content":{"0":{"position":[[141,10]]},"2":{"position":[[267,10],[446,10],[625,10],[804,10],[983,10],[1162,10],[1341,10],[1520,10],[1699,10],[1878,10],[2057,10],[2236,10],[2415,10],[2594,10],[2773,10],[2952,10]]}},"keywords":{}}],["consid",{"_index":267,"title":{},"content":{"12":{"position":[[398,8],[1195,10]]},"28":{"position":[[0,8]]},"57":{"position":[[3920,8],[4953,8]]},"61":{"position":[[284,8]]}},"keywords":{}}],["consist",{"_index":836,"title":{},"content":{"48":{"position":[[527,10]]},"58":{"position":[[4101,12]]}},"keywords":{}}],["consol",{"_index":1158,"title":{},"content":{"62":{"position":[[455,8]]}},"keywords":{}}],["consolid",{"_index":699,"title":{},"content":{"35":{"position":[[396,13]]},"59":{"position":[[3977,13]]}},"keywords":{}}],["const",{"_index":1151,"title":{"62":{"position":[[0,7]]}},"content":{"62":{"position":[[4,6],[223,5]]}},"keywords":{}}],["const(data",{"_index":1153,"title":{},"content":{"62":{"position":[[132,12]]}},"keywords":{}}],["constant",{"_index":801,"title":{},"content":{"46":{"position":[[1032,8]]},"57":{"position":[[2385,8]]},"62":{"position":[[42,8]]}},"keywords":{}}],["construct",{"_index":206,"title":{},"content":{"9":{"position":[[869,9]]},"45":{"position":[[81,12]]}},"keywords":{}}],["consum",{"_index":592,"title":{},"content":{"28":{"position":[[50,9]]}},"keywords":{}}],["consumpt",{"_index":813,"title":{"47":{"position":[[7,12]]}},"content":{},"keywords":{}}],["contain",{"_index":151,"title":{},"content":{"8":{"position":[[405,9],[571,10]]},"12":{"position":[[1131,8]]},"21":{"position":[[104,8]]},"53":{"position":[[583,9],[696,10]]},"58":{"position":[[3899,10]]},"59":{"position":[[1024,8]]}},"keywords":{}}],["content",{"_index":184,"title":{},"content":{"9":{"position":[[405,8]]}},"keywords":{}}],["context",{"_index":862,"title":{"49":{"position":[[0,7]]},"50":{"position":[[0,7]]}},"content":{"50":{"position":[[48,7],[191,7],[268,7],[328,7]]},"53":{"position":[[17,7],[437,7]]},"55":{"position":[[266,8]]},"59":{"position":[[3009,7]]}},"keywords":{}}],["control",{"_index":371,"title":{},"content":{"17":{"position":[[898,7]]},"38":{"position":[[231,7]]},"48":{"position":[[862,11],[1164,7]]},"57":{"position":[[1058,7]]},"58":{"position":[[37,7]]}},"keywords":{}}],["conundrum",{"_index":556,"title":{},"content":{"25":{"position":[[728,9]]}},"keywords":{}}],["conveni",{"_index":69,"title":{},"content":{"3":{"position":[[309,10]]}},"keywords":{}}],["convent",{"_index":567,"title":{},"content":{"25":{"position":[[896,12]]}},"keywords":{}}],["convert",{"_index":700,"title":{},"content":{"35":{"position":[[504,7]]},"59":{"position":[[2379,9]]}},"keywords":{}}],["coordin",{"_index":551,"title":{},"content":{"25":{"position":[[591,13]]}},"keywords":{}}],["correct",{"_index":989,"title":{},"content":{"57":{"position":[[4893,7]]}},"keywords":{}}],["correctli",{"_index":95,"title":{},"content":{"5":{"position":[[211,9]]},"6":{"position":[[258,9]]}},"keywords":{}}],["correspond",{"_index":773,"title":{},"content":{"44":{"position":[[568,13]]}},"keywords":{}}],["cost",{"_index":620,"title":{},"content":{"30":{"position":[[856,6]]},"57":{"position":[[4556,4]]}},"keywords":{}}],["costlier",{"_index":457,"title":{},"content":{"21":{"position":[[263,9]]}},"keywords":{}}],["coupl",{"_index":483,"title":{"23":{"position":[[3,7]]}},"content":{"23":{"position":[[430,8]]}},"keywords":{}}],["cover",{"_index":579,"title":{},"content":{"26":{"position":[[411,5]]}},"keywords":{}}],["cpu",{"_index":341,"title":{},"content":{"16":{"position":[[309,4]]},"17":{"position":[[759,3]]}},"keywords":{}}],["creat",{"_index":31,"title":{},"content":{"1":{"position":[[92,6]]},"9":{"position":[[336,6],[665,6],[957,6]]},"12":{"position":[[68,6],[196,8],[1101,6]]},"17":{"position":[[994,6]]},"26":{"position":[[122,7]]},"42":{"position":[[55,7],[221,8]]},"48":{"position":[[57,7]]}},"keywords":{}}],["createus",{"_index":1105,"title":{},"content":{"59":{"position":[[2305,10]]}},"keywords":{}}],["createuser(input",{"_index":1097,"title":{},"content":{"59":{"position":[[1462,17],[2148,17],[2651,17]]}},"keywords":{}}],["creation",{"_index":758,"title":{},"content":{"42":{"position":[[193,8]]}},"keywords":{}}],["credenti",{"_index":336,"title":{},"content":{"16":{"position":[[193,12]]}},"keywords":{}}],["critic",{"_index":782,"title":{},"content":{"45":{"position":[[292,8]]}},"keywords":{}}],["cross",{"_index":497,"title":{},"content":{"24":{"position":[[49,5]]}},"keywords":{}}],["crucial",{"_index":627,"title":{},"content":{"30":{"position":[[1027,7]]},"57":{"position":[[6198,7]]}},"keywords":{}}],["culmin",{"_index":610,"title":{},"content":{"30":{"position":[[568,10]]}},"keywords":{}}],["curl",{"_index":116,"title":{"7":{"position":[[0,5]]}},"content":{"7":{"position":[[67,4]]},"29":{"position":[[48,4]]},"30":{"position":[[110,4]]},"47":{"position":[[170,4]]}},"keywords":{}}],["current",{"_index":204,"title":{},"content":{"9":{"position":[[848,7]]},"23":{"position":[[221,7]]},"32":{"position":[[551,9]]},"51":{"position":[[38,7]]},"52":{"position":[[33,7]]}},"keywords":{}}],["custom",{"_index":384,"title":{},"content":{"18":{"position":[[276,6]]},"20":{"position":[[33,6]]},"58":{"position":[[1805,6]]},"59":{"position":[[2476,9]]}},"keywords":{}}],["cut",{"_index":498,"title":{},"content":{"24":{"position":[[55,7]]}},"keywords":{}}],["cycl",{"_index":429,"title":{},"content":{"20":{"position":[[310,6]]}},"keywords":{}}],["data",{"_index":176,"title":{},"content":{"9":{"position":[[176,5]]},"13":{"position":[[146,5],[309,4]]},"28":{"position":[[60,4]]},"32":{"position":[[533,5],[677,5]]},"33":{"position":[[764,5]]},"45":{"position":[[63,4]]},"46":{"position":[[600,4],[1060,4]]},"47":{"position":[[224,4]]},"50":{"position":[[139,4]]},"57":{"position":[[2635,4],[2948,4],[4142,4],[5528,5]]},"58":{"position":[[3642,4],[5054,4]]},"59":{"position":[[1985,4],[3437,4]]},"60":{"position":[[338,4],[585,4],[808,4]]},"61":{"position":[[32,4],[173,4],[238,4],[1127,4],[1751,4]]},"63":{"position":[[186,5],[225,4],[1114,4],[1608,4]]}},"keywords":{}}],["date",{"_index":61,"title":{},"content":{"3":{"position":[[187,4]]}},"keywords":{}}],["day",{"_index":798,"title":{},"content":{"46":{"position":[[976,3]]}},"keywords":{}}],["debug",{"_index":973,"title":{},"content":{"57":{"position":[[3889,9]]}},"keywords":{}}],["decis",{"_index":510,"title":{},"content":{"24":{"position":[[436,9]]}},"keywords":{}}],["deeper",{"_index":670,"title":{},"content":{"33":{"position":[[263,6]]}},"keywords":{}}],["default",{"_index":760,"title":{},"content":{"42":{"position":[[260,8]]},"57":{"position":[[602,7],[1221,8],[3704,8],[4582,8],[5287,7],[5876,7]]},"58":{"position":[[195,7],[4142,7],[5102,8]]},"59":{"position":[[627,7],[1410,7]]}},"keywords":{}}],["defin",{"_index":363,"title":{},"content":{"17":{"position":[[527,7]]},"32":{"position":[[561,8]]},"45":{"position":[[480,7]]},"54":{"position":[[318,7]]},"57":{"position":[[2246,6],[4304,7],[5831,8]]},"58":{"position":[[1611,7]]},"63":{"position":[[212,8]]}},"keywords":{}}],["degrad",{"_index":621,"title":{},"content":{"30":{"position":[[869,8]]}},"keywords":{}}],["delay",{"_index":530,"title":{},"content":{"25":{"position":[[166,6]]},"58":{"position":[[5302,5],[5313,5],[5464,6]]}},"keywords":{}}],["delet",{"_index":77,"title":{},"content":{"3":{"position":[[418,6]]},"59":{"position":[[1375,7]]}},"keywords":{}}],["demand",{"_index":550,"title":{},"content":{"25":{"position":[[574,7]]}},"keywords":{}}],["demonstr",{"_index":606,"title":{},"content":{"30":{"position":[[337,12]]},"32":{"position":[[691,11]]}},"keywords":{}}],["denial",{"_index":1010,"title":{},"content":{"57":{"position":[[6384,6]]}},"keywords":{}}],["denot",{"_index":880,"title":{},"content":{"53":{"position":[[5,7]]}},"keywords":{}}],["depend",{"_index":393,"title":{},"content":{"19":{"position":[[115,9]]},"58":{"position":[[4056,9]]}},"keywords":{}}],["deploy",{"_index":381,"title":{},"content":{"18":{"position":[[215,8]]},"21":{"position":[[313,10]]},"22":{"position":[[54,10],[345,12]]},"23":{"position":[[20,8]]},"48":{"position":[[1288,8],[1485,9]]},"57":{"position":[[4004,11]]}},"keywords":{}}],["depth",{"_index":1147,"title":{},"content":{"61":{"position":[[1783,6]]}},"keywords":{}}],["deriv",{"_index":827,"title":{},"content":{"48":{"position":[[141,7]]},"59":{"position":[[2979,7]]}},"keywords":{}}],["describ",{"_index":691,"title":{},"content":{"35":{"position":[[4,9]]},"50":{"position":[[206,9]]}},"keywords":{}}],["descript",{"_index":1156,"title":{},"content":{"62":{"position":[[414,11]]}},"keywords":{}}],["design",{"_index":527,"title":{},"content":{"25":{"position":[[47,8]]},"30":{"position":[[1073,6]]},"57":{"position":[[1582,11]]},"58":{"position":[[2151,10],[4998,8]]}},"keywords":{}}],["desir",{"_index":1114,"title":{},"content":{"60":{"position":[[368,7]]}},"keywords":{}}],["destin",{"_index":1048,"title":{},"content":{"58":{"position":[[2415,12]]}},"keywords":{}}],["detail",{"_index":581,"title":{},"content":{"26":{"position":[[426,6]]},"28":{"position":[[140,7]]},"30":{"position":[[49,8],[273,8],[560,7]]},"44":{"position":[[346,7]]},"57":{"position":[[482,7]]},"58":{"position":[[344,7]]},"59":{"position":[[3480,7]]}},"keywords":{}}],["detect",{"_index":669,"title":{},"content":{"33":{"position":[[223,8]]},"38":{"position":[[74,6]]},"39":{"position":[[23,9]]}},"keywords":{}}],["determin",{"_index":996,"title":{},"content":{"57":{"position":[[5597,10]]},"58":{"position":[[1363,10]]}},"keywords":{}}],["dev",{"_index":673,"title":{},"content":{"33":{"position":[[352,3]]},"57":{"position":[[4843,3]]}},"keywords":{}}],["develop",{"_index":373,"title":{},"content":{"17":{"position":[[971,10]]},"19":{"position":[[132,10]]},"20":{"position":[[298,11]]},"25":{"position":[[185,12],[918,11]]},"28":{"position":[[15,10]]},"30":{"position":[[1084,11]]},"31":{"position":[[38,11],[266,11]]},"46":{"position":[[261,10],[945,10],[1168,9]]},"48":{"position":[[1196,9]]},"57":{"position":[[1554,11],[1995,12],[3873,11]]}},"keywords":{}}],["devop",{"_index":481,"title":{},"content":{"22":{"position":[[564,6]]}},"keywords":{}}],["dictat",{"_index":899,"title":{},"content":{"57":{"position":[[113,8],[1396,8]]}},"keywords":{}}],["differ",{"_index":266,"title":{},"content":{"12":{"position":[[342,9],[615,9]]},"15":{"position":[[188,9]]},"24":{"position":[[754,9]]},"38":{"position":[[239,9]]}},"keywords":{}}],["differenti",{"_index":704,"title":{},"content":{"35":{"position":[[632,13]]},"48":{"position":[[748,14]]}},"keywords":{}}],["difficult",{"_index":388,"title":{},"content":{"18":{"position":[[433,9]]},"20":{"position":[[77,9]]}},"keywords":{}}],["dignissim",{"_index":13,"title":{},"content":{"0":{"position":[[80,9]]},"2":{"position":[[206,9],[385,9],[564,9],[743,9],[922,9],[1101,9],[1280,9],[1459,9],[1638,9],[1817,9],[1996,9],[2175,9],[2354,9],[2533,9],[2712,9],[2891,9]]}},"keywords":{}}],["diminish",{"_index":537,"title":{},"content":{"25":{"position":[[304,10]]}},"keywords":{}}],["direct",{"_index":214,"title":{},"content":{"9":{"position":[[1161,11]]},"17":{"position":[[684,6]]},"34":{"position":[[273,9]]},"35":{"position":[[64,9]]},"57":{"position":[[12,10]]},"58":{"position":[[13,9],[4882,7]]}},"keywords":{}}],["directli",{"_index":939,"title":{},"content":{"57":{"position":[[2114,8],[3573,9]]},"61":{"position":[[1032,8]]}},"keywords":{}}],["directori",{"_index":56,"title":{},"content":{"3":{"position":[[112,10],[430,10]]},"7":{"position":[[282,10],[399,10]]}},"keywords":{}}],["disabl",{"_index":936,"title":{},"content":{"57":{"position":[[2028,7],[3929,9],[4486,7],[4962,9],[5430,9]]}},"keywords":{}}],["discern",{"_index":977,"title":{},"content":{"57":{"position":[[4083,10]]}},"keywords":{}}],["discord",{"_index":858,"title":{},"content":{"48":{"position":[[1712,7]]}},"keywords":{}}],["discov",{"_index":427,"title":{},"content":{"20":{"position":[[270,10]]}},"keywords":{}}],["discuss",{"_index":630,"title":{},"content":{"30":{"position":[[1177,9]]}},"keywords":{}}],["display",{"_index":270,"title":{},"content":{"12":{"position":[[454,7]]},"38":{"position":[[271,7]]},"40":{"position":[[24,7]]}},"keywords":{}}],["dive",{"_index":643,"title":{},"content":{"31":{"position":[[292,6]]}},"keywords":{}}],["do",{"_index":511,"title":{},"content":{"24":{"position":[[510,5]]},"25":{"position":[[268,5]]}},"keywords":{}}],["docker",{"_index":140,"title":{"8":{"position":[[0,7]]}},"content":{"8":{"position":[[37,7],[93,6],[193,6],[235,6],[342,6],[364,6],[398,6],[443,6],[564,6]]}},"keywords":{}}],["document",{"_index":786,"title":{},"content":{"45":{"position":[[408,8]]}},"keywords":{}}],["docusauru",{"_index":23,"title":{},"content":{"1":{"position":[[19,10]]},"3":{"position":[[0,10],[469,10]]}},"keywords":{}}],["doesn't",{"_index":340,"title":{},"content":{"16":{"position":[[277,7]]},"60":{"position":[[350,7]]},"62":{"position":[[375,7]]},"63":{"position":[[1697,7]]}},"keywords":{}}],["dolor",{"_index":5,"title":{},"content":{"0":{"position":[[12,5],[164,5]]},"2":{"position":[[138,5],[290,5],[317,5],[469,5],[496,5],[648,5],[675,5],[827,5],[854,5],[1006,5],[1033,5],[1185,5],[1212,5],[1364,5],[1391,5],[1543,5],[1570,5],[1722,5],[1749,5],[1901,5],[1928,5],[2080,5],[2107,5],[2259,5],[2286,5],[2438,5],[2465,5],[2617,5],[2644,5],[2796,5],[2823,5],[2975,5]]}},"keywords":{}}],["dolorem"",{"_index":735,"title":{},"content":{"36":{"position":[[646,13]]}},"keywords":{}}],["don't",{"_index":75,"title":{},"content":{"3":{"position":[[394,5]]},"5":{"position":[[7,5]]},"6":{"position":[[7,5]]}},"keywords":{}}],["done",{"_index":111,"title":{},"content":{"6":{"position":[[304,5]]},"12":{"position":[[121,4]]}},"keywords":{}}],["door"",{"_index":249,"title":{},"content":{"11":{"position":[[609,10]]}},"keywords":{}}],["down",{"_index":411,"title":{},"content":{"19":{"position":[[727,4]]},"63":{"position":[[663,4]]}},"keywords":{}}],["download",{"_index":144,"title":{},"content":{"8":{"position":[[145,8]]}},"keywords":{}}],["downstream",{"_index":425,"title":{},"content":{"20":{"position":[[221,10]]}},"keywords":{}}],["downtim",{"_index":623,"title":{},"content":{"30":{"position":[[934,8]]}},"keywords":{}}],["dramat",{"_index":366,"title":{},"content":{"17":{"position":[[598,12]]}},"keywords":{}}],["drill",{"_index":1164,"title":{},"content":{"63":{"position":[[657,5]]}},"keywords":{}}],["due",{"_index":624,"title":{},"content":{"30":{"position":[[943,3]]}},"keywords":{}}],["durat",{"_index":998,"title":{},"content":{"57":{"position":[[5620,8],[6132,8]]}},"keywords":{}}],["dure",{"_index":101,"title":{},"content":{"5":{"position":[[270,6]]},"30":{"position":[[1062,6]]},"57":{"position":[[2291,6],[3866,6]]}},"keywords":{}}],["dynam",{"_index":559,"title":{},"content":{"25":{"position":[[779,8]]},"44":{"position":[[542,11]]},"59":{"position":[[1033,7],[1685,7],[2951,7],[3317,11]]}},"keywords":{}}],["ea",{"_index":726,"title":{},"content":{"36":{"position":[[550,2]]}},"keywords":{}}],["each",{"_index":179,"title":{},"content":{"9":{"position":[[278,4]]},"11":{"position":[[540,4]]},"12":{"position":[[514,4]]},"17":{"position":[[126,4]]},"18":{"position":[[244,4]]},"20":{"position":[[52,4]]},"24":{"position":[[451,4]]},"29":{"position":[[153,4]]},"30":{"position":[[10,4],[254,4],[541,4],[695,4]]},"32":{"position":[[493,4],[603,4]]},"33":{"position":[[689,4]]},"35":{"position":[[646,4]]},"36":{"position":[[74,4],[87,4]]},"40":{"position":[[217,4]]},"41":{"position":[[350,4]]},"45":{"position":[[425,4]]},"46":{"position":[[576,4],[659,4]]},"48":{"position":[[690,4],[839,4],[1005,4],[1442,4]]},"57":{"position":[[4331,4]]},"58":{"position":[[887,4],[2910,4],[4239,4],[5343,4]]}},"keywords":{}}],["easier",{"_index":1174,"title":{},"content":{"63":{"position":[[1846,6]]}},"keywords":{}}],["easili",{"_index":976,"title":{},"content":{"57":{"position":[[4076,6]]}},"keywords":{}}],["easily.immut",{"_index":844,"title":{},"content":{"48":{"position":[[1214,20]]}},"keywords":{}}],["effect",{"_index":348,"title":{},"content":{"16":{"position":[[467,9]]},"34":{"position":[[15,9]]},"35":{"position":[[855,11]]},"44":{"position":[[663,11]]}},"keywords":{}}],["effici",{"_index":347,"title":{},"content":{"16":{"position":[[453,9]]},"35":{"position":[[929,10]]},"44":{"position":[[729,9]]}},"keywords":{}}],["effort",{"_index":407,"title":{},"content":{"19":{"position":[[512,6]]}},"keywords":{}}],["eg",{"_index":792,"title":{},"content":{"46":{"position":[[346,3],[1018,3]]},"62":{"position":[[80,3]]}},"keywords":{}}],["elementum",{"_index":12,"title":{},"content":{"0":{"position":[[70,9]]},"2":{"position":[[196,9],[375,9],[554,9],[733,9],[912,9],[1091,9],[1270,9],[1449,9],[1628,9],[1807,9],[1986,9],[2165,9],[2344,9],[2523,9],[2702,9],[2881,9]]}},"keywords":{}}],["elimin",{"_index":1138,"title":{},"content":{"61":{"position":[[981,10]]}},"keywords":{}}],["elit",{"_index":10,"title":{},"content":{"0":{"position":[[51,5]]},"2":{"position":[[177,5],[356,5],[535,5],[714,5],[893,5],[1072,5],[1251,5],[1430,5],[1609,5],[1788,5],[1967,5],[2146,5],[2325,5],[2504,5],[2683,5],[2862,5]]}},"keywords":{}}],["email",{"_index":203,"title":{},"content":{"9":{"position":[[779,6]]},"12":{"position":[[1021,6]]},"32":{"position":[[262,6]]},"47":{"position":[[293,5]]},"61":{"position":[[397,6]]}},"keywords":{}}],["emb",{"_index":1152,"title":{},"content":{"62":{"position":[[34,5]]}},"keywords":{}}],["emphas",{"_index":1069,"title":{},"content":{"58":{"position":[[4076,11]]}},"keywords":{}}],["enabl",{"_index":357,"title":{},"content":{"17":{"position":[[166,6]]},"40":{"position":[[12,7]]},"57":{"position":[[3729,7],[4832,7],[5199,8]]},"58":{"position":[[1796,8]]}},"keywords":{}}],["enablecachecontrolhead",{"_index":922,"title":{},"content":{"57":{"position":[[935,25],[965,24]]}},"keywords":{}}],["enablegraphiql",{"_index":930,"title":{},"content":{"57":{"position":[[1361,15],[1863,15]]}},"keywords":{}}],["enablehttpcach",{"_index":1077,"title":{},"content":{"58":{"position":[[4849,16]]}},"keywords":{}}],["enableintrospect",{"_index":964,"title":{},"content":{"57":{"position":[[3367,20]]}},"keywords":{}}],["enablequeryvalid",{"_index":979,"title":{},"content":{"57":{"position":[[4159,22],[4186,21],[4721,21]]}},"keywords":{}}],["enableresponsevalid",{"_index":990,"title":{},"content":{"57":{"position":[[5001,25],[5307,24]]}},"keywords":{}}],["encapsul",{"_index":781,"title":{},"content":{"45":{"position":[[279,12]]}},"keywords":{}}],["encompass",{"_index":768,"title":{},"content":{"44":{"position":[[300,11]]},"45":{"position":[[37,11],[395,12]]}},"keywords":{}}],["end",{"_index":292,"title":{},"content":{"13":{"position":[[167,4],[260,3]]},"24":{"position":[[17,3],[464,4]]}},"keywords":{}}],["endpoint",{"_index":158,"title":{},"content":{"8":{"position":[[645,8]]},"38":{"position":[[297,10]]},"44":{"position":[[372,9],[419,9]]},"46":{"position":[[1287,8]]},"57":{"position":[[1671,9],[2975,9],[5083,9]]},"58":{"position":[[1724,9]]},"59":{"position":[[846,8],[1015,8]]}},"keywords":{}}],["engin",{"_index":452,"title":{},"content":{"21":{"position":[[189,9]]}},"keywords":{}}],["enhanc",{"_index":528,"title":{},"content":{"25":{"position":[[59,7],[582,8]]},"35":{"position":[[900,9]]},"48":{"position":[[1380,8]]},"57":{"position":[[4020,7],[4522,7]]}},"keywords":{}}],["ensur",{"_index":143,"title":{},"content":{"8":{"position":[[86,6]]},"19":{"position":[[423,6]]},"31":{"position":[[315,6]]},"44":{"position":[[720,8]]},"45":{"position":[[417,7],[504,8]]},"46":{"position":[[1324,8]]},"48":{"position":[[618,7],[1269,8]]},"57":{"position":[[896,6],[2138,7],[3200,6],[4342,7]]},"58":{"position":[[2112,7],[4001,7],[4655,6]]}},"keywords":{}}],["entri",{"_index":237,"title":{},"content":{"11":{"position":[[205,5]]},"19":{"position":[[685,5]]}},"keywords":{}}],["env",{"_index":869,"title":{"54":{"position":[[0,4]]}},"content":{"50":{"position":[[336,4]]},"57":{"position":[[4938,4]]}},"keywords":{}}],["env.api_endpoint",{"_index":893,"title":{},"content":{"54":{"position":[[230,16]]}},"keywords":{}}],["environ",{"_index":134,"title":{},"content":{"7":{"position":[[347,11]]},"54":{"position":[[23,11],[260,11]]},"57":{"position":[[2053,13],[3956,13],[4847,11],[6271,13]]}},"keywords":{}}],["equival",{"_index":1165,"title":{},"content":{"63":{"position":[[737,10]]}},"keywords":{}}],["ero",{"_index":18,"title":{},"content":{"0":{"position":[[128,4]]},"2":{"position":[[254,4],[433,4],[612,4],[791,4],[970,4],[1149,4],[1328,4],[1507,4],[1686,4],[1865,4],[2044,4],[2223,4],[2402,4],[2581,4],[2760,4],[2939,4]]}},"keywords":{}}],["error",{"_index":396,"title":{},"content":{"19":{"position":[[183,5]]},"33":{"position":[[145,6],[412,6]]},"57":{"position":[[4391,6]]},"58":{"position":[[4366,6]]},"62":{"position":[[426,5]]}},"keywords":{}}],["especi",{"_index":937,"title":{},"content":{"57":{"position":[[2067,10],[3301,10],[6246,10]]}},"keywords":{}}],["essenc",{"_index":703,"title":{},"content":{"35":{"position":[[599,8]]}},"keywords":{}}],["essenti",{"_index":886,"title":{},"content":{"53":{"position":[[463,12]]},"57":{"position":[[5693,12]]},"58":{"position":[[3632,9]]},"61":{"position":[[202,11]]}},"keywords":{}}],["est",{"_index":734,"title":{},"content":{"36":{"position":[[642,3]]}},"keywords":{}}],["etc",{"_index":501,"title":{},"content":{"24":{"position":[[141,4]]},"46":{"position":[[1073,4]]},"59":{"position":[[1383,4]]}},"keywords":{}}],["even",{"_index":343,"title":{},"content":{"16":{"position":[[379,4]]},"20":{"position":[[454,4]]},"23":{"position":[[376,4]]},"30":{"position":[[914,4]]},"31":{"position":[[102,4]]}},"keywords":{}}],["eventu",{"_index":442,"title":{},"content":{"21":{"position":[[0,11]]}},"keywords":{}}],["exactli",{"_index":992,"title":{},"content":{"57":{"position":[[5243,7]]}},"keywords":{}}],["examin",{"_index":655,"title":{},"content":{"32":{"position":[[45,10]]}},"keywords":{}}],["exampl",{"_index":166,"title":{"32":{"position":[[16,8]]}},"content":{"9":{"position":[[28,8]]},"12":{"position":[[389,8]]},"40":{"position":[[274,8]]},"41":{"position":[[407,8]]},"51":{"position":[[112,8],[209,8]]},"52":{"position":[[194,7]]},"54":{"position":[[221,8]]},"57":{"position":[[696,8],[2791,8],[4706,7],[5999,8]]},"58":{"position":[[2020,8],[3782,7]]},"59":{"position":[[102,8],[187,8],[1111,8],[1437,8],[1752,8],[2123,8],[2286,7],[2799,8],[3046,8]]},"63":{"position":[[5,7]]}},"keywords":{}}],["except",{"_index":416,"title":{},"content":{"19":{"position":[[833,11]]}},"keywords":{}}],["excepturi",{"_index":720,"title":{},"content":{"36":{"position":[[386,9]]}},"keywords":{}}],["exclud",{"_index":1118,"title":{},"content":{"60":{"position":[[661,7]]}},"keywords":{}}],["execut",{"_index":128,"title":{},"content":{"7":{"position":[[188,8]]},"57":{"position":[[6098,9]]}},"keywords":{}}],["exhaust",{"_index":1012,"title":{},"content":{"57":{"position":[[6457,7]]}},"keywords":{}}],["exist",{"_index":853,"title":{},"content":{"48":{"position":[[1539,8]]}},"keywords":{}}],["expand",{"_index":909,"title":{},"content":{"57":{"position":[[401,6]]}},"keywords":{}}],["expans",{"_index":549,"title":{},"content":{"25":{"position":[[525,9]]}},"keywords":{}}],["expect",{"_index":1068,"title":{},"content":{"58":{"position":[[4019,8]]}},"keywords":{}}],["expens",{"_index":494,"title":{},"content":{"23":{"position":[[467,9]]},"57":{"position":[[5517,7]]}},"keywords":{}}],["experi",{"_index":311,"title":{},"content":{"13":{"position":[[565,11]]},"17":{"position":[[706,11]]},"25":{"position":[[72,11]]},"30":{"position":[[883,11]]},"35":{"position":[[949,11]]}},"keywords":{}}],["expertis",{"_index":408,"title":{},"content":{"19":{"position":[[523,10]]}},"keywords":{}}],["explain",{"_index":910,"title":{},"content":{"57":{"position":[[494,9]]},"58":{"position":[[356,9]]}},"keywords":{}}],["explicitli",{"_index":1002,"title":{},"content":{"57":{"position":[[5820,10]]},"58":{"position":[[4186,10]]}},"keywords":{}}],["export",{"_index":138,"title":{},"content":{"7":{"position":[[410,6]]}},"keywords":{}}],["expos",{"_index":156,"title":{},"content":{"8":{"position":[[623,7]]},"22":{"position":[[196,7]]},"57":{"position":[[2092,8],[3276,7]]}},"keywords":{}}],["exposur",{"_index":842,"title":{},"content":{"48":{"position":[[1176,8]]},"57":{"position":[[2197,9]]}},"keywords":{}}],["extend",{"_index":132,"title":{},"content":{"7":{"position":[[330,6]]},"9":{"position":[[796,6]]}},"keywords":{}}],["extern",{"_index":960,"title":{},"content":{"57":{"position":[[3133,8]]}},"keywords":{}}],["externaldata",{"_index":950,"title":{},"content":{"57":{"position":[[2621,13],[2962,12]]}},"keywords":{}}],["extract",{"_index":62,"title":{},"content":{"3":{"position":[[199,9]]},"53":{"position":[[481,10]]},"63":{"position":[[1500,7]]}},"keywords":{}}],["facad",{"_index":518,"title":{},"content":{"24":{"position":[[675,7]]}},"keywords":{}}],["facer",{"_index":717,"title":{},"content":{"36":{"position":[[350,6]]}},"keywords":{}}],["failur",{"_index":392,"title":{},"content":{"19":{"position":[[86,8],[625,8]]}},"keywords":{}}],["fake",{"_index":175,"title":{},"content":{"9":{"position":[[171,4]]}},"keywords":{}}],["fals",{"_index":78,"title":{},"content":{"3":{"position":[[455,5]]},"39":{"position":[[70,5]]},"40":{"position":[[93,5]]},"57":{"position":[[1245,5],[3781,6],[4655,6],[4753,6],[5335,6]]},"58":{"position":[[1484,6],[5114,6],[5155,6]]}},"keywords":{}}],["familiar",{"_index":645,"title":{},"content":{"31":{"position":[[331,12]]}},"keywords":{}}],["fast",{"_index":369,"title":{},"content":{"17":{"position":[[779,4]]}},"keywords":{}}],["façad",{"_index":260,"title":{},"content":{"12":{"position":[[230,6]]}},"keywords":{}}],["featur",{"_index":25,"title":{},"content":{"1":{"position":[[39,9]]},"3":{"position":[[20,8]]},"22":{"position":[[87,7]]},"28":{"position":[[28,7],[100,7]]},"34":{"position":[[247,8]]},"48":{"position":[[763,7],[1105,7],[1206,7]]},"57":{"position":[[1784,7],[3498,7]]},"58":{"position":[[5094,7]]}},"keywords":{}}],["feel",{"_index":856,"title":{},"content":{"48":{"position":[[1676,4]]}},"keywords":{}}],["fervent",{"_index":552,"title":{},"content":{"25":{"position":[[656,9]]}},"keywords":{}}],["fetch",{"_index":127,"title":{"29":{"position":[[0,8]]},"30":{"position":[[0,8]]}},"content":{"7":{"position":[[176,7]]},"8":{"position":[[299,7]]},"13":{"position":[[92,8],[234,8]]},"28":{"position":[[117,8]]},"29":{"position":[[115,7]]},"32":{"position":[[465,5],[651,5]]},"33":{"position":[[738,5]]},"53":{"position":[[680,5]]},"55":{"position":[[309,5]]},"57":{"position":[[2940,7],[3538,5]]},"58":{"position":[[5059,8]]},"59":{"position":[[1123,5]]},"61":{"position":[[52,5],[1132,5],[1756,8]]},"63":{"position":[[751,8],[1099,5],[1598,5]]}},"keywords":{}}],["few",{"_index":212,"title":{},"content":{"9":{"position":[[1121,3]]},"17":{"position":[[1091,3]]}},"keywords":{}}],["field",{"_index":196,"title":{},"content":{"9":{"position":[[693,6],[832,5],[985,6]]},"29":{"position":[[185,5]]},"36":{"position":[[704,7]]},"52":{"position":[[243,5]]},"53":{"position":[[530,6]]},"57":{"position":[[3667,7]]},"59":{"position":[[49,5],[236,5],[286,5],[538,5]]},"60":{"position":[[86,5],[191,5],[308,5],[376,5],[541,5],[671,5],[941,5]]},"61":{"position":[[98,5],[685,5],[763,6],[803,5],[1201,7],[1223,6],[1393,5]]},"62":{"position":[[332,6],[405,6]]},"63":{"position":[[271,6],[323,6],[592,6],[722,6],[866,5],[907,5],[959,5]]}},"keywords":{}}],["file",{"_index":54,"title":{},"content":{"3":{"position":[[81,5]]},"7":{"position":[[245,5]]},"9":{"position":[[345,4],[1080,4],[1108,5],[1267,5]]},"26":{"position":[[108,4]]},"32":{"position":[[26,4]]},"33":{"position":[[101,5]]},"40":{"position":[[202,6],[222,4]]},"41":{"position":[[335,6],[355,4]]},"42":{"position":[[92,5],[114,4],[188,4],[252,4]]}},"keywords":{}}],["filenam",{"_index":63,"title":{},"content":{"3":{"position":[[214,10]]}},"keywords":{}}],["fill",{"_index":516,"title":{},"content":{"24":{"position":[[622,6]]}},"keywords":{}}],["final",{"_index":809,"title":{},"content":{"46":{"position":[[1238,5]]},"58":{"position":[[2409,5]]}},"keywords":{}}],["find",{"_index":84,"title":{},"content":{"5":{"position":[[52,4]]},"6":{"position":[[54,4]]}},"keywords":{}}],["first",{"_index":0,"title":{"0":{"position":[[0,5]]}},"content":{"9":{"position":[[22,5]]},"12":{"position":[[669,5]]},"22":{"position":[[430,5]]},"23":{"position":[[148,6]]},"29":{"position":[[0,6]]},"30":{"position":[[195,5]]},"48":{"position":[[1093,5]]},"58":{"position":[[2174,5]]},"61":{"position":[[1451,5]]}},"keywords":{}}],["firstus",{"_index":1143,"title":{},"content":{"61":{"position":[[1555,10]]}},"keywords":{}}],["fix",{"_index":546,"title":{},"content":{"25":{"position":[[493,4]]}},"keywords":{}}],["flag",{"_index":100,"title":{},"content":{"5":{"position":[[265,4]]},"39":{"position":[[5,4]]}},"keywords":{}}],["flaki",{"_index":303,"title":{},"content":{"13":{"position":[[392,5],[500,5]]}},"keywords":{}}],["flatten",{"_index":1122,"title":{},"content":{"61":{"position":[[85,10]]}},"keywords":{}}],["fledg",{"_index":460,"title":{},"content":{"21":{"position":[[305,7]]}},"keywords":{}}],["flexibl",{"_index":370,"title":{},"content":{"17":{"position":[[882,11]]},"60":{"position":[[45,11]]}},"keywords":{}}],["flow",{"_index":1062,"title":{},"content":{"58":{"position":[[3647,5]]}},"keywords":{}}],["fold",{"_index":802,"title":{},"content":{"46":{"position":[[1041,8]]}},"keywords":{}}],["folder",{"_index":55,"title":{},"content":{"3":{"position":[[91,8],[295,6]]}},"keywords":{}}],["follow",{"_index":89,"title":{},"content":{"5":{"position":[[112,9]]},"6":{"position":[[137,9]]},"7":{"position":[[0,6]]},"8":{"position":[[45,6],[216,9],[424,9]]},"9":{"position":[[395,9]]},"12":{"position":[[660,8],[720,9],[967,9]]},"19":{"position":[[146,6],[570,9]]},"26":{"position":[[20,9],[226,9]]},"34":{"position":[[322,8]]},"36":{"position":[[19,9],[173,10]]},"38":{"position":[[129,6]]},"41":{"position":[[222,9]]},"48":{"position":[[816,10]]},"50":{"position":[[226,9]]}},"keywords":{}}],["foolproof",{"_index":545,"title":{},"content":{"25":{"position":[[483,9]]}},"keywords":{}}],["forc",{"_index":99,"title":{},"content":{"5":{"position":[[259,5]]}},"keywords":{}}],["format",{"_index":739,"title":{},"content":{"38":{"position":[[141,7]]},"48":{"position":[[388,11]]}},"keywords":{}}],["forward",{"_index":1060,"title":{},"content":{"58":{"position":[[3416,9],[3532,9],[3929,7]]}},"keywords":{}}],["found",{"_index":666,"title":{},"content":{"33":{"position":[[152,6],[419,6]]}},"keywords":{}}],["fragil",{"_index":390,"title":{"19":{"position":[[3,8]]}},"content":{"19":{"position":[[59,7],[604,7]]}},"keywords":{}}],["free",{"_index":173,"title":{},"content":{"9":{"position":[[140,4]]},"48":{"position":[[1681,4]]},"58":{"position":[[4689,4]]}},"keywords":{}}],["frequent",{"_index":467,"title":{},"content":{"22":{"position":[[168,8]]}},"keywords":{}}],["friction",{"_index":525,"title":{"25":{"position":[[18,9]]}},"content":{"25":{"position":[[121,9]]}},"keywords":{}}],["frontend",{"_index":350,"title":{"17":{"position":[[12,8]]}},"content":{"17":{"position":[[140,8],[406,8],[478,8]]},"18":{"position":[[328,8]]},"24":{"position":[[695,8]]},"25":{"position":[[17,8],[348,8],[432,8],[555,8]]}},"keywords":{}}],["full",{"_index":459,"title":{},"content":{"21":{"position":[[300,4]]},"26":{"position":[[67,4]]}},"keywords":{}}],["function",{"_index":257,"title":{},"content":{"12":{"position":[[94,14]]},"17":{"position":[[1027,13]]},"48":{"position":[[443,8]]}},"keywords":{}}],["fusc",{"_index":15,"title":{},"content":{"0":{"position":[[101,5]]},"2":{"position":[[227,5],[406,5],[585,5],[764,5],[943,5],[1122,5],[1301,5],[1480,5],[1659,5],[1838,5],[2017,5],[2196,5],[2375,5],[2554,5],[2733,5],[2912,5]]}},"keywords":{}}],["fusion",{"_index":558,"title":{},"content":{"25":{"position":[[754,6]]}},"keywords":{}}],["g",{"_index":92,"title":{},"content":{"5":{"position":[[155,1]]}},"keywords":{}}],["gap",{"_index":513,"title":{},"content":{"24":{"position":[[589,3]]}},"keywords":{}}],["gateway",{"_index":234,"title":{"24":{"position":[[10,8]]}},"content":{"11":{"position":[[138,8],[154,7],[385,7],[577,7]]},"18":{"position":[[160,8]]},"24":{"position":[[82,7],[211,8],[267,7],[565,8]]}},"keywords":{}}],["gener",{"_index":487,"title":{},"content":{"23":{"position":[[108,10]]},"30":{"position":[[431,9]]},"35":{"position":[[218,8]]},"46":{"position":[[1120,9],[1313,10]]},"59":{"position":[[3799,8]]}},"keywords":{}}],["get",{"_index":456,"title":{},"content":{"21":{"position":[[258,4]]}},"keywords":{}}],["ghcr.io/tailcallhq/tailcall/tc",{"_index":147,"title":{},"content":{"8":{"position":[[247,30],[480,30]]}},"keywords":{}}],["given",{"_index":1005,"title":{},"content":{"57":{"position":[[5993,5]]},"63":{"position":[[196,5]]}},"keywords":{}}],["global",{"_index":890,"title":{},"content":{"54":{"position":[[16,6]]}},"keywords":{}}],["globalresponsetimeout",{"_index":995,"title":{},"content":{"57":{"position":[[5534,22],[5561,21],[6012,21]]}},"keywords":{}}],["go",{"_index":167,"title":{},"content":{"9":{"position":[[44,5]]},"19":{"position":[[721,5]]},"20":{"position":[[245,2]]},"23":{"position":[[140,2]]},"59":{"position":[[862,5]]}},"keywords":{}}],["goe",{"_index":435,"title":{},"content":{"20":{"position":[[400,4]]}},"keywords":{}}],["good",{"_index":1074,"title":{},"content":{"58":{"position":[[4723,5]]}},"keywords":{}}],["govern",{"_index":965,"title":{},"content":{"57":{"position":[[3401,7]]}},"keywords":{}}],["graham"",{"_index":712,"title":{},"content":{"36":{"position":[[279,13]]}},"keywords":{}}],["grant",{"_index":933,"title":{},"content":{"57":{"position":[[1625,5]]}},"keywords":{}}],["graphiql",{"_index":931,"title":{},"content":{"57":{"position":[[1427,8],[1473,8],[1610,10],[1735,8],[1953,8]]}},"keywords":{}}],["graphql",{"_index":157,"title":{},"content":{"8":{"position":[[637,7]]},"9":{"position":[[63,7],[320,7],[1099,8],[1201,7],[1240,7]]},"31":{"position":[[81,7]]},"32":{"position":[[17,8]]},"33":{"position":[[93,7]]},"34":{"position":[[221,8],[304,7]]},"41":{"position":[[61,7],[136,7]]},"42":{"position":[[77,7]]},"50":{"position":[[23,7]]},"57":{"position":[[1520,7],[2101,7],[3509,8],[4276,7]]},"59":{"position":[[439,7],[2100,7]]},"60":{"position":[[24,7],[114,7],[215,7],[515,7],[697,7],[921,7]]},"63":{"position":[[55,8],[1583,7],[1817,7]]}},"keywords":{}}],["green",{"_index":473,"title":{},"content":{"22":{"position":[[339,5]]}},"keywords":{}}],["group",{"_index":680,"title":{},"content":{"34":{"position":[[38,5]]},"59":{"position":[[3421,6]]}},"keywords":{}}],["groupbi",{"_index":690,"title":{},"content":{"34":{"position":[[505,8]]},"35":{"position":[[94,8],[438,8]]},"59":{"position":[[3390,8],[3403,7],[3665,8]]}},"keywords":{}}],["grpc",{"_index":365,"title":{},"content":{"17":{"position":[[577,5]]}},"keywords":{}}],["gt",{"_index":35,"title":{},"content":{"1":{"position":[[146,5]]},"2":{"position":[[71,4]]}},"keywords":{}}],["guid",{"_index":648,"title":{},"content":{"31":{"position":[[447,6]]},"59":{"position":[[3511,6]]}},"keywords":{}}],["hand",{"_index":378,"title":{},"content":{"18":{"position":[[127,4]]}},"keywords":{}}],["handi",{"_index":945,"title":{},"content":{"57":{"position":[[2356,5]]}},"keywords":{}}],["handl",{"_index":323,"title":{},"content":{"14":{"position":[[255,6]]},"16":{"position":[[127,6]]},"19":{"position":[[172,6]]},"35":{"position":[[867,7]]},"44":{"position":[[758,9]]}},"keywords":{}}],["handwritten",{"_index":447,"title":{},"content":{"21":{"position":[[122,11]]}},"keywords":{}}],["happen",{"_index":465,"title":{},"content":{"22":{"position":[[18,7]]}},"keywords":{}}],["hard",{"_index":450,"title":{},"content":{"21":{"position":[[156,4]]}},"keywords":{}}],["harder",{"_index":454,"title":{},"content":{"21":{"position":[[211,6]]}},"keywords":{}}],["hardwar",{"_index":301,"title":{},"content":{"13":{"position":[[359,8],[487,8]]}},"keywords":{}}],["hash",{"_index":806,"title":{"48":{"position":[[0,4]]}},"content":{"46":{"position":[[1112,4]]},"47":{"position":[[58,4],[114,4]]},"48":{"position":[[12,4],[355,4],[492,5],[502,5],[635,4]]}},"keywords":{}}],["have",{"_index":219,"title":{},"content":{"9":{"position":[[1281,6]]},"17":{"position":[[675,6]]}},"keywords":{}}],["haven't",{"_index":646,"title":{},"content":{"31":{"position":[[397,7]]}},"keywords":{}}],["header",{"_index":871,"title":{"55":{"position":[[0,8]]}},"content":{"50":{"position":[[367,8]]},"55":{"position":[[14,7],[215,6]]},"57":{"position":[[1066,7],[1117,7],[1262,6],[2684,8],[3029,6]]},"58":{"position":[[3127,6],[3388,7],[3516,7],[3865,8],[3916,7],[4028,7],[5360,7],[5386,7],[5475,8]]},"59":{"position":[[2431,8],[2444,7],[2490,7],[2590,6],[2719,8],[2860,6],[2970,8],[3129,8]]}},"keywords":{}}],["header'",{"_index":1111,"title":{},"content":{"59":{"position":[[3297,8]]}},"keywords":{}}],["headers.userid",{"_index":897,"title":{},"content":{"55":{"position":[[188,14]]}},"keywords":{}}],["hear",{"_index":861,"title":{},"content":{"48":{"position":[[1746,4]]}},"keywords":{}}],["help",{"_index":353,"title":{},"content":{"17":{"position":[[16,4],[243,4]]},"31":{"position":[[50,7],[504,4]]},"57":{"position":[[149,5]]},"60":{"position":[[291,7]]},"61":{"position":[[1710,5]]}},"keywords":{}}],["here",{"_index":86,"title":{},"content":{"5":{"position":[[74,5]]},"6":{"position":[[76,5]]},"8":{"position":[[162,5]]},"9":{"position":[[1307,4]]},"32":{"position":[[0,4]]},"35":{"position":[[182,5]]},"55":{"position":[[182,5]]},"59":{"position":[[3763,5]]}},"keywords":{}}],["here'",{"_index":595,"title":{},"content":{"28":{"position":[[179,6]]},"60":{"position":[[130,6]]}},"keywords":{}}],["hidden",{"_index":1120,"title":{},"content":{"60":{"position":[[813,6]]}},"keywords":{}}],["high",{"_index":437,"title":{"44":{"position":[[0,4]]}},"content":{"20":{"position":[[434,4]]},"30":{"position":[[954,4]]}},"keywords":{}}],["higher",{"_index":619,"title":{},"content":{"30":{"position":[[842,6]]}},"keywords":{}}],["highli",{"_index":374,"title":{"18":{"position":[[3,6]]}},"content":{"18":{"position":[[61,6]]}},"keywords":{}}],["hinder",{"_index":531,"title":{},"content":{"25":{"position":[[178,6]]}},"keywords":{}}],["hold",{"_index":889,"title":{},"content":{"53":{"position":[[598,5]]}},"keywords":{}}],["homebrew",{"_index":106,"title":{"6":{"position":[[0,9]]}},"content":{"6":{"position":[[26,8],[113,8]]},"8":{"position":[[597,8]]}},"keywords":{}}],["hope",{"_index":854,"title":{},"content":{"48":{"position":[[1607,4]]}},"keywords":{}}],["host",{"_index":779,"title":{},"content":{"45":{"position":[[157,4]]},"57":{"position":[[1449,6]]},"58":{"position":[[698,5]]}},"keywords":{}}],["howell"",{"_index":724,"title":{},"content":{"36":{"position":[[485,13]]}},"keywords":{}}],["http",{"_index":188,"title":{"59":{"position":[[0,6]]}},"content":{"9":{"position":[[452,4],[585,4],[1155,5]]},"34":{"position":[[267,5],[405,6]]},"35":{"position":[[58,5]]},"57":{"position":[[3043,4],[5078,4]]},"58":{"position":[[3154,4],[3383,4],[4244,5],[4312,5],[4596,5],[4910,4],[4976,4],[5381,4]]},"59":{"position":[[5,5],[200,5],[1300,4],[2505,4],[2530,5],[2855,4]]},"63":{"position":[[1083,4],[1622,4]]}},"keywords":{}}],["http(baseurl",{"_index":891,"title":{},"content":{"54":{"position":[[130,14]]}},"keywords":{}}],["http(method",{"_index":1099,"title":{},"content":{"59":{"position":[[1498,13],[2184,13]]}},"keywords":{}}],["http(path",{"_index":194,"title":{},"content":{"9":{"position":[[629,11],[902,11]]},"32":{"position":[[175,11],[383,11]]},"51":{"position":[[154,11]]},"52":{"position":[[130,11]]},"53":{"position":[[72,11],[180,11]]},"55":{"position":[[119,11]]},"57":{"position":[[2640,11]]},"59":{"position":[[144,11],[723,11],[968,11],[1226,11],[1801,11],[2687,11],[3097,11],[3564,11]]},"61":{"position":[[1639,11]]},"63":{"position":[[475,11],[987,11]]}},"keywords":{}}],["http://0.0.0.0:8000",{"_index":577,"title":{},"content":{"26":{"position":[[297,19]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com",{"_index":1070,"title":{},"content":{"58":{"position":[[4531,36]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com)bad",{"_index":1075,"title":{},"content":{"58":{"position":[[4748,40]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com/api",{"_index":1076,"title":{},"content":{"58":{"position":[[4808,40]]}},"keywords":{}}],["http://localhost:8000/graphiql",{"_index":934,"title":{},"content":{"57":{"position":[[1686,31]]}},"keywords":{}}],["http://localhost:8090",{"_index":914,"title":{},"content":{"57":{"position":[[781,22]]}},"keywords":{}}],["https://cloud.tailcall.com/graphql/d5fb012",{"_index":817,"title":{},"content":{"47":{"position":[[175,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com",{"_index":172,"title":{},"content":{"9":{"position":[[100,37]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/post",{"_index":597,"title":{},"content":{"29":{"position":[[53,42]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/us",{"_index":1090,"title":{},"content":{"59":{"position":[[481,42],[890,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/users/1",{"_index":600,"title":{},"content":{"30":{"position":[[115,44]]}},"keywords":{}}],["https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh",{"_index":123,"title":{},"content":{"7":{"position":[[77,71]]}},"keywords":{}}],["hundr",{"_index":616,"title":{},"content":{"30":{"position":[[723,8]]}},"keywords":{}}],["i.",{"_index":1168,"title":{},"content":{"63":{"position":[[1141,6]]}},"keywords":{}}],["id",{"_index":198,"title":{},"content":{"9":{"position":[[738,3],[863,2],[1030,3]]},"12":{"position":[[752,3],[756,3],[797,3],[829,3],[999,3],[1003,3],[1253,3],[1257,3]]},"32":{"position":[[221,3],[321,3]]},"34":{"position":[[343,3]]},"35":{"position":[[248,2],[574,2]]},"36":{"position":[[114,2]]},"51":{"position":[[143,5],[248,2]]},"52":{"position":[[73,3],[77,3],[240,2]]},"53":{"position":[[118,3]]},"57":{"position":[[1528,3],[1646,3]]},"59":{"position":[[133,5],[712,5],[957,5],[1215,5],[1788,5],[3530,3],[3829,2]]},"60":{"position":[[429,3],[863,3],[938,2]]},"61":{"position":[[339,3],[374,3]]},"63":{"position":[[278,2],[359,3],[1339,3]]}},"keywords":{}}],["identifi",{"_index":634,"title":{},"content":{"31":{"position":[[58,8]]},"32":{"position":[[710,8]]},"33":{"position":[[55,11]]},"46":{"position":[[280,8]]},"48":{"position":[[675,10]]}},"keywords":{}}],["idin",{"_index":1116,"title":{},"content":{"60":{"position":[[565,4]]}},"keywords":{}}],["idl",{"_index":1023,"title":{},"content":{"58":{"position":[[460,4],[653,4],[1441,5]]}},"keywords":{}}],["ignor",{"_index":1067,"title":{},"content":{"58":{"position":[[3989,8]]}},"keywords":{}}],["illustr",{"_index":596,"title":{},"content":{"28":{"position":[[189,12]]},"33":{"position":[[648,11]]},"58":{"position":[[2213,11]]},"63":{"position":[[13,11]]}},"keywords":{}}],["imag",{"_index":72,"title":{},"content":{"3":{"position":[[343,7]]},"8":{"position":[[200,5],[349,5]]}},"keywords":{}}],["immut",{"_index":845,"title":{},"content":{"48":{"position":[[1258,10]]}},"keywords":{}}],["impact",{"_index":367,"title":{},"content":{"17":{"position":[[691,6]]},"20":{"position":[[114,6]]},"30":{"position":[[979,9]]}},"keywords":{}}],["implement",{"_index":344,"title":{},"content":{"16":{"position":[[404,9]]},"18":{"position":[[253,14]]},"24":{"position":[[24,12]]},"28":{"position":[[233,12]]},"50":{"position":[[31,16]]}},"keywords":{}}],["impli",{"_index":957,"title":{},"content":{"57":{"position":[[2909,7]]}},"keywords":{}}],["import",{"_index":477,"title":{},"content":{"22":{"position":[[480,9]]},"48":{"position":[[734,9]]},"63":{"position":[[1647,9]]}},"keywords":{}}],["improv",{"_index":359,"title":{},"content":{"17":{"position":[[251,7],[611,7],[795,7]]},"57":{"position":[[4979,8],[5482,13]]},"58":{"position":[[5010,7]]}},"keywords":{}}],["includ",{"_index":136,"title":{},"content":{"7":{"position":[[371,7]]},"19":{"position":[[350,9]]},"25":{"position":[[144,7]]},"29":{"position":[[167,8]]},"32":{"position":[[503,9]]},"44":{"position":[[336,9]]},"45":{"position":[[319,9]]},"46":{"position":[[1022,9]]},"57":{"position":[[2988,8]]},"58":{"position":[[101,8],[5251,9],[5400,8]]},"59":{"position":[[1351,7],[2401,8],[2833,7]]},"60":{"position":[[961,8]]},"61":{"position":[[713,8]]}},"keywords":{}}],["incom",{"_index":980,"title":{},"content":{"57":{"position":[[4267,8],[4795,8]]},"58":{"position":[[3507,8]]}},"keywords":{}}],["incompat",{"_index":532,"title":{},"content":{"25":{"position":[[198,12]]}},"keywords":{}}],["incorpor",{"_index":693,"title":{},"content":{"35":{"position":[[78,11]]}},"keywords":{}}],["increas",{"_index":313,"title":{"14":{"position":[[3,9]]},"16":{"position":[[3,9]]}},"content":{"14":{"position":[[171,9]]},"15":{"position":[[107,9]]},"16":{"position":[[65,9]]},"46":{"position":[[710,9]]}},"keywords":{}}],["independ",{"_index":485,"title":{},"content":{"23":{"position":[[29,13]]},"48":{"position":[[1470,14]]}},"keywords":{}}],["index",{"_index":1141,"title":{},"content":{"61":{"position":[[1323,9],[1367,5]]}},"keywords":{}}],["indic",{"_index":598,"title":{},"content":{"29":{"position":[[191,10]]},"59":{"position":[[33,10]]},"61":{"position":[[739,10]]}},"keywords":{}}],["ineffici",{"_index":423,"title":{},"content":{"20":{"position":[[184,11]]},"25":{"position":[[282,15]]}},"keywords":{}}],["infer",{"_index":991,"title":{},"content":{"57":{"position":[[5054,5]]}},"keywords":{}}],["info",{"_index":262,"title":{},"content":{"12":{"position":[[262,4]]},"13":{"position":[[475,4]]},"17":{"position":[[584,4]]},"24":{"position":[[645,4]]},"30":{"position":[[602,4]]},"46":{"position":[[369,4]]},"63":{"position":[[1636,4]]}},"keywords":{}}],["inform",{"_index":273,"title":{},"content":{"12":{"position":[[499,11],[945,12],[1157,12]]},"16":{"position":[[144,12]]},"26":{"position":[[390,12]]},"44":{"position":[[323,12],[628,11]]},"53":{"position":[[397,11]]},"57":{"position":[[2435,11],[3222,11],[3544,11],[5107,11]]}},"keywords":{}}],["infrastructur",{"_index":461,"title":{},"content":{"21":{"position":[[332,15]]},"22":{"position":[[383,14]]}},"keywords":{}}],["infrastructure.canari",{"_index":841,"title":{},"content":{"48":{"position":[[1046,21]]}},"keywords":{}}],["init",{"_index":753,"title":{"42":{"position":[[0,5]]}},"content":{"42":{"position":[[4,4],[128,4]]}},"keywords":{}}],["initi",{"_index":607,"title":{},"content":{"30":{"position":[[411,7]]},"35":{"position":[[779,7]]},"58":{"position":[[2326,9]]},"63":{"position":[[309,9]]}},"keywords":{}}],["inlin",{"_index":803,"title":{"61":{"position":[[0,8]]}},"content":{"46":{"position":[[1050,9]]},"61":{"position":[[4,7],[71,10],[620,7],[815,8],[1147,7],[1306,7],[1379,8],[1440,6],[1693,7]]},"63":{"position":[[853,7]]}},"keywords":{}}],["inline(path",{"_index":1130,"title":{},"content":{"61":{"position":[[538,13],[1571,13]]},"63":{"position":[[405,13],[603,13]]}},"keywords":{}}],["input",{"_index":770,"title":{},"content":{"44":{"position":[[386,5]]},"59":{"position":[[2366,5]]}},"keywords":{}}],["insid",{"_index":1170,"title":{},"content":{"63":{"position":[[1482,6]]}},"keywords":{}}],["instal",{"_index":80,"title":{"4":{"position":[[0,12]]}},"content":{"5":{"position":[[33,10],[80,7],[201,9],[281,14],[315,12]]},"6":{"position":[[35,10],[207,7],[248,9],[288,12]]},"7":{"position":[[35,7],[210,12],[235,9],[316,13]]},"8":{"position":[[15,7],[103,9],[606,13],[682,12],[794,9]]},"31":{"position":[[434,12]]}},"keywords":{}}],["instanc",{"_index":608,"title":{},"content":{"30":{"position":[[475,9]]},"52":{"position":[[51,9]]},"59":{"position":[[881,8],[2625,9]]},"60":{"position":[[407,9],[841,9]]},"61":{"position":[[274,9]]}},"keywords":{}}],["instead",{"_index":349,"title":{},"content":{"16":{"position":[[523,8]]},"48":{"position":[[126,8]]},"63":{"position":[[889,7]]}},"keywords":{}}],["instruct",{"_index":85,"title":{},"content":{"5":{"position":[[61,12]]},"6":{"position":[[63,12]]},"35":{"position":[[204,10],[480,9]]},"57":{"position":[[1021,9]]},"59":{"position":[[3785,10]]},"63":{"position":[[1050,8],[1574,8]]}},"keywords":{}}],["instrument",{"_index":959,"title":{},"content":{"57":{"position":[[3098,12],[3595,12]]}},"keywords":{}}],["int",{"_index":199,"title":{},"content":{"9":{"position":[[742,4],[1034,4]]},"32":{"position":[[225,4],[325,4],[338,4]]},"34":{"position":[[347,4],[360,4]]},"53":{"position":[[122,4],[135,4]]},"59":{"position":[[3534,4]]},"60":{"position":[[433,4],[867,4]]},"61":{"position":[[343,4],[378,4],[526,5],[918,5]]},"62":{"position":[[212,3]]},"63":{"position":[[363,3],[526,4],[1343,3],[1399,4]]}},"keywords":{}}],["integr",{"_index":405,"title":{},"content":{"19":{"position":[[399,11]]},"46":{"position":[[960,9],[1346,12]]},"48":{"position":[[1595,10]]}},"keywords":{}}],["intend",{"_index":1039,"title":{},"content":{"58":{"position":[[1715,8]]}},"keywords":{}}],["intensifi",{"_index":614,"title":{},"content":{"30":{"position":[[682,12]]}},"keywords":{}}],["interact",{"_index":32,"title":{},"content":{"1":{"position":[[99,11]]},"57":{"position":[[1497,11]]}},"keywords":{}}],["interest",{"_index":490,"title":{},"content":{"23":{"position":[[281,11]]}},"keywords":{}}],["interfac",{"_index":316,"title":{},"content":{"14":{"position":[[21,10]]},"17":{"position":[[535,10]]},"50":{"position":[[247,10],[258,9]]},"57":{"position":[[1436,9],[1962,9]]}},"keywords":{}}],["intermediari",{"_index":1038,"title":{},"content":{"58":{"position":[[1622,12]]}},"keywords":{}}],["intern",{"_index":702,"title":{},"content":{"35":{"position":[[545,11]]}},"keywords":{}}],["interv",{"_index":1016,"title":{},"content":{"58":{"position":[[156,10]]}},"keywords":{}}],["intric",{"_index":555,"title":{},"content":{"25":{"position":[[718,9]]}},"keywords":{}}],["intricaci",{"_index":561,"title":{},"content":{"25":{"position":[[802,12]]}},"keywords":{}}],["intrins",{"_index":969,"title":{},"content":{"57":{"position":[[3488,9]]}},"keywords":{}}],["introduc",{"_index":512,"title":{},"content":{"24":{"position":[[577,9]]},"25":{"position":[[84,10]]},"35":{"position":[[22,9]]},"58":{"position":[[1765,9]]}},"keywords":{}}],["introspect",{"_index":967,"title":{},"content":{"57":{"position":[[3417,13],[3468,13],[3838,13],[3982,13]]}},"keywords":{}}],["invalid",{"_index":789,"title":{},"content":{"46":{"position":[[197,7]]},"57":{"position":[[4403,7]]}},"keywords":{}}],["involv",{"_index":591,"title":{},"content":{"28":{"position":[[41,8]]},"30":{"position":[[1112,9]]}},"keywords":{}}],["ipsum",{"_index":4,"title":{},"content":{"0":{"position":[[6,5],[115,5],[158,5]]},"2":{"position":[[132,5],[241,5],[284,5],[311,5],[420,5],[463,5],[490,5],[599,5],[642,5],[669,5],[778,5],[821,5],[848,5],[957,5],[1000,5],[1027,5],[1136,5],[1179,5],[1206,5],[1315,5],[1358,5],[1385,5],[1494,5],[1537,5],[1564,5],[1673,5],[1716,5],[1743,5],[1852,5],[1895,5],[1922,5],[2031,5],[2074,5],[2101,5],[2210,5],[2253,5],[2280,5],[2389,5],[2432,5],[2459,5],[2568,5],[2611,5],[2638,5],[2747,5],[2790,5],[2817,5],[2926,5],[2969,5]]}},"keywords":{}}],["isn't",{"_index":823,"title":{},"content":{"48":{"position":[[51,5]]},"58":{"position":[[3487,5]]}},"keywords":{}}],["issu",{"_index":400,"title":{},"content":{"19":{"position":[[284,7]]},"20":{"position":[[145,6]]},"25":{"position":[[137,6],[694,6]]},"30":{"position":[[396,5],[1163,5]]},"31":{"position":[[71,6],[228,6]]},"32":{"position":[[724,5]]},"33":{"position":[[81,6],[250,6],[293,7]]},"34":{"position":[[200,5]]},"38":{"position":[[95,7]]},"39":{"position":[[40,7]]}},"keywords":{}}],["it'",{"_index":283,"title":{},"content":{"12":{"position":[[824,4]]},"19":{"position":[[640,4]]},"24":{"position":[[230,4],[531,4]]},"25":{"position":[[472,4]]},"30":{"position":[[1022,4]]},"53":{"position":[[476,4]]},"57":{"position":[[1764,4],[2008,4],[3907,4],[5662,4],[6193,4]]},"58":{"position":[[4177,4]]},"59":{"position":[[1936,4]]}},"keywords":{}}],["json",{"_index":593,"title":{},"content":{"28":{"position":[[74,4]]},"30":{"position":[[360,4]]},"50":{"position":[[315,4]]},"59":{"position":[[2392,4]]}},"keywords":{}}],["json>",{"_index":868,"title":{},"content":{"50":{"position":[[299,8]]}},"keywords":{}}],["jsonplacehold",{"_index":652,"title":{"32":{"position":[[0,15]]}},"content":{},"keywords":{}}],["jsonplaceholder.graphql",{"_index":182,"title":{},"content":{"9":{"position":[[357,23]]},"26":{"position":[[84,23],[146,25]]},"33":{"position":[[116,25],[362,25]]}},"keywords":{}}],["keep",{"_index":1014,"title":{},"content":{"58":{"position":[[145,4],[892,4],[1153,4],[1382,4],[2919,4]]},"60":{"position":[[795,4]]}},"keywords":{}}],["keepaliveinterv",{"_index":1030,"title":{},"content":{"58":{"position":[[840,18]]}},"keywords":{}}],["keepalivetimeout",{"_index":1033,"title":{},"content":{"58":{"position":[[1079,17]]}},"keywords":{}}],["keepalivewhileidl",{"_index":1035,"title":{},"content":{"58":{"position":[[1322,19]]}},"keywords":{}}],["key",{"_index":335,"title":{},"content":{"16":{"position":[[169,4]]},"31":{"position":[[528,3]]},"34":{"position":[[444,6]]},"35":{"position":[[120,6],[591,4]]},"53":{"position":[[219,6],[664,3]]},"57":{"position":[[2507,5],[2693,6]]},"58":{"position":[[3861,3]]},"59":{"position":[[1840,6],[2573,3],[2728,6],[3138,6],[3197,5],[3603,6],[3702,5]]}},"keywords":{}}],["key"",{"_index":1065,"title":{},"content":{"58":{"position":[[3726,11]]}},"keywords":{}}],["kind",{"_index":492,"title":{},"content":{"23":{"position":[[422,4]]}},"keywords":{}}],["known",{"_index":263,"title":{},"content":{"12":{"position":[[291,5]]},"41":{"position":[[165,5]]},"44":{"position":[[114,5]]},"63":{"position":[[112,6]]}},"keywords":{}}],["lack",{"_index":386,"title":{"22":{"position":[[18,5]]}},"content":{"18":{"position":[[350,4]]}},"keywords":{}}],["late",{"_index":428,"title":{},"content":{"20":{"position":[[286,4]]}},"keywords":{}}],["latenc",{"_index":327,"title":{},"content":{"15":{"position":[[117,8]]}},"keywords":{}}],["latest",{"_index":146,"title":{},"content":{"8":{"position":[[177,6],[311,6]]}},"keywords":{}}],["laudantium",{"_index":729,"title":{},"content":{"36":{"position":[[563,10]]}},"keywords":{}}],["launch",{"_index":570,"title":{"26":{"position":[[0,6]]}},"content":{"26":{"position":[[0,6],[255,8]]},"41":{"position":[[18,8]]}},"keywords":{}}],["layer",{"_index":352,"title":{},"content":{"17":{"position":[[6,5],[320,5],[1117,6]]},"18":{"position":[[39,5]]},"19":{"position":[[35,5],[673,5],[791,5]]},"20":{"position":[[12,6]]},"21":{"position":[[17,5],[98,5]]},"22":{"position":[[76,6],[156,6],[525,6]]},"23":{"position":[[4,6],[248,5],[389,5]]},"24":{"position":[[4,6],[286,6],[370,5],[387,5],[638,6],[668,6],[704,6],[725,6]]},"25":{"position":[[252,5]]},"57":{"position":[[2155,5]]},"58":{"position":[[1789,6],[3595,5]]}},"keywords":{}}],["lead",{"_index":321,"title":{},"content":{"14":{"position":[[163,4]]},"16":{"position":[[57,4]]},"30":{"position":[[808,7],[919,4]]},"33":{"position":[[621,4]]},"46":{"position":[[681,4]]}},"keywords":{}}],["lean",{"_index":916,"title":{},"content":{"57":{"position":[[815,4]]}},"keywords":{}}],["learn",{"_index":807,"title":{},"content":{"46":{"position":[[1187,5]]}},"keywords":{}}],["left",{"_index":1080,"title":{},"content":{"58":{"position":[[5071,4]]}},"keywords":{}}],["legaci",{"_index":496,"title":{"24":{"position":[[3,6]]}},"content":{"24":{"position":[[558,6]]}},"keywords":{}}],["let'",{"_index":707,"title":{},"content":{"36":{"position":[[5,5]]}},"keywords":{}}],["level",{"_index":761,"title":{"44":{"position":[[5,5]]}},"content":{"57":{"position":[[50,6]]}},"keywords":{}}],["leverag",{"_index":942,"title":{},"content":{"57":{"position":[[2281,9]]}},"keywords":{}}],["librari",{"_index":455,"title":{},"content":{"21":{"position":[[232,9]]}},"keywords":{}}],["limit",{"_index":46,"title":{},"content":{"2":{"position":[[87,5]]},"11":{"position":[[445,9]]},"24":{"position":[[103,9]]}},"keywords":{}}],["line",{"_index":667,"title":{},"content":{"33":{"position":[[182,4]]}},"keywords":{}}],["list",{"_index":48,"title":{},"content":{"2":{"position":[[115,4]]},"9":{"position":[[221,4]]},"29":{"position":[[125,4]]},"32":{"position":[[473,4]]},"35":{"position":[[516,4],[678,5],[808,5]]},"46":{"position":[[555,4]]},"53":{"position":[[494,4]]}},"keywords":{}}],["liter",{"_index":830,"title":{},"content":{"48":{"position":[[296,7]]}},"keywords":{}}],["live",{"_index":436,"title":{},"content":{"20":{"position":[[405,5]]},"23":{"position":[[143,4]]},"57":{"position":[[3999,4]]}},"keywords":{}}],["load",{"_index":433,"title":{},"content":{"20":{"position":[[371,4]]},"26":{"position":[[377,4]]},"46":{"position":[[720,4]]}},"keywords":{}}],["loader",{"_index":804,"title":{},"content":{"46":{"position":[[1065,7]]}},"keywords":{}}],["loading"",{"_index":795,"title":{},"content":{"46":{"position":[[803,13]]}},"keywords":{}}],["local",{"_index":941,"title":{},"content":{"57":{"position":[[2253,5],[3061,5]]}},"keywords":{}}],["locat",{"_index":71,"title":{},"content":{"3":{"position":[[326,6]]},"7":{"position":[[255,7]]}},"keywords":{}}],["log",{"_index":574,"title":{},"content":{"26":{"position":[[212,4]]}},"keywords":{}}],["logic",{"_index":775,"title":{},"content":{"44":{"position":[[653,5]]},"48":{"position":[[222,6]]},"57":{"position":[[4133,5]]}},"keywords":{}}],["long",{"_index":40,"title":{"2":{"position":[[0,4]]}},"content":{"2":{"position":[[30,4]]},"57":{"position":[[5737,4]]}},"keywords":{}}],["longer",{"_index":1007,"title":{},"content":{"57":{"position":[[6115,6]]}},"keywords":{}}],["look",{"_index":229,"title":{},"content":{"11":{"position":[[50,5]]},"30":{"position":[[94,4]]},"63":{"position":[[1310,5]]}},"keywords":{}}],["lorem",{"_index":3,"title":{},"content":{"0":{"position":[[0,5],[152,5]]},"2":{"position":[[126,5],[278,5],[305,5],[457,5],[484,5],[636,5],[663,5],[815,5],[842,5],[994,5],[1021,5],[1173,5],[1200,5],[1352,5],[1379,5],[1531,5],[1558,5],[1710,5],[1737,5],[1889,5],[1916,5],[2068,5],[2095,5],[2247,5],[2274,5],[2426,5],[2453,5],[2605,5],[2632,5],[2784,5],[2811,5],[2963,5]]}},"keywords":{}}],["lot",{"_index":446,"title":{},"content":{"21":{"position":[[115,3]]}},"keywords":{}}],["love",{"_index":860,"title":{},"content":{"48":{"position":[[1738,4]]}},"keywords":{}}],["lt",{"_index":43,"title":{},"content":{"2":{"position":[[52,5]]}},"keywords":{}}],["lt;button",{"_index":33,"title":{},"content":{"1":{"position":[[123,10]]}},"keywords":{}}],["lt;file>",{"_index":741,"title":{},"content":{"38":{"position":[[168,15]]},"39":{"position":[[106,15]]}},"keywords":{}}],["lt;file1>",{"_index":746,"title":{},"content":{"40":{"position":[[117,13]]},"41":{"position":[[250,13]]}},"keywords":{}}],["lt;file2>",{"_index":747,"title":{},"content":{"40":{"position":[[131,13]]},"41":{"position":[[264,13]]}},"keywords":{}}],["lt;file_path>",{"_index":756,"title":{},"content":{"42":{"position":[[133,17]]}},"keywords":{}}],["lt;filen>",{"_index":748,"title":{},"content":{"40":{"position":[[149,13]]},"41":{"position":[[282,13]]}},"keywords":{}}],["made",{"_index":635,"title":{},"content":{"31":{"position":[[131,4]]},"46":{"position":[[512,5],[874,5]]},"58":{"position":[[4588,4]]},"59":{"position":[[2518,4]]}},"keywords":{}}],["main",{"_index":319,"title":{},"content":{"14":{"position":[[92,4]]}},"keywords":{}}],["maintain",{"_index":389,"title":{},"content":{"18":{"position":[[446,9]]},"21":{"position":[[164,9]]},"48":{"position":[[974,11],[1557,11]]},"58":{"position":[[683,10],[919,8],[2946,8]]}},"keywords":{}}],["major",{"_index":994,"title":{},"content":{"57":{"position":[[5464,5]]}},"keywords":{}}],["make",{"_index":232,"title":{},"content":{"11":{"position":[[88,4],[473,5]]},"12":{"position":[[889,4]]},"13":{"position":[[118,5],[267,6],[417,5]]},"15":{"position":[[162,4]]},"16":{"position":[[349,5]]},"17":{"position":[[945,4]]},"18":{"position":[[394,4]]},"23":{"position":[[172,4],[439,5]]},"24":{"position":[[151,5],[472,6]]},"30":{"position":[[224,4],[514,6]]},"47":{"position":[[16,5],[44,4]]},"48":{"position":[[1629,5]]},"57":{"position":[[4862,4]]},"58":{"position":[[3452,6]]},"59":{"position":[[459,4],[2909,4]]},"62":{"position":[[295,4]]},"63":{"position":[[1075,4],[1253,6],[1807,4]]}},"keywords":{}}],["malform",{"_index":983,"title":{},"content":{"57":{"position":[[4414,9]]}},"keywords":{}}],["manag",{"_index":345,"title":{},"content":{"16":{"position":[[418,7]]},"23":{"position":[[480,7]]}},"keywords":{}}],["mani",{"_index":800,"title":{},"content":{"46":{"position":[[999,4]]}},"keywords":{}}],["manual",{"_index":119,"title":{},"content":{"7":{"position":[[26,8]]}},"keywords":{}}],["map",{"_index":701,"title":{},"content":{"35":{"position":[[541,3]]},"59":{"position":[[2583,3]]}},"keywords":{}}],["map<str",{"_index":867,"title":{},"content":{"50":{"position":[[284,14],[341,14],[376,14]]}},"keywords":{}}],["markdown",{"_index":24,"title":{},"content":{"1":{"position":[[30,8]]},"3":{"position":[[72,8]]}},"keywords":{}}],["market",{"_index":438,"title":{},"content":{"20":{"position":[[447,6]]}},"keywords":{}}],["match",{"_index":163,"title":{},"content":{"8":{"position":[[777,5]]},"60":{"position":[[358,5]]},"62":{"position":[[313,7],[383,5]]}},"keywords":{}}],["matchkey",{"_index":882,"title":{},"content":{"53":{"position":[[310,9]]}},"keywords":{}}],["matchpath",{"_index":881,"title":{},"content":{"53":{"position":[[281,10]]}},"keywords":{}}],["matter",{"_index":1172,"title":{},"content":{"63":{"position":[[1705,7]]}},"keywords":{}}],["max",{"_index":925,"title":{},"content":{"57":{"position":[[1096,3]]}},"keywords":{}}],["maximum",{"_index":997,"title":{},"content":{"57":{"position":[[5612,7]]},"58":{"position":[[635,7],[2673,7],[5274,7]]}},"keywords":{}}],["maxsiz",{"_index":1083,"title":{},"content":{"58":{"position":[[5261,7],[5448,9]]}},"keywords":{}}],["mdx",{"_index":21,"title":{"1":{"position":[[0,3]]}},"content":{"1":{"position":[[57,4]]}},"keywords":{}}],["me!</button>",{"_index":38,"title":{},"content":{"1":{"position":[[197,18]]}},"keywords":{}}],["mean",{"_index":412,"title":{},"content":{"19":{"position":[[742,5]]},"48":{"position":[[167,7],[595,8]]},"57":{"position":[[735,5],[1251,7],[6082,5]]},"58":{"position":[[3879,5]]},"59":{"position":[[266,5],[424,5]]},"61":{"position":[[1333,7]]}},"keywords":{}}],["measur",{"_index":784,"title":{},"content":{"45":{"position":[[362,9]]},"57":{"position":[[6358,7]]}},"keywords":{}}],["mechan",{"_index":474,"title":{},"content":{"22":{"position":[[418,11]]},"45":{"position":[[250,11]]},"58":{"position":[[4923,11],[4941,11]]},"63":{"position":[[1778,9]]}},"keywords":{}}],["media",{"_index":275,"title":{},"content":{"12":{"position":[[536,5]]}},"keywords":{}}],["mention",{"_index":410,"title":{},"content":{"19":{"position":[[651,10]]},"24":{"position":[[542,10]]},"58":{"position":[[4197,9]]}},"keywords":{}}],["mere",{"_index":824,"title":{},"content":{"48":{"position":[[65,6]]}},"keywords":{}}],["mesh",{"_index":508,"title":{},"content":{"24":{"position":[[409,5]]}},"keywords":{}}],["messag",{"_index":1031,"title":{},"content":{"58":{"position":[[903,7],[1164,7],[1393,8],[2930,7]]},"62":{"position":[[432,7]]}},"keywords":{}}],["meta",{"_index":578,"title":{},"content":{"26":{"position":[[385,4]]}},"keywords":{}}],["metadata",{"_index":765,"title":{},"content":{"44":{"position":[[234,8],[291,8],[582,8]]}},"keywords":{}}],["method",{"_index":833,"title":{},"content":{"48":{"position":[[325,6]]},"59":{"position":[[1273,7],[1305,6],[1343,7],[1418,6],[1950,7]]}},"keywords":{}}],["microservic",{"_index":226,"title":{"11":{"position":[[0,12]]}},"content":{"11":{"position":[[23,13],[109,13],[506,13]]},"12":{"position":[[357,12]]},"17":{"position":[[430,14],[502,13]]},"23":{"position":[[334,12]]},"44":{"position":[[705,14]]}},"keywords":{}}],["middlewar",{"_index":519,"title":{},"content":{"24":{"position":[[683,11]]}},"keywords":{}}],["millisecond",{"_index":1006,"title":{},"content":{"57":{"position":[[6049,13]]},"58":{"position":[[5322,12]]}},"keywords":{}}],["minim",{"_index":675,"title":{},"content":{"33":{"position":[[489,7],[596,7]]}},"keywords":{}}],["minor",{"_index":439,"title":{},"content":{"20":{"position":[[463,5]]}},"keywords":{}}],["mitig",{"_index":640,"title":{},"content":{"31":{"position":[[241,9]]}},"keywords":{}}],["mobile/web",{"_index":231,"title":{},"content":{"11":{"position":[[75,12]]}},"keywords":{}}],["modern",{"_index":479,"title":{},"content":{"22":{"position":[[514,6]]}},"keywords":{}}],["modest",{"_index":300,"title":{},"content":{"13":{"position":[[352,6],[480,6]]}},"keywords":{}}],["modifi",{"_index":685,"title":{"60":{"position":[[0,8]]}},"content":{"34":{"position":[[256,6]]},"60":{"position":[[4,7],[261,7],[743,7]]},"61":{"position":[[144,9]]},"63":{"position":[[576,6]]}},"keywords":{}}],["modify(nam",{"_index":1115,"title":{},"content":{"60":{"position":[[438,13],[475,13]]},"63":{"position":[[439,13],[788,13]]}},"keywords":{}}],["modify(omit",{"_index":1121,"title":{},"content":{"60":{"position":[[872,13],[895,13]]}},"keywords":{}}],["monolith",{"_index":441,"title":{"21":{"position":[[3,9]]}},"content":{"21":{"position":[[45,8]]}},"keywords":{}}],["more",{"_index":294,"title":{},"content":{"13":{"position":[[183,4]]},"15":{"position":[[219,4]]},"16":{"position":[[384,4],[448,4]]},"18":{"position":[[416,4]]},"30":{"position":[[233,4]]},"36":{"position":[[724,4]]},"46":{"position":[[1193,4]]},"48":{"position":[[343,4]]},"58":{"position":[[171,5]]},"59":{"position":[[3475,4]]},"63":{"position":[[154,4],[1832,4],[1872,4]]}},"keywords":{}}],["moreov",{"_index":505,"title":{},"content":{"24":{"position":[[220,9]]}},"keywords":{}}],["multipl",{"_index":255,"title":{},"content":{"12":{"position":[[51,8],[149,8]]},"13":{"position":[[274,8]]},"14":{"position":[[297,8]]},"15":{"position":[[167,8]]},"17":{"position":[[1044,8]]},"30":{"position":[[441,8]]},"34":{"position":[[44,8]]},"35":{"position":[[410,8]]},"40":{"position":[[193,8]]},"41":{"position":[[326,8]]},"46":{"position":[[127,8],[477,8]]},"48":{"position":[[886,8]]},"53":{"position":[[542,8]]},"59":{"position":[[3428,8],[3991,8]]},"63":{"position":[[92,8]]}},"keywords":{}}],["mustach",{"_index":1092,"title":{},"content":{"59":{"position":[[1063,8],[1663,8],[2049,8],[2921,8]]}},"keywords":{}}],["mutat",{"_index":903,"title":{},"content":{"57":{"position":[[245,9],[255,8],[666,9],[676,8],[1339,9],[1349,8],[1917,9],[1927,8],[2587,9],[2597,8],[3803,9],[3813,8],[4677,9],[4687,8],[5404,9],[5414,8],[5963,9],[5973,8]]},"58":{"position":[[276,9],[286,8],[589,9],[599,8],[818,9],[828,8],[1057,9],[1067,8],[1300,9],[1310,8],[1564,9],[1574,8],[1982,9],[1992,8],[2638,9],[2648,8],[2846,9],[2856,8],[3079,9],[3089,8],[3296,9],[3306,8],[3753,9],[3763,8],[4463,9],[4473,8],[5177,9],[5187,8],[5551,9],[5561,8]]},"59":{"position":[[1451,8],[2137,8],[2316,8],[2640,8],[3060,8]]}},"keywords":{}}],["n",{"_index":589,"title":{"27":{"position":[[9,1]]},"39":{"position":[[2,1]]}},"content":{"33":{"position":[[159,1],[173,1],[319,1],[390,1],[426,1]]},"39":{"position":[[87,1]]},"46":{"position":[[354,1],[378,1]]},"59":{"position":[[3505,1]]}},"keywords":{}}],["n+1",{"_index":605,"title":{},"content":{"30":{"position":[[324,3],[1050,3]]},"31":{"position":[[67,3]]},"32":{"position":[[590,3]]},"33":{"position":[[77,3],[246,3],[523,3],[632,3]]},"34":{"position":[[196,3]]},"35":{"position":[[879,3]]},"38":{"position":[[91,3]]},"39":{"position":[[36,3]]}},"keywords":{}}],["name",{"_index":200,"title":{},"content":{"9":{"position":[[747,5]]},"12":{"position":[[1007,5]]},"32":{"position":[[230,5]]},"36":{"position":[[117,4]]},"47":{"position":[[288,4]]},"57":{"position":[[2811,5]]},"59":{"position":[[2597,5],[3292,4],[3353,4],[3539,5]]},"60":{"position":[[168,5],[240,4],[314,4],[382,4]]},"61":{"position":[[383,5]]},"62":{"position":[[145,6],[194,5]]},"63":{"position":[[285,5],[367,5],[717,4],[844,4],[861,4],[1347,5],[1530,7],[1538,4]]}},"keywords":{}}],["name"",{"_index":1109,"title":{},"content":{"59":{"position":[[3214,11]]}},"keywords":{}}],["necessari",{"_index":317,"title":{},"content":{"14":{"position":[[51,9]]},"42":{"position":[[67,9]]},"45":{"position":[[53,9]]},"57":{"position":[[426,10]]}},"keywords":{}}],["necessit",{"_index":548,"title":{},"content":{"25":{"position":[[509,12]]}},"keywords":{}}],["need",{"_index":322,"title":{},"content":{"14":{"position":[[246,5]]},"15":{"position":[[153,5]]},"16":{"position":[[118,5]]},"19":{"position":[[797,5]]},"23":{"position":[[132,4],[164,4],[354,5],[395,5]]},"30":{"position":[[24,4]]},"47":{"position":[[35,5]]},"50":{"position":[[149,5]]},"57":{"position":[[383,6],[2371,4]]},"63":{"position":[[1903,5]]}},"keywords":{}}],["nest",{"_index":1126,"title":{},"content":{"61":{"position":[[231,6]]}},"keywords":{}}],["network",{"_index":304,"title":{},"content":{"13":{"position":[[398,7],[506,7]]},"16":{"position":[[328,7]]},"17":{"position":[[784,7]]}},"keywords":{}}],["new",{"_index":256,"title":{},"content":{"12":{"position":[[77,3],[90,3],[207,3],[1175,3]]},"17":{"position":[[1001,3]]},"21":{"position":[[185,3]]},"26":{"position":[[481,3]]},"42":{"position":[[30,3]]}},"keywords":{}}],["newli",{"_index":843,"title":{},"content":{"48":{"position":[[1190,5]]}},"keywords":{}}],["next",{"_index":663,"title":{},"content":{"32":{"position":[[760,4]]}},"keywords":{}}],["node",{"_index":877,"title":{},"content":{"52":{"position":[[41,5]]},"53":{"position":[[39,5]]},"59":{"position":[[58,4]]},"60":{"position":[[97,4],[202,4],[682,4]]},"61":{"position":[[107,4]]}},"keywords":{}}],["nodej",{"_index":83,"title":{},"content":{"5":{"position":[[26,6]]}},"keywords":{}}],["nomenclatur",{"_index":521,"title":{},"content":{"24":{"position":[[764,13]]}},"keywords":{}}],["non",{"_index":309,"title":{},"content":{"13":{"position":[[459,3]]},"57":{"position":[[828,3]]}},"keywords":{}}],["notabl",{"_index":738,"title":{},"content":{"38":{"position":[[48,8]]},"57":{"position":[[4498,7]]}},"keywords":{}}],["note",{"_index":97,"title":{},"content":{"5":{"position":[[236,4]]},"8":{"position":[[668,4]]},"63":{"position":[[1660,4]]}},"keywords":{}}],["noth",{"_index":413,"title":{},"content":{"19":{"position":[[748,7]]}},"keywords":{}}],["now",{"_index":571,"title":{},"content":{"26":{"position":[[7,4],[447,4]]},"36":{"position":[[685,3]]},"61":{"position":[[1028,3]]},"63":{"position":[[939,3]]}},"keywords":{}}],["npm",{"_index":81,"title":{"5":{"position":[[0,4]]}},"content":{"5":{"position":[[148,3],[277,3]]}},"keywords":{}}],["nullabl",{"_index":1140,"title":{},"content":{"61":{"position":[[1183,10],[1245,9],[1282,9]]}},"keywords":{}}],["number",{"_index":682,"title":{},"content":{"34":{"position":[[107,6]]},"35":{"position":[[727,6]]},"46":{"position":[[855,6]]},"58":{"position":[[643,6]]}},"keywords":{}}],["numer",{"_index":629,"title":{},"content":{"30":{"position":[[1122,8]]}},"keywords":{}}],["object",{"_index":287,"title":{},"content":{"12":{"position":[[1335,6]]},"46":{"position":[[563,7],[664,7]]},"58":{"position":[[5209,6]]},"59":{"position":[[1649,6],[2033,6],[2372,6]]},"63":{"position":[[682,7],[928,7],[1465,6]]}},"keywords":{}}],["occaecati",{"_index":719,"title":{},"content":{"36":{"position":[[376,9]]}},"keywords":{}}],["occur",{"_index":793,"title":{},"content":{"46":{"position":[[527,5]]}},"keywords":{}}],["odit",{"_index":733,"title":{},"content":{"36":{"position":[[637,4]]}},"keywords":{}}],["offer",{"_index":742,"title":{},"content":{"38":{"position":[[203,6]]},"57":{"position":[[57,6],[5458,5]]}},"keywords":{}}],["omit",{"_index":1117,"title":{},"content":{"60":{"position":[[647,5],[722,4]]}},"keywords":{}}],["on",{"_index":318,"title":{"39":{"position":[[9,3]]}},"content":{"14":{"position":[[81,3]]},"18":{"position":[[0,3]]},"25":{"position":[[384,3]]},"33":{"position":[[232,3],[326,3],[397,3]]},"34":{"position":[[75,4]]},"35":{"position":[[433,4],[775,3]]},"39":{"position":[[94,3]]},"46":{"position":[[980,4]]},"48":{"position":[[1010,3]]},"57":{"position":[[874,4]]},"59":{"position":[[651,3],[4014,4]]}},"keywords":{}}],["onboard",{"_index":451,"title":{},"content":{"21":{"position":[[174,10]]}},"keywords":{}}],["onc",{"_index":110,"title":{},"content":{"6":{"position":[[283,4]]},"8":{"position":[[673,4]]},"46":{"position":[[0,4]]},"48":{"position":[[1283,4]]},"54":{"position":[[73,4]]}},"keywords":{}}],["onclick",{"_index":34,"title":{},"content":{"1":{"position":[[134,11]]}},"keywords":{}}],["onlin",{"_index":174,"title":{},"content":{"9":{"position":[[145,6]]}},"keywords":{}}],["open",{"_index":583,"title":{},"content":{"26":{"position":[[452,4]]}},"keywords":{}}],["oper",{"_index":694,"title":{"56":{"position":[[0,9]]},"63":{"position":[[0,8]]}},"content":{"35":{"position":[[103,9]]},"48":{"position":[[1461,8],[1569,11]]},"50":{"position":[[98,9],[176,10]]},"57":{"position":[[2311,11],[2460,10],[3679,10]]},"58":{"position":[[4224,9],[4250,8]]},"59":{"position":[[11,8],[206,8],[680,9],[2536,9]]},"60":{"position":[[12,8],[158,9],[269,9],[751,9]]},"61":{"position":[[12,8],[628,9],[1155,8],[1701,8]]},"62":{"position":[[11,9],[229,8]]},"63":{"position":[[101,10],[563,9],[637,8],[824,8],[1030,8],[1437,9],[1687,9]]}},"keywords":{}}],["operation",{"_index":493,"title":{},"content":{"23":{"position":[[448,13]]}},"keywords":{}}],["opt",{"_index":984,"title":{},"content":{"57":{"position":[[4479,3]]}},"keywords":{}}],["optim",{"_index":356,"title":{},"content":{"17":{"position":[[112,9]]},"35":{"position":[[842,12]]},"46":{"position":[[1004,13]]},"57":{"position":[[6299,9]]}},"keywords":{}}],["optio",{"_index":721,"title":{},"content":{"36":{"position":[[396,5]]}},"keywords":{}}],["option",{"_index":740,"title":{},"content":{"38":{"position":[[158,9],[218,7]]},"40":{"position":[[5,6],[265,8]]},"41":{"position":[[398,8]]},"57":{"position":[[464,7]]},"58":{"position":[[326,7]]}},"keywords":{}}],["orchestr",{"_index":264,"title":{},"content":{"12":{"position":[[304,14],[370,14]]},"24":{"position":[[711,13]]},"48":{"position":[[702,14]]}},"keywords":{}}],["order",{"_index":1171,"title":{},"content":{"63":{"position":[[1674,5]]}},"keywords":{}}],["organiz",{"_index":524,"title":{"25":{"position":[[3,14]]}},"content":{"25":{"position":[[106,14],[764,14]]}},"keywords":{}}],["other",{"_index":785,"title":{},"content":{"45":{"position":[[378,7]]},"58":{"position":[[3974,6]]}},"keywords":{}}],["out",{"_index":382,"title":{},"content":{"18":{"position":[[224,3]]},"21":{"position":[[29,3]]},"26":{"position":[[371,3],[516,3]]},"48":{"position":[[1695,3]]},"58":{"position":[[2523,4]]},"59":{"position":[[3501,3]]}},"keywords":{}}],["outlin",{"_index":766,"title":{},"content":{"44":{"position":[[248,8]]}},"keywords":{}}],["output",{"_index":286,"title":{},"content":{"12":{"position":[[1213,6]]},"36":{"position":[[157,6]]}},"keywords":{}}],["over",{"_index":291,"title":{},"content":{"13":{"position":[[87,4]]},"17":{"position":[[906,4]]}},"keywords":{}}],["overal",{"_index":306,"title":{},"content":{"13":{"position":[[427,7]]},"14":{"position":[[359,7]]},"17":{"position":[[372,7]]},"48":{"position":[[435,7]]}},"keywords":{}}],["overview",{"_index":223,"title":{},"content":{"9":{"position":[[1323,8]]}},"keywords":{}}],["ownership",{"_index":539,"title":{},"content":{"25":{"position":[[324,9],[419,9]]}},"keywords":{}}],["p",{"_index":152,"title":{},"content":{"8":{"position":[[455,1],[468,1]]}},"keywords":{}}],["pair",{"_index":778,"title":{},"content":{"45":{"position":[[150,6]]}},"keywords":{}}],["paradigm",{"_index":569,"title":{},"content":{"25":{"position":[[930,10]]}},"keywords":{}}],["paramet",{"_index":672,"title":{},"content":{"33":{"position":[[338,10],[466,9]]},"35":{"position":[[470,9]]},"44":{"position":[[471,11]]},"59":{"position":[[1592,10],[1693,11],[1711,10],[2452,9],[3411,9]]}},"keywords":{}}],["parent",{"_index":696,"title":{"53":{"position":[[0,7]]}},"content":{"35":{"position":[[283,6]]},"50":{"position":[[320,7]]},"53":{"position":[[32,6]]},"59":{"position":[[3864,6]]}},"keywords":{}}],["part",{"_index":478,"title":{},"content":{"22":{"position":[[504,4]]},"47":{"position":[[76,4]]},"63":{"position":[[1519,4],[1548,4]]}},"keywords":{}}],["particular",{"_index":299,"title":{},"content":{"13":{"position":[[320,10]]}},"keywords":{}}],["particularli",{"_index":944,"title":{},"content":{"57":{"position":[[2343,12]]}},"keywords":{}}],["pass",{"_index":873,"title":{},"content":{"51":{"position":[[24,6],[260,6]]},"59":{"position":[[1629,4],[2013,4],[3367,6]]}},"keywords":{}}],["past",{"_index":183,"title":{},"content":{"9":{"position":[[385,5]]}},"keywords":{}}],["path",{"_index":133,"title":{},"content":{"7":{"position":[[342,4]]},"9":{"position":[[590,4],[883,4]]},"26":{"position":[[72,4]]},"34":{"position":[[412,5]]},"40":{"position":[[227,5]]},"41":{"position":[[360,5]]},"42":{"position":[[119,5]]},"54":{"position":[[179,5]]},"57":{"position":[[1409,4],[1596,5]]},"58":{"position":[[4644,6],[4708,4]]},"59":{"position":[[326,4],[363,4],[403,4],[817,5],[1150,4],[1530,5],[2216,5]]},"61":{"position":[[724,4],[1237,4],[1483,4]]},"63":{"position":[[1136,4]]}},"keywords":{}}],["path/to/file1.graphql",{"_index":750,"title":{},"content":{"40":{"position":[[301,23]]},"41":{"position":[[425,23]]}},"keywords":{}}],["path/to/file2.graphql",{"_index":751,"title":{},"content":{"40":{"position":[[325,23]]},"41":{"position":[[449,23]]}},"keywords":{}}],["path=$path:~/.tailcall/bin",{"_index":139,"title":{},"content":{"7":{"position":[[417,26]]}},"keywords":{}}],["pattern",{"_index":526,"title":{},"content":{"25":{"position":[[32,8]]}},"keywords":{}}],["pellentesqu",{"_index":11,"title":{},"content":{"0":{"position":[[57,12]]},"2":{"position":[[183,12],[362,12],[541,12],[720,12],[899,12],[1078,12],[1257,12],[1436,12],[1615,12],[1794,12],[1973,12],[2152,12],[2331,12],[2510,12],[2689,12],[2868,12]]}},"keywords":{}}],["per",{"_index":1028,"title":{},"content":{"58":{"position":[[694,3]]}},"keywords":{}}],["perceiv",{"_index":554,"title":{},"content":{"25":{"position":[[704,8]]}},"keywords":{}}],["perform",{"_index":113,"title":{"15":{"position":[[11,12]]},"20":{"position":[[15,12]]}},"content":{"6":{"position":[[326,9]]},"11":{"position":[[402,7]]},"13":{"position":[[463,11]]},"15":{"position":[[91,11]]},"16":{"position":[[480,7]]},"17":{"position":[[184,7],[263,11],[639,11],[807,11]]},"19":{"position":[[272,11],[360,11],[454,8]]},"20":{"position":[[102,11],[337,7]]},"22":{"position":[[249,11]]},"46":{"position":[[289,11],[694,11]]},"57":{"position":[[4537,11],[4988,12],[5235,7],[5470,11]]},"58":{"position":[[5018,11]]},"61":{"position":[[1807,11]]}},"keywords":{}}],["permit",{"_index":968,"title":{},"content":{"57":{"position":[[3443,9]]},"58":{"position":[[3400,9]]}},"keywords":{}}],["perspect",{"_index":535,"title":{},"content":{"25":{"position":[[226,11]]}},"keywords":{}}],["pertin",{"_index":771,"title":{},"content":{"44":{"position":[[437,9]]}},"keywords":{}}],["phase",{"_index":988,"title":{},"content":{"57":{"position":[[4785,5]]}},"keywords":{}}],["phone",{"_index":657,"title":{},"content":{"32":{"position":[[277,6]]}},"keywords":{}}],["place",{"_index":507,"title":{},"content":{"24":{"position":[[309,5],[329,5]]},"57":{"position":[[3174,5]]}},"keywords":{}}],["placehold",{"_index":594,"title":{},"content":{"28":{"position":[[79,11]]},"30":{"position":[[365,11]]},"57":{"position":[[2838,11]]},"63":{"position":[[1190,11]]}},"keywords":{}}],["platform",{"_index":103,"title":{},"content":{"5":{"position":[[331,8]]},"12":{"position":[[542,9]]}},"keywords":{}}],["playground",{"_index":576,"title":{},"content":{"26":{"position":[[285,11],[461,10]]}},"keywords":{}}],["pleas",{"_index":647,"title":{},"content":{"31":{"position":[[414,6]]},"48":{"position":[[1669,6]]},"59":{"position":[[3488,6]]}},"keywords":{}}],["plu",{"_index":671,"title":{"39":{"position":[[4,4]]}},"content":{"33":{"position":[[321,4],[392,4]]},"35":{"position":[[770,4]]},"39":{"position":[[89,4]]}},"keywords":{}}],["plugin",{"_index":51,"title":{},"content":{"3":{"position":[[53,7]]}},"keywords":{}}],["point",{"_index":236,"title":{},"content":{"11":{"position":[[196,5]]},"19":{"position":[[691,5]]}},"keywords":{}}],["polici",{"_index":1040,"title":{},"content":{"58":{"position":[[1833,9]]}},"keywords":{}}],["pool",{"_index":1020,"title":{},"content":{"58":{"position":[[430,4]]}},"keywords":{}}],["poolidletimeout",{"_index":1019,"title":{},"content":{"58":{"position":[[373,16]]}},"keywords":{}}],["poolmaxidleperhost",{"_index":1027,"title":{},"content":{"58":{"position":[[611,19]]}},"keywords":{}}],["poor",{"_index":310,"title":{},"content":{"13":{"position":[[555,4]]},"46":{"position":[[689,4]]}},"keywords":{}}],["port",{"_index":159,"title":{},"content":{"8":{"position":[[657,4]]},"57":{"position":[[511,5],[536,4],[610,4],[709,4],[841,6],[915,4]]}},"keywords":{}}],["pose",{"_index":1001,"title":{},"content":{"57":{"position":[[5789,4]]}},"keywords":{}}],["post",{"_index":2,"title":{"0":{"position":[[11,4]]},"1":{"position":[[9,4]]},"2":{"position":[[10,4]]},"29":{"position":[[9,6]]}},"content":{"1":{"position":[[5,5],[116,6]]},"2":{"position":[[40,5],[98,4]]},"3":{"position":[[182,4],[290,4],[338,4]]},"9":{"position":[[268,5],[826,5],[888,6],[895,6],[966,4],[1008,5],[1023,4]]},"12":{"position":[[476,5],[678,6],[704,6],[745,4],[874,4],[1246,4]]},"28":{"position":[[126,5],[172,6]]},"29":{"position":[[41,6],[133,5],[220,5]]},"30":{"position":[[15,5],[180,5],[499,5],[652,5]]},"32":{"position":[[161,6],[168,6],[314,4],[481,6],[498,4],[608,4]]},"33":{"position":[[443,5],[563,5],[676,5],[694,4]]},"34":{"position":[[336,4]]},"35":{"position":[[290,5],[311,6],[764,5],[803,4]]},"36":{"position":[[79,4],[122,5]]},"47":{"position":[[262,5]]},"52":{"position":[[66,4],[256,4]]},"53":{"position":[[58,6],[65,6],[111,4],[452,4],[551,4],[621,4]]},"59":{"position":[[1364,5],[1794,6],[1963,4],[2333,4],[3523,4],[3871,5],[3892,6]]},"61":{"position":[[332,4],[532,5],[791,4],[824,4],[947,5],[1548,4]]},"63":{"position":[[247,5],[299,4],[387,4],[1367,4],[1493,6]]}},"keywords":{}}],["post'",{"_index":602,"title":{},"content":{"30":{"position":[[259,6],[546,6]]}},"keywords":{}}],["post.us",{"_index":686,"title":{},"content":{"34":{"position":[[286,9]]}},"keywords":{}}],["postuserstreet",{"_index":1134,"title":{},"content":{"61":{"position":[[670,14],[1013,14]]}},"keywords":{}}],["postuserstreet(id",{"_index":1129,"title":{},"content":{"61":{"position":[[507,18],[899,18]]}},"keywords":{}}],["potent",{"_index":633,"title":{},"content":{"31":{"position":[[22,6]]}},"keywords":{}}],["potenti",{"_index":544,"title":{},"content":{"25":{"position":[[452,9]]},"31":{"position":[[218,9]]},"33":{"position":[[67,9],[236,9]]},"38":{"position":[[81,9]]},"57":{"position":[[4051,9],[5507,9],[6374,9]]}},"keywords":{}}],["power",{"_index":29,"title":{},"content":{"1":{"position":[[74,5]]},"3":{"position":[[33,7]]},"16":{"position":[[300,8]]},"17":{"position":[[750,8]]},"57":{"position":[[1977,8]]},"63":{"position":[[1769,8]]}},"keywords":{}}],["practic",{"_index":395,"title":{},"content":{"19":{"position":[[158,9]]},"46":{"position":[[907,9]]}},"keywords":{}}],["precis",{"_index":1173,"title":{},"content":{"63":{"position":[[1837,8]]}},"keywords":{}}],["predict",{"_index":418,"title":{},"content":{"20":{"position":[[90,7]]}},"keywords":{}}],["prepend",{"_index":1071,"title":{},"content":{"58":{"position":[[4607,7]]}},"keywords":{}}],["present",{"_index":517,"title":{},"content":{"24":{"position":[[655,12]]},"25":{"position":[[605,10],[818,8]]},"55":{"position":[[251,7]]},"60":{"position":[[611,9]]},"61":{"position":[[259,10]]}},"keywords":{}}],["prevent",{"_index":975,"title":{},"content":{"57":{"position":[[4040,10],[4380,10]]}},"keywords":{}}],["print",{"_index":162,"title":{},"content":{"8":{"position":[[747,7]]},"26":{"position":[[364,6]]}},"keywords":{}}],["proactiv",{"_index":637,"title":{},"content":{"31":{"position":[[188,9]]}},"keywords":{}}],["problem",{"_index":224,"title":{"10":{"position":[[0,7]]}},"content":{"13":{"position":[[76,7]]},"16":{"position":[[371,7]]},"22":{"position":[[316,7]]},"23":{"position":[[293,7]]},"30":{"position":[[328,8],[674,7],[1054,7]]},"32":{"position":[[594,8]]},"33":{"position":[[527,8],[636,8]]},"35":{"position":[[883,8]]},"46":{"position":[[360,8],[384,7],[741,7]]}},"keywords":{}}],["process",{"_index":253,"title":{},"content":{"12":{"position":[[30,7]]},"14":{"position":[[266,7]]},"17":{"position":[[927,8]]},"31":{"position":[[492,7]]},"46":{"position":[[115,7],[1268,8]]},"61":{"position":[[58,9],[193,8],[1138,8]]}},"keywords":{}}],["produc",{"_index":816,"title":{},"content":{"47":{"position":[[126,8]]}},"keywords":{}}],["product",{"_index":406,"title":{},"content":{"19":{"position":[[471,11]]},"23":{"position":[[265,11]]},"25":{"position":[[364,13]]},"31":{"position":[[171,11]]},"48":{"position":[[945,11],[1315,11],[1403,7],[1515,10]]},"57":{"position":[[2042,10],[3945,10],[4927,10],[6260,10]]}},"keywords":{}}],["profil",{"_index":272,"title":{},"content":{"12":{"position":[[491,7],[937,7]]}},"keywords":{}}],["project",{"_index":755,"title":{},"content":{"42":{"position":[[43,8]]}},"keywords":{}}],["project'",{"_index":907,"title":{},"content":{"57":{"position":[[373,9]]}},"keywords":{}}],["promot",{"_index":1148,"title":{},"content":{"61":{"position":[[1790,9]]}},"keywords":{}}],["prompt",{"_index":757,"title":{},"content":{"42":{"position":[[165,7]]}},"keywords":{}}],["prone",{"_index":398,"title":{},"content":{"19":{"position":[[254,5],[616,5]]}},"keywords":{}}],["propel",{"_index":564,"title":{},"content":{"25":{"position":[[862,7]]}},"keywords":{}}],["properli",{"_index":339,"title":{},"content":{"16":{"position":[[248,8]]},"19":{"position":[[561,8]]}},"keywords":{}}],["properti",{"_index":1167,"title":{},"content":{"63":{"position":[[774,9]]}},"keywords":{}}],["protect",{"_index":961,"title":{},"content":{"57":{"position":[[3258,9]]}},"keywords":{}}],["protocol",{"_index":364,"title":{},"content":{"17":{"position":[[550,10]]},"45":{"position":[[166,8]]}},"keywords":{}}],["provid",{"_index":355,"title":{},"content":{"17":{"position":[[67,9],[868,7]]},"26":{"position":[[351,8]]},"34":{"position":[[148,8]]},"36":{"position":[[366,9]]},"42":{"position":[[105,8]]},"46":{"position":[[245,8],[1152,8]]},"48":{"position":[[332,8]]},"57":{"position":[[1725,9],[2782,8],[3154,9]]},"58":{"position":[[2011,8],[3578,7],[4318,8]]},"59":{"position":[[2943,7],[3017,8]]},"60":{"position":[[32,8]]},"62":{"position":[[261,8],[360,8]]}},"keywords":{}}],["proxi",{"_index":752,"title":{},"content":{"41":{"position":[[69,5]]},"44":{"position":[[175,6],[524,6]]},"48":{"position":[[1120,6]]},"58":{"position":[[1586,6],[1597,5],[1750,5],[2203,6]]}},"keywords":{}}],["proxy'",{"_index":1044,"title":{},"content":{"58":{"position":[[2043,7]]}},"keywords":{}}],["publicli",{"_index":963,"title":{},"content":{"57":{"position":[[3346,8]]}},"keywords":{}}],["publish",{"_index":636,"title":{"46":{"position":[[0,8]]}},"content":{"31":{"position":[[158,9]]},"41":{"position":[[120,7]]},"46":{"position":[[48,7],[104,10],[1085,10],[1257,10]]},"47":{"position":[[142,10]]}},"keywords":{}}],["pull",{"_index":145,"title":{},"content":{"8":{"position":[[168,4],[242,4]]}},"keywords":{}}],["purpos",{"_index":502,"title":{},"content":{"24":{"position":[[161,7]]},"48":{"position":[[244,7],[455,7]]}},"keywords":{}}],["put",{"_index":1096,"title":{},"content":{"59":{"position":[[1370,4],[1971,3]]}},"keywords":{}}],["queri",{"_index":192,"title":{"39":{"position":[[13,8]]}},"content":{"9":{"position":[[543,6],[550,5],[563,5],[609,5]]},"32":{"position":[[133,6],[140,5],[153,5]]},"33":{"position":[[330,7],[401,7],[435,5],[497,5],[555,5],[604,5],[682,6]]},"34":{"position":[[437,6]]},"35":{"position":[[113,6]]},"36":{"position":[[29,6],[98,5],[729,7]]},"39":{"position":[[98,7]]},"51":{"position":[[46,6],[101,6],[126,5],[279,6]]},"53":{"position":[[50,5],[212,6],[626,6]]},"54":{"position":[[107,5]]},"55":{"position":[[84,5]]},"57":{"position":[[232,6],[239,5],[653,6],[660,5],[1326,6],[1333,5],[1548,5],[1904,6],[1911,5],[2574,6],[2581,5],[2613,5],[3431,7],[3790,6],[3797,5],[4284,7],[4336,5],[4424,8],[4664,6],[4671,5],[4804,8],[4876,7],[5391,6],[5398,5],[5631,5],[5750,7],[5950,6],[5957,5],[6092,5],[6446,7]]},"58":{"position":[[263,6],[270,5],[576,6],[583,5],[805,6],[812,5],[1044,6],[1051,5],[1287,6],[1294,5],[1551,6],[1558,5],[1969,6],[1976,5],[2625,6],[2632,5],[2833,6],[2840,5],[3066,6],[3073,5],[3283,6],[3290,5],[3740,6],[3747,5],[4450,6],[4457,5],[5164,6],[5171,5],[5538,6],[5545,5]]},"59":{"position":[[116,5],[249,5],[547,8],[695,5],[940,5],[1198,5],[1559,6],[1586,5],[1766,5],[1833,6],[3596,6],[3695,6]]},"61":{"position":[[312,6],[319,5],[499,5],[698,5],[871,6],[878,5],[891,5],[1777,5]]},"62":{"position":[[93,6],[100,5],[113,5]]}},"keywords":{}}],["question",{"_index":855,"title":{},"content":{"48":{"position":[[1658,10]]}},"keywords":{}}],["quia",{"_index":728,"title":{},"content":{"36":{"position":[[558,4]]}},"keywords":{}}],["quibusdam",{"_index":732,"title":{},"content":{"36":{"position":[[619,9]]}},"keywords":{}}],["quick",{"_index":222,"title":{},"content":{"9":{"position":[[1317,5]]}},"keywords":{}}],["quit",{"_index":503,"title":{},"content":{"24":{"position":[[169,5]]}},"keywords":{}}],["quot",{"_index":820,"title":{},"content":{"47":{"position":[[254,7],[305,9]]}},"keywords":{}}],["quot;/extern",{"_index":951,"title":{},"content":{"57":{"position":[[2652,15]]}},"keywords":{}}],["quot;/graphiql"",{"_index":935,"title":{},"content":{"57":{"position":[[1879,22]]}},"keywords":{}}],["quot;/posts"",{"_index":656,"title":{},"content":{"32":{"position":[[187,19]]},"53":{"position":[[84,19]]},"59":{"position":[[1813,19]]}},"keywords":{}}],["quot;/posts/{{value.id}}/comments"",{"_index":878,"title":{},"content":{"52":{"position":[[142,41]]}},"keywords":{}}],["quot;/users"",{"_index":195,"title":{},"content":{"9":{"position":[[641,19]]},"34":{"position":[[418,18]]},"53":{"position":[[192,19]]},"54":{"position":[[185,19]]},"59":{"position":[[156,19],[735,19],[980,19],[1536,19],[2222,19],[2699,19],[3109,19],[3576,19]]},"61":{"position":[[1651,19]]}},"keywords":{}}],["quot;/users/{{args.id}}"",{"_index":875,"title":{},"content":{"51":{"position":[[166,31]]},"59":{"position":[[1238,31]]}},"keywords":{}}],["quot;/users/{{headers.userid}}/comments"",{"_index":896,"title":{},"content":{"55":{"position":[[131,47]]}},"keywords":{}}],["quot;/users/{{userid}}"",{"_index":1162,"title":{},"content":{"63":{"position":[[487,30],[999,30]]}},"keywords":{}}],["quot;/users/{{value.id}}/posts"",{"_index":207,"title":{},"content":{"9":{"position":[[914,38]]}},"keywords":{}}],["quot;/users/{{value.userid}}"",{"_index":659,"title":{},"content":{"32":{"position":[[395,36]]}},"keywords":{}}],["quot;0"",{"_index":1144,"title":{},"content":{"61":{"position":[[1605,14]]}},"keywords":{}}],["quot;address"",{"_index":1132,"title":{},"content":{"61":{"position":[[571,20]]}},"keywords":{}}],["quot;apikey"",{"_index":948,"title":{},"content":{"57":{"position":[[2513,19]]}},"keywords":{}}],["quot;array"",{"_index":887,"title":{},"content":{"53":{"position":[[502,17]]}},"keywords":{}}],["quot;authorization"",{"_index":953,"title":{},"content":{"57":{"position":[[2700,26]]},"58":{"position":[[3686,27],[5507,28]]}},"keywords":{}}],["quot;batching"",{"_index":796,"title":{},"content":{"46":{"position":[[820,20]]}},"keywords":{}}],["quot;bear",{"_index":954,"title":{},"content":{"57":{"position":[[2734,12]]}},"keywords":{}}],["quot;data"",{"_index":708,"title":{},"content":{"36":{"position":[[186,17]]}},"keywords":{}}],["quot;eag",{"_index":794,"title":{},"content":{"46":{"position":[[791,11]]}},"keywords":{}}],["quot;ervin",{"_index":723,"title":{},"content":{"36":{"position":[[473,11]]}},"keywords":{}}],["quot;et",{"_index":725,"title":{},"content":{"36":{"position":[[541,8]]}},"keywords":{}}],["quot;front",{"_index":248,"title":{},"content":{"11":{"position":[[597,11]]}},"keywords":{}}],["quot;http://jsonplaceholder.typicode.com"",{"_index":191,"title":{},"content":{"9":{"position":[[492,48]]},"32":{"position":[[82,48]]},"58":{"position":[[525,48],[754,48],[993,48],[1236,48],[1500,48],[1918,48],[2243,48],[2574,48],[2782,48],[3015,48],[3232,48],[4399,48]]}},"keywords":{}}],["quot;http://localhost:3000"",{"_index":1042,"title":{},"content":{"58":{"position":[[1873,35],[2058,34],[2344,33]]}},"keywords":{}}],["quot;https://jsonplaceholder.typicode.com"",{"_index":1091,"title":{},"content":{"59":{"position":[[764,49]]}},"keywords":{}}],["quot;id"",{"_index":687,"title":{},"content":{"34":{"position":[[451,15],[514,16]]},"35":{"position":[[127,15],[447,17]]},"36":{"position":[[229,15],[436,15]]},"53":{"position":[[226,15],[292,17]]},"59":{"position":[[3610,15],[3674,17],[3708,15]]}},"keywords":{}}],["quot;in",{"_index":731,"title":{},"content":{"36":{"position":[[610,8]]}},"keywords":{}}],["quot;john"",{"_index":1154,"title":{},"content":{"62":{"position":[[152,17]]}},"keywords":{}}],["quot;leann",{"_index":711,"title":{},"content":{"36":{"position":[[266,12]]}},"keywords":{}}],["quot;name"",{"_index":710,"title":{},"content":{"36":{"position":[[248,17],[455,17]]},"61":{"position":[[1620,18]]},"63":{"position":[[419,19],[617,19]]}},"keywords":{}}],["quot;operators"",{"_index":1160,"title":{},"content":{"63":{"position":[[122,22]]}},"keywords":{}}],["quot;parent"",{"_index":885,"title":{},"content":{"53":{"position":[[418,18]]}},"keywords":{}}],["quot;post"",{"_index":1100,"title":{},"content":{"59":{"position":[[1512,17],[2198,17]]}},"keywords":{}}],["quot;posts"",{"_index":713,"title":{},"content":{"36":{"position":[[293,18],[499,18]]}},"keywords":{}}],["quot;query"",{"_index":819,"title":{},"content":{"47":{"position":[[233,20]]}},"keywords":{}}],["quot;street"",{"_index":1133,"title":{},"content":{"61":{"position":[[592,20]]}},"keywords":{}}],["quot;sunt",{"_index":715,"title":{},"content":{"36":{"position":[[335,10]]}},"keywords":{}}],["quot;tailcall"",{"_index":1106,"title":{},"content":{"59":{"position":[[2764,23],[3174,22]]}},"keywords":{}}],["quot;tailcall/1.0"",{"_index":1058,"title":{},"content":{"58":{"position":[[3197,25]]}},"keywords":{}}],["quot;title"",{"_index":714,"title":{},"content":{"36":{"position":[[316,18],[522,18],[591,18]]}},"keywords":{}}],["quot;us",{"_index":1108,"title":{},"content":{"59":{"position":[[3203,10]]}},"keywords":{}}],["quot;user"",{"_index":1131,"title":{},"content":{"61":{"position":[[552,18]]}},"keywords":{}}],["quot;userid"",{"_index":883,"title":{},"content":{"53":{"position":[[320,19]]},"59":{"position":[[1847,19]]},"60":{"position":[[452,19],[489,19]]}},"keywords":{}}],["quot;username"",{"_index":1161,"title":{},"content":{"63":{"position":[[453,21],[802,21]]}},"keywords":{}}],["quot;users"",{"_index":709,"title":{},"content":{"36":{"position":[[206,18]]},"61":{"position":[[1585,19]]}},"keywords":{}}],["quot;users","0","name"",{"_index":1142,"title":{},"content":{"61":{"position":[[1491,51]]}},"keywords":{}}],["quot;x",{"_index":1064,"title":{},"content":{"58":{"position":[[3714,7],[5484,8]]},"59":{"position":[[2735,7],[3145,7]]}},"keywords":{}}],["quot;your_api_key_here"",{"_index":949,"title":{},"content":{"57":{"position":[[2540,31],[2859,30]]}},"keywords":{}}],["quot;{{args.id}}"",{"_index":1103,"title":{},"content":{"59":{"position":[[1874,26]]}},"keywords":{}}],["quot;{{args.input}}"",{"_index":1104,"title":{},"content":{"59":{"position":[[2248,27]]}},"keywords":{}}],["quot;{{args.name}}"",{"_index":1110,"title":{},"content":{"59":{"position":[[3233,28]]}},"keywords":{}}],["quot;{{env.api_endpoint}}"",{"_index":892,"title":{},"content":{"54":{"position":[[145,33]]}},"keywords":{}}],["quot;{{value.userid}}"",{"_index":689,"title":{},"content":{"34":{"position":[[474,30]]},"35":{"position":[[150,31]]},"53":{"position":[[249,31]]},"59":{"position":[[3633,31],[3731,31]]}},"keywords":{}}],["rang",{"_index":769,"title":{},"content":{"44":{"position":[[314,5]]}},"keywords":{}}],["rate",{"_index":245,"title":{},"content":{"11":{"position":[[440,4]]},"24":{"position":[[98,4]]}},"keywords":{}}],["raw",{"_index":818,"title":{},"content":{"47":{"position":[[229,3]]}},"keywords":{}}],["reach",{"_index":857,"title":{},"content":{"48":{"position":[[1689,5]]},"58":{"position":[[1700,8]]}},"keywords":{}}],["react",{"_index":30,"title":{},"content":{"1":{"position":[[83,5]]}},"keywords":{}}],["readi",{"_index":788,"title":{},"content":{"46":{"position":[[38,6]]},"57":{"position":[[1771,5]]}},"keywords":{}}],["real",{"_index":611,"title":{},"content":{"30":{"position":[[610,4]]}},"keywords":{}}],["receipt",{"_index":772,"title":{},"content":{"44":{"position":[[488,7]]}},"keywords":{}}],["receiv",{"_index":601,"title":{},"content":{"30":{"position":[[167,8]]},"55":{"position":[[46,8]]},"57":{"position":[[1169,8],[5162,8]]}},"keywords":{}}],["recent",{"_index":281,"title":{},"content":{"12":{"position":[[697,6]]}},"keywords":{}}],["recommend",{"_index":797,"title":{},"content":{"46":{"position":[[883,9]]},"57":{"position":[[2013,11]]}},"keywords":{}}],["redirect",{"_index":1047,"title":{},"content":{"58":{"position":[[2391,10]]}},"keywords":{}}],["reduc",{"_index":325,"title":{"15":{"position":[[3,7]]}},"content":{"15":{"position":[[83,7]]},"34":{"position":[[94,8]]},"35":{"position":[[716,6]]},"46":{"position":[[844,6]]},"57":{"position":[[2177,7]]},"58":{"position":[[5033,8]]},"61":{"position":[[1768,8]]}},"keywords":{}}],["refer",{"_index":252,"title":{},"content":{"12":{"position":[[16,6],[803,9],[1304,9]]},"30":{"position":[[382,6]]},"31":{"position":[[421,5]]},"46":{"position":[[411,6]]},"54":{"position":[[247,6]]},"55":{"position":[[203,6]]},"57":{"position":[[522,6]]},"58":{"position":[[4128,6]]},"59":{"position":[[570,6],[828,6],[1286,6],[3495,5]]},"60":{"position":[[550,8]]}},"keywords":{}}],["registri",{"_index":150,"title":{},"content":{"8":{"position":[[371,9]]},"44":{"position":[[148,9],[194,8],[600,9]]},"46":{"position":[[90,9]]},"47":{"position":[[160,9]]}},"keywords":{}}],["regular",{"_index":57,"title":{},"content":{"3":{"position":[[123,7]]}},"keywords":{}}],["releas",{"_index":476,"title":{"23":{"position":[[11,8]]}},"content":{"22":{"position":[[463,8]]},"48":{"position":[[1068,9]]}},"keywords":{}}],["relev",{"_index":298,"title":{},"content":{"13":{"position":[[300,8]]}},"keywords":{}}],["reli",{"_index":480,"title":{},"content":{"22":{"position":[[556,4]]}},"keywords":{}}],["reliabl",{"_index":342,"title":{},"content":{"16":{"position":[[319,8]]},"17":{"position":[[279,11],[623,11],[823,11]]},"19":{"position":[[441,8]]},"22":{"position":[[233,11]]},"48":{"position":[[666,8]]}},"keywords":{}}],["remain",{"_index":289,"title":{},"content":{"13":{"position":[[35,7]]},"44":{"position":[[29,6]]},"48":{"position":[[519,7]]},"58":{"position":[[4681,7]]}},"keywords":{}}],["renam",{"_index":1113,"title":{},"content":{"60":{"position":[[182,6]]}},"keywords":{}}],["repellat",{"_index":718,"title":{},"content":{"36":{"position":[[357,8]]}},"keywords":{}}],["replac",{"_index":905,"title":{},"content":{"57":{"position":[[296,7]]},"63":{"position":[[1216,8]]}},"keywords":{}}],["repositori",{"_index":107,"title":{},"content":{"6":{"position":[[99,10]]},"44":{"position":[[215,10]]}},"keywords":{}}],["reprehenderit"",{"_index":722,"title":{},"content":{"36":{"position":[[402,19]]}},"keywords":{}}],["repres",{"_index":676,"title":{},"content":{"33":{"position":[[581,10]]},"52":{"position":[[5,10]]},"54":{"position":[[5,10]]},"59":{"position":[[1571,10]]},"61":{"position":[[1058,12]]}},"keywords":{}}],["represent",{"_index":826,"title":{},"content":{"48":{"position":[[89,14]]},"58":{"position":[[4493,15]]}},"keywords":{}}],["request",{"_index":189,"title":{},"content":{"9":{"position":[[457,8]]},"11":{"position":[[93,8],[227,8]]},"12":{"position":[[137,8],[599,8],[896,7]]},"13":{"position":[[126,7]]},"14":{"position":[[285,8]]},"15":{"position":[[176,8]]},"20":{"position":[[232,8]]},"29":{"position":[[17,7],[107,7]]},"30":{"position":[[60,7],[201,8],[238,8],[310,9],[423,7],[461,9],[529,7],[592,9],[705,7],[766,9],[969,9],[1135,9]]},"31":{"position":[[118,8]]},"32":{"position":[[640,7]]},"33":{"position":[[727,7]]},"34":{"position":[[61,8]]},"35":{"position":[[419,8],[737,8],[787,7]]},"44":{"position":[[508,7],[750,7]]},"45":{"position":[[133,7]]},"46":{"position":[[448,7],[497,8],[647,7],[865,8]]},"47":{"position":[[24,7],[88,8]]},"55":{"position":[[29,7]]},"57":{"position":[[3048,8]]},"58":{"position":[[1669,8],[2129,8],[2296,7],[3159,9],[3459,9],[3890,8]]},"59":{"position":[[470,7],[2338,7],[2417,7],[2510,7],[2810,7],[3033,8],[3381,8],[3442,8],[4000,8]]},"63":{"position":[[1088,7],[1264,8],[1627,8]]}},"keywords":{}}],["requir",{"_index":285,"title":{},"content":{"12":{"position":[[1148,8]]},"13":{"position":[[200,8]]},"18":{"position":[[94,8],[308,12]]},"19":{"position":[[492,7]]},"21":{"position":[[289,8]]},"22":{"position":[[41,8],[128,8],[363,8]]},"28":{"position":[[108,8]]},"45":{"position":[[68,8]]},"46":{"position":[[581,7]]},"57":{"position":[[1805,9],[2477,8]]}},"keywords":{}}],["resili",{"_index":415,"title":{},"content":{"19":{"position":[[820,9]]},"44":{"position":[[460,10]]},"45":{"position":[[208,10]]}},"keywords":{}}],["resolv",{"_index":216,"title":{},"content":{"9":{"position":[[1227,7]]},"25":{"position":[[679,9]]},"63":{"position":[[1063,8]]}},"keywords":{}}],["resourc",{"_index":618,"title":{},"content":{"30":{"position":[[793,10]]},"57":{"position":[[5776,9],[6309,8],[6472,10]]}},"keywords":{}}],["respect",{"_index":1072,"title":{},"content":{"58":{"position":[[4633,10]]}},"keywords":{}}],["respons",{"_index":238,"title":{},"content":{"11":{"position":[[242,11],[329,8]]},"12":{"position":[[730,9],[879,9],[977,9],[1117,8],[1179,8]]},"15":{"position":[[252,8]]},"30":{"position":[[826,8]]},"35":{"position":[[524,9],[669,8]]},"45":{"position":[[141,8]]},"57":{"position":[[1081,10],[1159,9],[5143,9],[6228,8]]},"58":{"position":[[2500,8],[2733,9]]},"62":{"position":[[51,8]]}},"keywords":{}}],["rest",{"_index":170,"title":{},"content":{"9":{"position":[[87,4],[152,4]]},"17":{"position":[[569,4]]},"59":{"position":[[88,4],[312,4],[375,4]]}},"keywords":{}}],["restrict",{"_index":1061,"title":{},"content":{"58":{"position":[[3623,8]]}},"keywords":{}}],["result",{"_index":259,"title":{},"content":{"12":{"position":[[181,8],[1070,7]]},"13":{"position":[[544,7]]},"14":{"position":[[329,8]]},"15":{"position":[[73,6],[233,6]]},"20":{"position":[[416,7]]},"30":{"position":[[282,9]]},"46":{"position":[[466,7],[623,9]]},"53":{"position":[[608,7]]},"58":{"position":[[4341,7]]},"61":{"position":[[1259,9]]},"63":{"position":[[1717,9]]}},"keywords":{}}],["retriev",{"_index":280,"title":{},"content":{"12":{"position":[[688,8],[917,8]]},"29":{"position":[[28,8]]},"44":{"position":[[554,9]]}},"keywords":{}}],["return",{"_index":197,"title":{},"content":{"9":{"position":[[700,8],[992,8]]},"11":{"position":[[315,9]]},"46":{"position":[[545,7]]},"61":{"position":[[1041,7]]}},"keywords":{}}],["reusabl",{"_index":387,"title":{},"content":{"18":{"position":[[378,11]]}},"keywords":{}}],["revert",{"_index":491,"title":{},"content":{"23":{"position":[[366,9],[407,9]]}},"keywords":{}}],["rfc",{"_index":1079,"title":{},"content":{"58":{"position":[[4989,4]]}},"keywords":{}}],["rhoncu",{"_index":16,"title":{},"content":{"0":{"position":[[107,7]]},"2":{"position":[[233,7],[412,7],[591,7],[770,7],[949,7],[1128,7],[1307,7],[1486,7],[1665,7],[1844,7],[2023,7],[2202,7],[2381,7],[2560,7],[2739,7],[2918,7]]}},"keywords":{}}],["rich",{"_index":315,"title":{},"content":{"14":{"position":[[11,4]]}},"keywords":{}}],["right",{"_index":641,"title":{},"content":{"31":{"position":[[251,5]]}},"keywords":{}}],["risk",{"_index":332,"title":{"16":{"position":[[13,5]]}},"content":{"16":{"position":[[84,6]]}},"keywords":{}}],["rivet",{"_index":563,"title":{},"content":{"25":{"position":[[838,8]]}},"keywords":{}}],["robust",{"_index":414,"title":{},"content":{"19":{"position":[[809,6]]},"45":{"position":[[515,6]]}},"keywords":{}}],["rollbacks.break",{"_index":850,"title":{},"content":{"48":{"position":[[1411,18]]}},"keywords":{}}],["rout",{"_index":239,"title":{},"content":{"11":{"position":[[258,7]]},"22":{"position":[[410,7]]},"58":{"position":[[1686,6],[1812,7]]}},"keywords":{}}],["run",{"_index":88,"title":{"33":{"position":[[0,7]]}},"content":{"5":{"position":[[100,7],[224,8]]},"6":{"position":[[125,7],[271,8]]},"8":{"position":[[381,3],[450,3],[758,7]]},"23":{"position":[[254,7]]},"26":{"position":[[12,3]]},"46":{"position":[[146,3]]},"48":{"position":[[882,3]]},"57":{"position":[[571,8],[5651,3],[5742,7],[6434,3]]}},"keywords":{}}],["runtim",{"_index":847,"title":{},"content":{"48":{"position":[[1351,8]]}},"keywords":{}}],["s",{"_index":126,"title":{},"content":{"7":{"position":[[157,1]]}},"keywords":{}}],["safeguard",{"_index":999,"title":{},"content":{"57":{"position":[[5719,9]]}},"keywords":{}}],["safeti",{"_index":849,"title":{},"content":{"48":{"position":[[1393,6]]}},"keywords":{}}],["same",{"_index":217,"title":{},"content":{"9":{"position":[[1262,4]]},"24":{"position":[[791,4]]},"44":{"position":[[40,4]]},"47":{"position":[[109,4]]},"48":{"position":[[932,4]]},"63":{"position":[[1753,5]]}},"keywords":{}}],["sampl",{"_index":653,"title":{},"content":{"32":{"position":[[10,6]]}},"keywords":{}}],["scenario",{"_index":268,"title":{"28":{"position":[[0,9]]}},"content":{"12":{"position":[[409,8]]},"19":{"position":[[189,10]]},"59":{"position":[[3273,9]]}},"keywords":{}}],["schema",{"_index":169,"title":{"40":{"position":[[2,7]]}},"content":{"9":{"position":[[71,6],[328,7],[466,6],[1209,6],[1248,6],[1350,6]]},"26":{"position":[[344,6]]},"32":{"position":[[56,6],[440,6]]},"34":{"position":[[312,6]]},"38":{"position":[[312,6]]},"40":{"position":[[39,6],[110,6],[294,6]]},"42":{"position":[[85,6]]},"44":{"position":[[141,6],[187,6],[392,6]]},"45":{"position":[[117,6]]},"57":{"position":[[43,6],[192,6],[624,6],[1277,6],[1836,6],[2486,6],[3566,6],[3745,6],[4098,6],[4312,7],[4372,7],[4617,6],[5064,6],[5342,6],[5904,6]]},"58":{"position":[[220,6],[478,6],[704,6],[944,6],[1188,6],[1447,6],[1843,6],[2528,6],[2743,6],[2971,6],[3169,6],[3653,6],[4373,6],[5121,6],[5424,6]]},"60":{"position":[[122,7],[223,6],[395,7],[639,7],[705,6],[977,7]]},"61":{"position":[[124,7],[158,6],[295,7],[303,6],[846,6],[862,6],[1001,7],[1729,6]]},"62":{"position":[[68,7],[84,6],[346,6]]},"63":{"position":[[202,6],[1277,6],[1727,6],[1825,6]]}},"keywords":{}}],["screen",{"_index":296,"title":{},"content":{"13":{"position":[[216,7],[331,7]]}},"keywords":{}}],["script",{"_index":129,"title":{},"content":{"7":{"position":[[223,7]]}},"keywords":{}}],["seamless",{"_index":812,"title":{},"content":{"46":{"position":[[1333,8]]}},"keywords":{}}],["second",{"_index":284,"title":{},"content":{"12":{"position":[[835,7]]},"57":{"position":[[6068,8]]},"58":{"position":[[402,7],[871,7],[1109,7],[2456,7],[2689,7],[2894,7]]}},"keywords":{}}],["secret",{"_index":946,"title":{},"content":{"57":{"position":[[2410,8]]}},"keywords":{}}],["section",{"_index":632,"title":{},"content":{"30":{"position":[[1201,9]]},"32":{"position":[[765,8]]},"46":{"position":[[1223,9]]}},"keywords":{}}],["secur",{"_index":333,"title":{},"content":{"16":{"position":[[75,8],[257,8]]},"44":{"position":[[447,8],[743,6]]},"45":{"position":[[301,8],[526,6]]},"57":{"position":[[2164,8],[3114,8],[4028,8],[5794,8],[6349,8]]},"58":{"position":[[1824,8],[3604,8],[4088,8]]}},"keywords":{}}],["see",{"_index":573,"title":{},"content":{"26":{"position":[[208,3]]},"36":{"position":[[153,3]]}},"keywords":{}}],["seek",{"_index":985,"title":{},"content":{"57":{"position":[[4511,7]]}},"keywords":{}}],["seen",{"_index":1137,"title":{},"content":{"61":{"position":[[937,5]]}},"keywords":{}}],["segment",{"_index":1073,"title":{},"content":{"58":{"position":[[4713,9]]},"59":{"position":[[1041,9]]}},"keywords":{}}],["semant",{"_index":828,"title":{},"content":{"48":{"position":[[158,8],[586,8]]}},"keywords":{}}],["send",{"_index":258,"title":{},"content":{"12":{"position":[[129,7],[581,4]]},"13":{"position":[[175,7]]},"14":{"position":[[277,7]]},"29":{"position":[[10,4]]},"59":{"position":[[1980,4],[2325,5]]}},"keywords":{}}],["sens",{"_index":538,"title":{},"content":{"25":{"position":[[315,5]]},"48":{"position":[[1635,6]]}},"keywords":{}}],["sensit",{"_index":334,"title":{},"content":{"16":{"position":[[134,9]]},"57":{"position":[[3212,9]]}},"keywords":{}}],["sent",{"_index":814,"title":{},"content":{"47":{"position":[[66,4]]},"57":{"position":[[4884,4]]},"58":{"position":[[911,4],[1412,4],[2336,4],[2938,4]]}},"keywords":{}}],["separ",{"_index":278,"title":{},"content":{"12":{"position":[[590,8]]},"17":{"position":[[79,8],[346,8]]},"40":{"position":[[233,9]]},"41":{"position":[[366,9]]},"46":{"position":[[638,8]]}},"keywords":{}}],["seri",{"_index":1163,"title":{},"content":{"63":{"position":[[553,6]]}},"keywords":{}}],["serv",{"_index":764,"title":{},"content":{"44":{"position":[[203,6]]},"48":{"position":[[640,6]]},"59":{"position":[[20,6]]}},"keywords":{}}],["server",{"_index":148,"title":{"57":{"position":[[0,8]]}},"content":{"8":{"position":[[278,7],[511,7],[552,6]]},"9":{"position":[[1143,7]]},"11":{"position":[[167,6]]},"13":{"position":[[160,6]]},"16":{"position":[[511,6]]},"26":{"position":[[51,6],[321,6]]},"30":{"position":[[759,6],[786,6],[849,6],[927,6]]},"34":{"position":[[117,6]]},"41":{"position":[[40,7],[109,6],[206,7]]},"54":{"position":[[53,7],[87,6],[334,6]]},"55":{"position":[[71,7],[279,6]]},"57":{"position":[[4,7],[87,6],[130,6],[3460,7],[4244,6],[4530,6],[5685,7],[6181,7],[6465,6]]},"58":{"position":[[77,6],[1635,6],[4300,7]]},"59":{"position":[[447,6],[672,7],[1997,7],[2869,6]]}},"keywords":{}}],["server"",{"_index":1088,"title":{},"content":{"58":{"position":[[5493,13]]},"59":{"position":[[2743,13],[3153,13]]}},"keywords":{}}],["server'",{"_index":943,"title":{},"content":{"57":{"position":[[2302,8]]}},"keywords":{}}],["server(...[serverset",{"_index":902,"title":{},"content":{"57":{"position":[[199,32]]}},"keywords":{}}],["server(enablecachecontrolhead",{"_index":928,"title":{},"content":{"57":{"position":[[1284,33]]}},"keywords":{}}],["server(enableintrospect",{"_index":970,"title":{},"content":{"57":{"position":[[3752,28]]}},"keywords":{}}],["server(enablequeryvalid",{"_index":986,"title":{},"content":{"57":{"position":[[4624,30]]}},"keywords":{}}],["server(enableresponsevalid",{"_index":993,"title":{},"content":{"57":{"position":[[5349,33]]}},"keywords":{}}],["server(globalresponsetimeout",{"_index":1003,"title":{},"content":{"57":{"position":[[5911,30]]}},"keywords":{}}],["server(port",{"_index":912,"title":{},"content":{"57":{"position":[[631,13],[1843,13]]}},"keywords":{}}],["server(var",{"_index":947,"title":{},"content":{"57":{"position":[[2493,13]]}},"keywords":{}}],["serverset",{"_index":906,"title":{},"content":{"57":{"position":[[304,22],[449,14]]}},"keywords":{}}],["servic",{"_index":242,"title":{},"content":{"11":{"position":[[298,7],[355,7],[545,7],[646,9]]},"17":{"position":[[96,7]]},"21":{"position":[[69,7]]},"23":{"position":[[98,9],[123,8]]},"24":{"position":[[401,7]]},"30":{"position":[[989,7]]},"44":{"position":[[20,8],[364,7]]},"57":{"position":[[1208,9],[3142,8],[5189,9],[6394,7]]},"58":{"position":[[3438,8],[3558,9],[3954,9],[4066,9]]}},"keywords":{}}],["set",{"_index":534,"title":{},"content":{"25":{"position":[[217,4],[544,4]]},"38":{"position":[[249,9]]},"54":{"position":[[69,3],[341,9]]},"57":{"position":[[80,3],[414,8],[717,3],[1238,3],[1272,4],[2827,3],[3393,7],[3718,7],[4746,3],[5213,7],[5295,7],[5445,7],[6037,3],[6209,3]]},"58":{"position":[[110,8],[1603,7],[2035,3],[3819,3],[4524,3],[5241,9]]}},"keywords":{}}],["setup",{"_index":650,"title":{},"content":{"31":{"position":[[486,5]]},"57":{"position":[[1829,6]]}},"keywords":{}}],["sha",{"_index":821,"title":{},"content":{"48":{"position":[[4,3]]}},"keywords":{}}],["sha256",{"_index":805,"title":{},"content":{"46":{"position":[[1105,6]]}},"keywords":{}}],["shape",{"_index":774,"title":{},"content":{"44":{"position":[[643,5]]}},"keywords":{}}],["share",{"_index":864,"title":{},"content":{"50":{"position":[[161,6]]},"57":{"position":[[2428,6]]}},"keywords":{}}],["shift",{"_index":547,"title":{},"content":{"25":{"position":[[503,5]]}},"keywords":{}}],["show",{"_index":1157,"title":{},"content":{"62":{"position":[[443,4]]}},"keywords":{}}],["side",{"_index":288,"title":{},"content":{"13":{"position":[[30,4],[539,4]]},"14":{"position":[[75,5],[143,4]]},"15":{"position":[[53,4]]},"16":{"position":[[43,4],[518,4]]},"61":{"position":[[1122,4]]}},"keywords":{}}],["signific",{"_index":376,"title":{},"content":{"18":{"position":[[105,11]]},"19":{"position":[[500,11]]},"35":{"position":[[32,11],[830,11]]}},"keywords":{}}],["similar",{"_index":155,"title":{},"content":{"8":{"position":[[582,7]]},"34":{"position":[[53,7]]}},"keywords":{}}],["simpli",{"_index":52,"title":{},"content":{"3":{"position":[[61,6]]}},"keywords":{}}],["simplic",{"_index":1150,"title":{},"content":{"61":{"position":[[1823,11]]}},"keywords":{}}],["simplifi",{"_index":932,"title":{},"content":{"57":{"position":[[1537,10]]},"61":{"position":[[21,10],[1099,11]]}},"keywords":{}}],["singl",{"_index":180,"title":{},"content":{"9":{"position":[[313,6]]},"11":{"position":[[189,6]]},"12":{"position":[[1110,6]]},"35":{"position":[[337,6]]},"46":{"position":[[441,6]]},"59":{"position":[[3458,6],[3918,6]]}},"keywords":{}}],["sit",{"_index":6,"title":{},"content":{"0":{"position":[[18,3],[170,3]]},"2":{"position":[[144,3],[296,3],[323,3],[475,3],[502,3],[654,3],[681,3],[833,3],[860,3],[1012,3],[1039,3],[1191,3],[1218,3],[1370,3],[1397,3],[1549,3],[1576,3],[1728,3],[1755,3],[1907,3],[1934,3],[2086,3],[2113,3],[2265,3],[2292,3],[2444,3],[2471,3],[2623,3],[2650,3],[2802,3],[2829,3],[2981,3]]},"17":{"position":[[336,4]]}},"keywords":{}}],["situat",{"_index":622,"title":{},"content":{"30":{"position":[[900,9]]},"46":{"position":[[423,9]]},"57":{"position":[[4452,10]]}},"keywords":{}}],["size",{"_index":47,"title":{},"content":{"2":{"position":[[103,4]]},"14":{"position":[[367,4]]},"58":{"position":[[5282,4]]}},"keywords":{}}],["skill",{"_index":533,"title":{},"content":{"25":{"position":[[211,5],[538,5]]}},"keywords":{}}],["skip",{"_index":102,"title":{},"content":{"5":{"position":[[306,4]]}},"keywords":{}}],["slower",{"_index":330,"title":{},"content":{"15":{"position":[[245,6]]},"30":{"position":[[819,6]]}},"keywords":{}}],["small",{"_index":419,"title":{},"content":{"20":{"position":[[126,5]]}},"keywords":{}}],["social",{"_index":274,"title":{},"content":{"12":{"position":[[529,6]]}},"keywords":{}}],["softwar",{"_index":568,"title":{},"content":{"25":{"position":[[909,8]]}},"keywords":{}}],["solut",{"_index":307,"title":{},"content":{"13":{"position":[[435,8]]},"18":{"position":[[80,8],[194,8],[407,8]]},"19":{"position":[[103,8],[238,8],[314,8],[588,8]]},"25":{"position":[[462,9]]},"30":{"position":[[1145,9]]}},"keywords":{}}],["solv",{"_index":354,"title":{"34":{"position":[[0,7]]}},"content":{"17":{"position":[[24,5]]},"22":{"position":[[305,5]]},"46":{"position":[[756,6]]}},"keywords":{}}],["sourc",{"_index":840,"title":{},"content":{"48":{"position":[[990,6]]},"60":{"position":[[343,6],[590,7]]}},"keywords":{}}],["space",{"_index":749,"title":{},"content":{"40":{"position":[[248,6]]},"41":{"position":[[381,6]]}},"keywords":{}}],["spaghetti",{"_index":448,"title":{},"content":{"21":{"position":[[134,9]]}},"keywords":{}}],["spec",{"_index":737,"title":{},"content":{"38":{"position":[[42,5],[338,5]]},"40":{"position":[[65,5]]},"41":{"position":[[186,6]]},"44":{"position":[[103,4]]},"45":{"position":[[30,6]]},"48":{"position":[[1139,4]]}},"keywords":{}}],["special",{"_index":375,"title":{"18":{"position":[[10,12]]}},"content":{"18":{"position":[[68,11]]}},"keywords":{}}],["specif",{"_index":104,"title":{"45":{"position":[[12,13]]}},"content":{"5":{"position":[[340,8]]},"17":{"position":[[131,8]]},"18":{"position":[[299,8]]},"30":{"position":[[74,8]]},"41":{"position":[[80,8]]},"45":{"position":[[16,13],[175,10]]},"46":{"position":[[21,13],[60,13],[231,13],[1138,13]]},"48":{"position":[[37,13],[111,14],[182,13],[911,13],[1241,13],[1447,13]]},"53":{"position":[[655,8]]},"57":{"position":[[332,8],[1658,8],[5864,8]]},"58":{"position":[[4699,8]]},"59":{"position":[[1131,8]]},"63":{"position":[[690,12],[1510,8],[1894,8]]}},"keywords":{}}],["specifi",{"_index":185,"title":{},"content":{"9":{"position":[[425,7],[573,7],[1189,7]]},"40":{"position":[[209,7]]},"41":{"position":[[342,7]]},"55":{"position":[[332,9]]},"57":{"position":[[587,10],[4222,9],[4606,10],[5272,10]]},"58":{"position":[[184,10],[1737,10],[3367,9],[3493,10],[4264,7],[5221,9]]},"59":{"position":[[351,7],[612,10],[655,9],[1395,10],[2560,10]]},"61":{"position":[[1349,7],[1471,7]]},"63":{"position":[[1126,9]]}},"keywords":{}}],["specification'",{"_index":838,"title":{},"content":{"48":{"position":[[570,15]]}},"keywords":{}}],["specul",{"_index":417,"title":{"20":{"position":[[3,11]]}},"content":{},"keywords":{}}],["ssl",{"_index":122,"title":{},"content":{"7":{"position":[[73,3]]}},"keywords":{}}],["stabil",{"_index":846,"title":{},"content":{"48":{"position":[[1301,10],[1581,9]]}},"keywords":{}}],["stabl",{"_index":834,"title":{},"content":{"48":{"position":[[348,6]]}},"keywords":{}}],["stage",{"_index":642,"title":{},"content":{"31":{"position":[[278,6]]},"57":{"position":[[3899,7]]}},"keywords":{}}],["standard",{"_index":211,"title":{},"content":{"9":{"position":[[1090,8]]},"18":{"position":[[181,8],[358,15]]},"24":{"position":[[494,8]]},"45":{"position":[[488,10]]},"46":{"position":[[893,8]]},"57":{"position":[[832,8]]}},"keywords":{}}],["start",{"_index":142,"title":{"41":{"position":[[0,6]]}},"content":{"8":{"position":[[76,9],[532,6]]},"26":{"position":[[41,5],[140,5],[328,6]]},"41":{"position":[[4,5],[196,5],[244,5],[301,5],[419,5]]},"54":{"position":[[94,7]]}},"keywords":{}}],["state",{"_index":790,"title":{},"content":{"46":{"position":[[205,6]]},"61":{"position":[[477,6]]}},"keywords":{}}],["statement",{"_index":225,"title":{"10":{"position":[[8,9]]}},"content":{},"keywords":{}}],["static",{"_index":1101,"title":{},"content":{"59":{"position":[[1642,6],[2026,6]]}},"keywords":{}}],["steer",{"_index":918,"title":{},"content":{"57":{"position":[[848,8]]}},"keywords":{}}],["step",{"_index":117,"title":{},"content":{"7":{"position":[[11,5]]},"8":{"position":[[56,5]]},"19":{"position":[[213,5],[547,5]]},"46":{"position":[[136,6],[1244,4]]}},"keywords":{}}],["store",{"_index":863,"title":{},"content":{"50":{"position":[[122,5]]},"57":{"position":[[2379,5],[3234,6]]}},"keywords":{}}],["strain",{"_index":1000,"title":{},"content":{"57":{"position":[[5769,6]]}},"keywords":{}}],["streamlin",{"_index":1125,"title":{},"content":{"61":{"position":[[214,12],[1740,10]]}},"keywords":{}}],["street",{"_index":1127,"title":{},"content":{"61":{"position":[[447,7],[1083,7]]}},"keywords":{}}],["stress",{"_index":617,"title":{},"content":{"30":{"position":[[776,9]]}},"keywords":{}}],["string",{"_index":201,"title":{},"content":{"9":{"position":[[753,7],[771,7],[786,7],[1046,7],[1060,7]]},"12":{"position":[[767,7],[781,7],[1013,7],[1028,7],[1268,7],[1282,7]]},"32":{"position":[[236,7],[254,7],[269,7],[284,6],[300,6],[350,7],[364,7]]},"34":{"position":[[372,7],[386,7]]},"52":{"position":[[88,7],[102,7]]},"53":{"position":[[147,7],[161,7]]},"59":{"position":[[3083,8],[3545,7]]},"61":{"position":[[389,7],[404,7],[455,7],[469,7],[484,7],[924,6],[1051,6]]},"62":{"position":[[200,6]]},"63":{"position":[[373,6],[975,7],[1353,6],[1384,6]]}},"keywords":{}}],["string>",{"_index":870,"title":{},"content":{"50":{"position":[[356,10],[391,10]]}},"keywords":{}}],["structur",{"_index":767,"title":{},"content":{"44":{"position":[[274,11]]},"48":{"position":[[229,10]]},"57":{"position":[[285,10],[4147,11]]},"61":{"position":[[37,10]]}},"keywords":{}}],["subject",{"_index":509,"title":{},"content":{"24":{"position":[[425,10]]}},"keywords":{}}],["subsequ",{"_index":631,"title":{},"content":{"30":{"position":[[1190,10]]}},"keywords":{}}],["substanti",{"_index":681,"title":{},"content":{"34":{"position":[[80,13]]}},"keywords":{}}],["substitut",{"_index":1093,"title":{},"content":{"59":{"position":[[1085,10],[2070,10]]}},"keywords":{}}],["succe",{"_index":572,"title":{},"content":{"26":{"position":[[187,9]]}},"keywords":{}}],["such",{"_index":26,"title":{},"content":{"1":{"position":[[49,4]]},"3":{"position":[[225,4]]},"9":{"position":[[1135,4]]},"11":{"position":[[416,4]]},"16":{"position":[[157,4]]},"17":{"position":[[561,4]]},"20":{"position":[[152,4]]},"22":{"position":[[163,4]]},"24":{"position":[[90,4]]},"35":{"position":[[349,4]]},"38":{"position":[[259,4]]},"45":{"position":[[219,4]]},"46":{"position":[[783,4]]},"57":{"position":[[1602,4],[4564,4]]},"59":{"position":[[3930,4]]}},"keywords":{}}],["suffer",{"_index":661,"title":{},"content":{"32":{"position":[[573,7]]}},"keywords":{}}],["suggest",{"_index":542,"title":{},"content":{"25":{"position":[[394,7]]}},"keywords":{}}],["suitabl",{"_index":1175,"title":{},"content":{"63":{"position":[[1877,8]]}},"keywords":{}}],["summari",{"_index":41,"title":{},"content":{"2":{"position":[[12,7]]}},"keywords":{}}],["support",{"_index":22,"title":{"22":{"position":[[10,7]]}},"content":{"1":{"position":[[11,7]]},"3":{"position":[[360,8]]},"22":{"position":[[442,7],[579,8]]},"61":{"position":[[1314,8]]}},"keywords":{}}],["sure",{"_index":488,"title":{},"content":{"23":{"position":[[177,4]]},"47":{"position":[[49,4]]},"57":{"position":[[4867,4]]},"62":{"position":[[300,4]]}},"keywords":{}}],["suscept",{"_index":391,"title":{},"content":{"19":{"position":[[71,11]]}},"keywords":{}}],["syntax",{"_index":832,"title":{},"content":{"48":{"position":[[312,7],[403,7]]}},"keywords":{}}],["system",{"_index":121,"title":{},"content":{"7":{"position":[[59,7]]},"8":{"position":[[121,7]]},"17":{"position":[[658,7]]},"22":{"position":[[269,6]]},"35":{"position":[[494,6],[622,6]]},"44":{"position":[[535,6]]},"45":{"position":[[533,7]]},"48":{"position":[[778,6]]},"57":{"position":[[5857,6]]}},"keywords":{}}],["tab",{"_index":584,"title":{},"content":{"26":{"position":[[485,3]]}},"keywords":{}}],["tackl",{"_index":588,"title":{"27":{"position":[[0,8]]}},"content":{},"keywords":{}}],["tag",{"_index":73,"title":{},"content":{"3":{"position":[[369,4]]}},"keywords":{}}],["tailcal",{"_index":87,"title":{"33":{"position":[[12,8]]},"50":{"position":[[11,9]]}},"content":{"5":{"position":[[88,8],[189,8]]},"6":{"position":[[90,8],[215,8],[236,8],[366,8]]},"7":{"position":[[201,8],[270,11]]},"8":{"position":[[23,8],[184,8],[333,8],[389,8],[543,8]]},"25":{"position":[[639,9]]},"26":{"position":[[246,8]]},"31":{"position":[[4,8],[376,8]]},"32":{"position":[[740,8]]},"33":{"position":[[24,8],[206,8]]},"34":{"position":[[135,8]]},"35":{"position":[[188,8]]},"41":{"position":[[31,8]]},"42":{"position":[[34,8]]},"44":{"position":[[166,8]]},"46":{"position":[[81,8]]},"50":{"position":[[3,9]]},"55":{"position":[[62,8]]},"57":{"position":[[160,8],[554,8],[750,8],[1031,8],[1181,8],[1463,9],[1795,9],[2931,8],[3320,8],[5027,8]]},"58":{"position":[[4890,8]]},"59":{"position":[[2891,9],[3769,8]]}},"keywords":{}}],["tailcall/bin",{"_index":137,"title":{},"content":{"7":{"position":[[383,15]]}},"keywords":{}}],["tailcallhq/tailcal",{"_index":93,"title":{},"content":{"5":{"position":[[157,19]]},"6":{"position":[[182,19]]}},"keywords":{}}],["tailcallrc.graphql",{"_index":759,"title":{},"content":{"42":{"position":[[232,19]]}},"keywords":{}}],["tailor",{"_index":385,"title":{},"content":{"18":{"position":[[283,8]]},"57":{"position":[[356,8]]}},"keywords":{}}],["take",{"_index":328,"title":{},"content":{"15":{"position":[[214,4]]},"17":{"position":[[730,4]]},"57":{"position":[[6108,6]]},"61":{"position":[[1169,4]]},"63":{"position":[[1450,4]]}},"keywords":{}}],["taken",{"_index":397,"title":{},"content":{"19":{"position":[[227,6]]}},"keywords":{}}],["tap",{"_index":109,"title":{},"content":{"6":{"position":[[178,3]]},"34":{"position":[[233,3]]}},"keywords":{}}],["target",{"_index":1046,"title":{},"content":{"58":{"position":[[2304,9]]},"63":{"position":[[703,9]]}},"keywords":{}}],["task",{"_index":243,"title":{},"content":{"11":{"position":[[410,5]]}},"keywords":{}}],["tc",{"_index":96,"title":{},"content":{"5":{"position":[[233,2]]},"6":{"position":[[280,2]]},"8":{"position":[[766,2]]},"26":{"position":[[137,2]]},"33":{"position":[[107,2],[349,2]]},"38":{"position":[[149,2]]},"39":{"position":[[76,2]]},"40":{"position":[[99,2],[283,2]]},"41":{"position":[[241,2],[416,2]]},"42":{"position":[[125,2]]}},"keywords":{}}],["tcp",{"_index":1053,"title":{},"content":{"58":{"position":[[2915,3]]}},"keywords":{}}],["tcpkeepal",{"_index":1052,"title":{},"content":{"58":{"position":[[2868,13]]}},"keywords":{}}],["team",{"_index":541,"title":{},"content":{"25":{"position":[[357,6],[441,5],[564,5]]}},"keywords":{}}],["technic",{"_index":560,"title":{},"content":{"25":{"position":[[792,9]]}},"keywords":{}}],["techniqu",{"_index":679,"title":{},"content":{"34":{"position":[[25,9]]},"46":{"position":[[772,10]]}},"keywords":{}}],["tell",{"_index":668,"title":{},"content":{"33":{"position":[[187,5]]},"60":{"position":[[509,5],[915,5]]}},"keywords":{}}],["templat",{"_index":904,"title":{},"content":{"57":{"position":[[275,9]]},"59":{"position":[[1072,9],[1672,8],[2058,8],[2930,9]]}},"keywords":{}}],["tempor",{"_index":17,"title":{},"content":{"0":{"position":[[121,6]]},"2":{"position":[[247,6],[426,6],[605,6],[784,6],[963,6],[1142,6],[1321,6],[1500,6],[1679,6],[1858,6],[2037,6],[2216,6],[2395,6],[2574,6],[2753,6],[2932,6]]},"36":{"position":[[629,7]]}},"keywords":{}}],["termin",{"_index":91,"title":{},"content":{"5":{"position":[[138,9]]},"6":{"position":[[163,9]]},"57":{"position":[[5667,10],[6163,10]]}},"keywords":{}}],["test",{"_index":403,"title":{"36":{"position":[[0,4]]}},"content":{"19":{"position":[[342,7],[372,8],[386,8],[411,8]]},"20":{"position":[[376,7]]},"36":{"position":[[0,4]]},"57":{"position":[[1570,8]]}},"keywords":{}}],["text",{"_index":831,"title":{},"content":{"48":{"position":[[304,4]]}},"keywords":{}}],["textual",{"_index":825,"title":{},"content":{"48":{"position":[[81,7]]}},"keywords":{}}],["that'",{"_index":449,"title":{},"content":{"21":{"position":[[149,6]]},"24":{"position":[[593,6]]}},"keywords":{}}],["that’",{"_index":815,"title":{},"content":{"47":{"position":[[119,6]]}},"keywords":{}}],["therebi",{"_index":705,"title":{},"content":{"35":{"position":[[892,7]]},"61":{"position":[[1091,7]]}},"keywords":{}}],["therefor",{"_index":346,"title":{},"content":{"16":{"position":[[432,9]]},"30":{"position":[[1011,10]]},"48":{"position":[[508,10]]}},"keywords":{}}],["thereof",{"_index":464,"title":{"22":{"position":[[24,9]]}},"content":{},"keywords":{}}],["thing",{"_index":522,"title":{},"content":{"24":{"position":[[796,6]]}},"keywords":{}}],["think",{"_index":888,"title":{},"content":{"53":{"position":[[563,5]]}},"keywords":{}}],["thorough",{"_index":431,"title":{},"content":{"20":{"position":[[345,8]]}},"keywords":{}}],["thoroughli",{"_index":402,"title":{},"content":{"19":{"position":[[331,10]]}},"keywords":{}}],["those",{"_index":580,"title":{},"content":{"26":{"position":[[417,5]]}},"keywords":{}}],["thousand",{"_index":613,"title":{},"content":{"30":{"position":[[639,9],[735,9]]}},"keywords":{}}],["three",{"_index":762,"title":{},"content":{"44":{"position":[[65,5]]}},"keywords":{}}],["throttl",{"_index":500,"title":{},"content":{"24":{"position":[[129,11]]},"45":{"position":[[227,10]]}},"keywords":{}}],["through",{"_index":233,"title":{},"content":{"11":{"position":[[123,7]]},"31":{"position":[[474,7]]},"58":{"position":[[1642,7],[2190,7]]}},"keywords":{}}],["thu",{"_index":787,"title":{},"content":{"45":{"position":[[499,4]]},"58":{"position":[[4568,5]]},"60":{"position":[[985,4]]}},"keywords":{}}],["tidi",{"_index":1146,"title":{},"content":{"61":{"position":[[1716,4]]}},"keywords":{}}],["time",{"_index":329,"title":{},"content":{"15":{"position":[[224,4]]},"20":{"position":[[439,4]]},"30":{"position":[[835,6]]},"48":{"position":[[937,4]]},"58":{"position":[[394,4],[863,4],[1101,4],[2448,4],[2516,6],[2681,4],[2886,4]]},"62":{"position":[[287,4]]}},"keywords":{}}],["timelin",{"_index":271,"title":{},"content":{"12":{"position":[[464,8]]}},"keywords":{}}],["timeout",{"_index":1008,"title":{},"content":{"57":{"position":[[6237,8]]},"58":{"position":[[135,9],[2660,8]]}},"keywords":{}}],["tini",{"_index":458,"title":{},"content":{"21":{"position":[[277,4]]}},"keywords":{}}],["tip",{"_index":27,"title":{},"content":{"1":{"position":[[62,3]]},"57":{"position":[[804,3],[1939,3],[3057,3],[3825,3],[4813,3],[5426,3],[6189,3]]},"58":{"position":[[4651,3]]}},"keywords":{}}],["titl",{"_index":208,"title":{},"content":{"9":{"position":[[1039,6]]},"12":{"position":[[760,6],[1261,6]]},"32":{"position":[[343,6]]},"34":{"position":[[365,6]]},"36":{"position":[[65,5],[130,5]]},"47":{"position":[[270,5]]},"52":{"position":[[81,6]]},"53":{"position":[[140,6]]}},"keywords":{}}],["togeth",{"_index":279,"title":{},"content":{"12":{"position":[[648,8]]},"36":{"position":[[737,9]]}},"keywords":{}}],["tool",{"_index":372,"title":{},"content":{"17":{"position":[[962,4]]},"31":{"position":[[29,4]]},"57":{"position":[[1986,4],[3612,5]]}},"keywords":{}}],["total",{"_index":603,"title":{},"content":{"30":{"position":[[297,5],[586,5]]}},"keywords":{}}],["touch",{"_index":445,"title":{},"content":{"21":{"position":[[54,8]]}},"keywords":{}}],["toward",{"_index":917,"title":{},"content":{"57":{"position":[[820,7]]}},"keywords":{}}],["transfer",{"_index":543,"title":{},"content":{"25":{"position":[[402,12]]}},"keywords":{}}],["transform",{"_index":1124,"title":{},"content":{"61":{"position":[[178,14]]},"63":{"position":[[167,15],[1295,14]]}},"keywords":{}}],["transmit",{"_index":924,"title":{},"content":{"57":{"position":[[1043,8]]}},"keywords":{}}],["travers",{"_index":1136,"title":{},"content":{"61":{"position":[[776,9]]}},"keywords":{}}],["tri",{"_index":586,"title":{},"content":{"26":{"position":[[509,3]]},"36":{"position":[[11,3]]}},"keywords":{}}],["trigger",{"_index":662,"title":{},"content":{"32":{"position":[[618,7]]},"33":{"position":[[512,7],[702,10]]},"39":{"position":[[10,8]]}},"keywords":{}}],["true",{"_index":929,"title":{},"content":{"57":{"position":[[1318,5],[3737,7],[4594,4],[5383,5]]},"60":{"position":[[886,5],[909,5]]}},"keywords":{}}],["truncat",{"_index":44,"title":{},"content":{"2":{"position":[[60,8]]}},"keywords":{}}],["tune",{"_index":901,"title":{},"content":{"57":{"position":[[155,4]]}},"keywords":{}}],["turn",{"_index":443,"title":{},"content":{"21":{"position":[[23,5]]},"57":{"position":[[3970,7]]}},"keywords":{}}],["tweak",{"_index":692,"title":{},"content":{"35":{"position":[[44,6]]}},"keywords":{}}],["two",{"_index":277,"title":{},"content":{"12":{"position":[[586,3],[611,3],[1089,3]]},"63":{"position":[[221,3]]}},"keywords":{}}],["type",{"_index":193,"title":{},"content":{"9":{"position":[[558,4],[679,4],[726,4],[812,4],[971,4],[1018,4]]},"11":{"position":[[219,4]]},"12":{"position":[[740,4],[987,4],[1241,4]]},"32":{"position":[[148,4],[209,4],[309,4]]},"34":{"position":[[331,4]]},"39":{"position":[[48,5]]},"40":{"position":[[71,5]]},"51":{"position":[[121,4]]},"52":{"position":[[61,4],[261,5]]},"53":{"position":[[45,4],[106,4],[457,5],[556,6]]},"54":{"position":[[102,4]]},"55":{"position":[[79,4]]},"57":{"position":[[2608,4],[3660,6]]},"59":{"position":[[111,4],[255,5],[690,4],[935,4],[1193,4],[1446,4],[1761,4],[2132,4],[2635,4],[3055,4],[3518,4]]},"60":{"position":[[417,4],[851,4]]},"61":{"position":[[327,4],[362,4],[432,4],[494,4],[704,5],[886,4],[971,5],[1269,4],[1411,4],[1543,4]]},"62":{"position":[[108,4],[182,4],[393,4]]},"63":{"position":[[230,5],[262,4],[304,4],[347,4],[382,4],[1327,4],[1362,4]]}},"keywords":{}}],["typescript",{"_index":865,"title":{},"content":{"50":{"position":[[236,10]]}},"keywords":{}}],["typic",{"_index":228,"title":{},"content":{"11":{"position":[[15,7]]},"17":{"position":[[326,9]]},"20":{"position":[[23,9],[317,9]]},"28":{"position":[[220,9]]},"34":{"position":[[188,7]]},"57":{"position":[[866,7]]}},"keywords":{}}],["ultrici",{"_index":14,"title":{},"content":{"0":{"position":[[90,10]]},"2":{"position":[[216,10],[395,10],[574,10],[753,10],[932,10],[1111,10],[1290,10],[1469,10],[1648,10],[1827,10],[2006,10],[2185,10],[2364,10],[2543,10],[2722,10],[2901,10]]}},"keywords":{}}],["uncov",{"_index":674,"title":{},"content":{"33":{"position":[[476,8]]}},"keywords":{}}],["undeni",{"_index":529,"title":{},"content":{"25":{"position":[[95,10]]}},"keywords":{}}],["under",{"_index":297,"title":{},"content":{"13":{"position":[[228,5]]}},"keywords":{}}],["underli",{"_index":261,"title":{},"content":{"12":{"position":[[245,10]]},"17":{"position":[[1053,10]]},"48":{"position":[[211,10]]},"60":{"position":[[327,10],[574,10]]}},"keywords":{}}],["underpin",{"_index":1089,"title":{},"content":{"59":{"position":[[71,11],[295,11]]}},"keywords":{}}],["understand",{"_index":651,"title":{"35":{"position":[[0,13]]}},"content":{"31":{"position":[[513,10]]},"33":{"position":[[270,13]]},"57":{"position":[[3645,10]]},"63":{"position":[[1856,11]]}},"keywords":{}}],["unifi",{"_index":810,"title":{},"content":{"46":{"position":[[1279,7]]},"57":{"position":[[3166,7]]}},"keywords":{}}],["unintention",{"_index":962,"title":{},"content":{"57":{"position":[[3284,16]]}},"keywords":{}}],["uniqu",{"_index":562,"title":{},"content":{"25":{"position":[[829,8]]},"35":{"position":[[584,6]]},"46":{"position":[[1098,6]]},"48":{"position":[[695,6]]}},"keywords":{}}],["unit",{"_index":404,"title":{},"content":{"19":{"position":[[381,4]]}},"keywords":{}}],["unknown",{"_index":469,"title":{},"content":{"22":{"position":[[280,8]]}},"keywords":{}}],["unless",{"_index":837,"title":{},"content":{"48":{"position":[[538,6]]}},"keywords":{}}],["unlik",{"_index":380,"title":{},"content":{"18":{"position":[[146,6]]}},"keywords":{}}],["unnecessari",{"_index":424,"title":{},"content":{"20":{"position":[[209,11]]},"57":{"position":[[2185,11]]},"58":{"position":[[5042,11]]}},"keywords":{}}],["unnot",{"_index":426,"title":{},"content":{"20":{"position":[[248,9]]}},"keywords":{}}],["unoccupi",{"_index":921,"title":{},"content":{"57":{"position":[[923,11]]}},"keywords":{}}],["unoptim",{"_index":421,"title":{},"content":{"20":{"position":[[160,11]]}},"keywords":{}}],["unreli",{"_index":308,"title":{},"content":{"13":{"position":[[444,10]]}},"keywords":{}}],["unspecifi",{"_index":1081,"title":{},"content":{"58":{"position":[[5076,12]]}},"keywords":{}}],["unstandardis",{"_index":290,"title":{},"content":{"13":{"position":[[43,15]]}},"keywords":{}}],["up",{"_index":293,"title":{},"content":{"13":{"position":[[172,2],[264,2]]},"24":{"position":[[21,2],[469,2]]},"61":{"position":[[1721,2]]}},"keywords":{}}],["updat",{"_index":115,"title":{"35":{"position":[[18,7]]}},"content":{"6":{"position":[[346,6]]}},"keywords":{}}],["upgrad",{"_index":112,"title":{},"content":{"6":{"position":[[310,8],[358,7]]},"21":{"position":[[222,9]]}},"keywords":{}}],["upon",{"_index":130,"title":{},"content":{"7":{"position":[[293,4]]},"44":{"position":[[483,4]]}},"keywords":{}}],["upstream",{"_index":927,"title":{"58":{"position":[[0,10]]}},"content":{"57":{"position":[[1199,8],[5180,8]]},"58":{"position":[[4,8],[68,8],[1660,8],[3429,8],[3549,8],[3945,8],[4214,9]]}},"keywords":{}}],["upstream(...[upstreamset",{"_index":1017,"title":{},"content":{"58":{"position":[[227,35]]}},"keywords":{}}],["upstream(allowedhead",{"_index":1063,"title":{},"content":{"58":{"position":[[3660,25]]}},"keywords":{}}],["upstream(baseurl",{"_index":190,"title":{},"content":{"9":{"position":[[473,18]]},"32":{"position":[[63,18]]},"58":{"position":[[4380,18],[4729,18],[4789,18]]}},"keywords":{}}],["upstream(batch",{"_index":1085,"title":{},"content":{"58":{"position":[[5431,16]]}},"keywords":{}}],["upstream(connecttimeout",{"_index":1050,"title":{},"content":{"58":{"position":[[2535,25]]}},"keywords":{}}],["upstream(enablehttpcach",{"_index":1082,"title":{},"content":{"58":{"position":[[5128,26]]}},"keywords":{}}],["upstream(keepaliveinterv",{"_index":1032,"title":{},"content":{"58":{"position":[[951,28]]}},"keywords":{}}],["upstream(keepalivetimeout",{"_index":1034,"title":{},"content":{"58":{"position":[[1195,27]]}},"keywords":{}}],["upstream(keepalivewhileidl",{"_index":1037,"title":{},"content":{"58":{"position":[[1454,29]]}},"keywords":{}}],["upstream(poolidletimeout",{"_index":1024,"title":{},"content":{"58":{"position":[[485,26]]}},"keywords":{}}],["upstream(poolmaxidleperhost",{"_index":1029,"title":{},"content":{"58":{"position":[[711,29]]}},"keywords":{}}],["upstream(proxi",{"_index":1041,"title":{},"content":{"58":{"position":[[1850,16]]}},"keywords":{}}],["upstream(tcpkeepal",{"_index":1054,"title":{},"content":{"58":{"position":[[2978,23]]}},"keywords":{}}],["upstream(timeout",{"_index":1051,"title":{},"content":{"58":{"position":[[2750,18]]}},"keywords":{}}],["upstream(userag",{"_index":1057,"title":{},"content":{"58":{"position":[[3176,20]]}},"keywords":{}}],["upstreamset",{"_index":1018,"title":{},"content":{"58":{"position":[[310,15]]}},"keywords":{}}],["url",{"_index":187,"title":{},"content":{"9":{"position":[[440,3]]},"26":{"position":[[472,3]]},"35":{"position":[[229,3],[344,4]]},"57":{"position":[[1667,3]]},"58":{"position":[[1756,4],[1867,5],[2051,3],[4155,3],[4620,3],[4677,3]]},"59":{"position":[[589,3],[640,3],[1743,4],[3810,3],[3925,4]]}},"keywords":{}}],["us",{"_index":28,"title":{"31":{"position":[[0,5]]},"34":{"position":[[8,5]]}},"content":{"1":{"position":[[66,3]]},"2":{"position":[[46,3]]},"3":{"position":[[445,3]]},"5":{"position":[[247,5]]},"8":{"position":[[206,5]]},"9":{"position":[[190,3],[840,3]]},"11":{"position":[[484,6]]},"17":{"position":[[516,5],[955,6]]},"18":{"position":[[27,5]]},"19":{"position":[[23,5]]},"20":{"position":[[57,3]]},"22":{"position":[[330,3]]},"24":{"position":[[256,3],[778,4]]},"30":{"position":[[350,5]]},"32":{"position":[[730,5]]},"33":{"position":[[309,3]]},"35":{"position":[[557,5],[687,5]]},"38":{"position":[[106,3]]},"41":{"position":[[214,3]]},"44":{"position":[[618,4]]},"46":{"position":[[766,5]]},"48":{"position":[[1025,5]]},"50":{"position":[[114,4],[216,5]]},"51":{"position":[[65,4],[229,4]]},"52":{"position":[[221,4]]},"55":{"position":[[290,3]]},"57":{"position":[[181,3],[1780,3],[5126,4]]},"58":{"position":[[214,5],[3146,4]]},"59":{"position":[[343,4],[1059,3],[1338,4],[1659,3],[1941,4],[2043,3],[2552,4],[2914,3]]},"60":{"position":[[149,3],[230,5],[712,5],[773,6]]},"63":{"position":[[546,4],[649,4],[836,4],[1042,4],[1417,4],[1613,5]]}},"keywords":{}}],["usag",{"_index":644,"title":{},"content":{"31":{"position":[[308,6]]}},"keywords":{}}],["user",{"_index":177,"title":{"30":{"position":[[9,6]]}},"content":{"9":{"position":[[205,6],[229,6],[283,5],[603,5],[615,6],[622,6],[674,4],[716,5],[731,4],[807,4]]},"12":{"position":[[519,4],[816,4],[907,6],[992,4],[1290,5],[1296,5],[1330,4]]},"13":{"position":[[560,4]]},"14":{"position":[[16,4]]},"17":{"position":[[701,4]]},"19":{"position":[[778,4]]},"22":{"position":[[215,5]]},"25":{"position":[[67,4]]},"30":{"position":[[83,4],[662,6],[700,4],[878,4]]},"32":{"position":[[214,4],[372,5],[378,4],[528,4],[672,4]]},"33":{"position":[[451,4],[571,4],[759,4]]},"34":{"position":[[394,5],[400,4]]},"35":{"position":[[243,4],[651,4],[944,4]]},"36":{"position":[[51,5],[92,5],[106,5]]},"47":{"position":[[281,4]]},"51":{"position":[[149,4],[274,4]]},"53":{"position":[[169,5],[175,4]]},"54":{"position":[[115,6],[122,7]]},"55":{"position":[[342,5]]},"57":{"position":[[2126,6]]},"58":{"position":[[3116,4]]},"59":{"position":[[139,4],[231,4],[281,4],[411,7],[533,4],[718,4],[963,4],[1140,5],[1221,4],[1493,4],[2179,4],[2349,7],[2682,4],[2821,6],[3092,4],[3287,4],[3553,5],[3559,4],[3824,4]]},"60":{"position":[[422,4],[856,4]]},"61":{"position":[[348,5],[354,5],[367,4],[953,5],[1399,5],[1416,7],[1457,5],[1566,4]]},"62":{"position":[[121,5],[127,4],[187,4]]},"63":{"position":[[238,4],[257,4],[330,4],[352,4],[394,5],[400,4],[587,4],[677,4],[902,4],[923,4],[1109,4],[1332,4],[1477,4]]}},"keywords":{}}],["user'",{"_index":205,"title":{},"content":{"9":{"position":[[856,6]]},"12":{"position":[[930,6]]},"35":{"position":[[567,6]]}},"keywords":{}}],["user(id",{"_index":874,"title":{},"content":{"51":{"position":[[134,8]]},"59":{"position":[[124,8],[703,8],[948,8],[1206,8]]}},"keywords":{}}],["user.nam",{"_index":1166,"title":{},"content":{"63":{"position":[[764,9]]}},"keywords":{}}],["userag",{"_index":1055,"title":{},"content":{"58":{"position":[[3101,10]]}},"keywords":{}}],["userid",{"_index":282,"title":{},"content":{"12":{"position":[[789,7],[852,6]]},"29":{"position":[[178,6]]},"32":{"position":[[330,7]]},"34":{"position":[[352,7]]},"35":{"position":[[267,6]]},"53":{"position":[[127,7],[390,6],[523,6],[638,6]]},"55":{"position":[[229,6],[299,6]]},"59":{"position":[[3848,6]]},"60":{"position":[[624,6]]},"63":{"position":[[339,7],[518,7],[1174,10],[1241,6],[1391,7]]}},"keywords":{}}],["userinput",{"_index":1098,"title":{},"content":{"59":{"position":[[1480,12],[2166,12],[2669,12]]}},"keywords":{}}],["usernam",{"_index":202,"title":{},"content":{"9":{"position":[[761,9]]},"32":{"position":[[244,9]]},"63":{"position":[[875,9],[950,8],[1374,9],[1553,11]]}},"keywords":{}}],["userposts(id",{"_index":1102,"title":{},"content":{"59":{"position":[[1774,13]]}},"keywords":{}}],["users(nam",{"_index":1107,"title":{},"content":{"59":{"position":[[3071,11]]}},"keywords":{}}],["users/:id/post",{"_index":178,"title":{},"content":{"9":{"position":[[240,16]]}},"keywords":{}}],["users/{{args.id",{"_index":1094,"title":{},"content":{"59":{"position":[[1173,19]]}},"keywords":{}}],["users/{{userid",{"_index":1169,"title":{},"content":{"63":{"position":[[1148,19]]}},"keywords":{}}],["users?id=1&id=2&id=3...id=10",{"_index":698,"title":{},"content":{"35":{"position":[[357,38]]},"59":{"position":[[3938,38]]}},"keywords":{}}],["util",{"_index":1009,"title":{},"content":{"57":{"position":[[6318,11]]},"58":{"position":[[4902,7]]}},"keywords":{}}],["valid",{"_index":736,"title":{},"content":{"38":{"position":[[18,9]]},"45":{"position":[[127,5]]},"46":{"position":[[158,11]]},"57":{"position":[[4258,8],[4320,10],[4774,10],[4905,10],[5134,8]]},"62":{"position":[[248,8]]}},"keywords":{}}],["valu",{"_index":688,"title":{"52":{"position":[[0,6]]}},"content":{"34":{"position":[[467,6]]},"35":{"position":[[143,6],[656,5]]},"50":{"position":[[308,6]]},"52":{"position":[[20,5]]},"53":{"position":[[242,6],[572,5]]},"57":{"position":[[1104,5],[1145,6],[2533,6],[2727,6],[2850,5],[5884,5]]},"58":{"position":[[203,6],[1352,5],[3134,5]]},"59":{"position":[[1867,6],[2577,5],[2613,7],[2757,6],[2885,5],[2959,6],[3167,6],[3226,6],[3306,5],[3626,6],[3724,6]]},"62":{"position":[[270,5],[369,5]]}},"keywords":{}}],["value.id",{"_index":879,"title":{},"content":{"52":{"position":[[209,8]]}},"keywords":{}}],["value.userid",{"_index":884,"title":{},"content":{"53":{"position":[[357,12]]}},"keywords":{}}],["var",{"_index":940,"title":{},"content":{"57":{"position":[[2207,5]]}},"keywords":{}}],["variabl",{"_index":135,"title":{},"content":{"7":{"position":[[359,8]]},"50":{"position":[[61,8]]},"54":{"position":[[35,9],[272,8]]},"57":{"position":[[2259,9],[2329,9],[2802,8],[3067,10]]},"59":{"position":[[1096,10],[2081,9],[2108,10]]}},"keywords":{}}],["variou",{"_index":743,"title":{},"content":{"38":{"position":[[210,7]]},"41":{"position":[[128,7]]},"57":{"position":[[173,7],[441,7],[2452,7]]},"58":{"position":[[45,7],[302,7]]}},"keywords":{}}],["vars.apikey}}"",{"_index":955,"title":{},"content":{"57":{"position":[[2747,24]]}},"keywords":{}}],["vastli",{"_index":265,"title":{},"content":{"12":{"position":[[335,6]]}},"keywords":{}}],["veri",{"_index":42,"title":{},"content":{"2":{"position":[[25,4]]},"20":{"position":[[281,4],[429,4]]},"22":{"position":[[475,4]]},"23":{"position":[[462,4]]},"24":{"position":[[239,4]]}},"keywords":{}}],["verifi",{"_index":94,"title":{},"content":{"5":{"position":[[177,6]]},"6":{"position":[[224,6]]},"8":{"position":[[721,6]]}},"keywords":{}}],["vero",{"_index":727,"title":{},"content":{"36":{"position":[[553,4]]}},"keywords":{}}],["version",{"_index":149,"title":{},"content":{"8":{"position":[[318,7],[739,7],[804,9]]},"23":{"position":[[229,7]]},"48":{"position":[[827,11],[854,7],[895,8],[1147,9]]}},"keywords":{}}],["via",{"_index":114,"title":{},"content":{"6":{"position":[[336,4]]},"44":{"position":[[516,3]]}},"keywords":{}}],["view",{"_index":49,"title":{},"content":{"2":{"position":[[120,5]]}},"keywords":{}}],["viz",{"_index":763,"title":{},"content":{"44":{"position":[[82,4]]}},"keywords":{}}],["volum",{"_index":625,"title":{},"content":{"30":{"position":[[959,6]]}},"keywords":{}}],["vulner",{"_index":337,"title":{},"content":{"16":{"position":[[219,10]]}},"keywords":{}}],["wait",{"_index":1021,"title":{},"content":{"58":{"position":[[440,4],[1142,4],[2489,4],[2722,4]]}},"keywords":{}}],["walk",{"_index":649,"title":{},"content":{"31":{"position":[[465,4]]}},"keywords":{}}],["want",{"_index":76,"title":{},"content":{"3":{"position":[[400,4]]},"8":{"position":[[7,4]]},"17":{"position":[[986,4]]},"53":{"position":[[672,4]]},"60":{"position":[[787,4]]},"61":{"position":[[1432,4]]}},"keywords":{}}],["way",{"_index":471,"title":{},"content":{"22":{"position":[[298,3]]},"24":{"position":[[503,3]]},"46":{"position":[[320,3]]},"53":{"position":[[375,3]]},"57":{"position":[[3246,3]]}},"keywords":{}}],["we'll",{"_index":654,"title":{},"content":{"32":{"position":[[36,5]]}},"keywords":{}}],["we'r",{"_index":590,"title":{},"content":{"28":{"position":[[9,5]]}},"keywords":{}}],["we'v",{"_index":1043,"title":{},"content":{"58":{"position":[[2029,5]]},"63":{"position":[[1411,5]]}},"keywords":{}}],["websit",{"_index":658,"title":{},"content":{"32":{"position":[[291,8]]}},"keywords":{}}],["welcom",{"_index":50,"title":{"3":{"position":[[0,7]]}},"content":{},"keywords":{}}],["welcome.md2019",{"_index":67,"title":{},"content":{"3":{"position":[[245,14]]}},"keywords":{}}],["welcome/index.md",{"_index":68,"title":{},"content":{"3":{"position":[[266,16]]}},"keywords":{}}],["well",{"_index":74,"title":{},"content":{"3":{"position":[[377,5]]},"17":{"position":[[522,4]]},"19":{"position":[[463,4]]},"57":{"position":[[3253,4]]}},"keywords":{}}],["what’",{"_index":295,"title":{},"content":{"13":{"position":[[193,6]]}},"keywords":{}}],["whenev",{"_index":958,"title":{},"content":{"57":{"position":[[2922,8]]}},"keywords":{}}],["whether",{"_index":966,"title":{},"content":{"57":{"position":[[3409,7],[4232,7]]},"58":{"position":[[1374,7]]}},"keywords":{}}],["wise",{"_index":974,"title":{},"content":{"57":{"position":[[3912,4]]}},"keywords":{}}],["within",{"_index":677,"title":{},"content":{"33":{"position":[[665,6]]},"57":{"position":[[1456,6]]},"60":{"position":[[102,6]]},"61":{"position":[[112,6]]}},"keywords":{}}],["without",{"_index":218,"title":{},"content":{"9":{"position":[[1273,7]]},"48":{"position":[[957,7]]}},"keywords":{}}],["won't",{"_index":852,"title":{},"content":{"48":{"position":[[1526,5]]},"57":{"position":[[1744,5]]},"60":{"position":[[993,5]]}},"keywords":{}}],["work",{"_index":1123,"title":{},"content":{"61":{"position":[[135,5]]}},"keywords":{}}],["world",{"_index":612,"title":{},"content":{"30":{"position":[[615,5]]}},"keywords":{}}],["worth",{"_index":409,"title":{},"content":{"19":{"position":[[645,5]]},"24":{"position":[[536,5]]}},"keywords":{}}],["write",{"_index":220,"title":{},"content":{"9":{"position":[[1291,5]]}},"keywords":{}}],["written",{"_index":379,"title":{},"content":{"18":{"position":[[132,7]]},"20":{"position":[[40,7]]},"59":{"position":[[1162,7]]}},"keywords":{}}],["x",{"_index":1066,"title":{},"content":{"58":{"position":[[3855,1]]},"59":{"position":[[2867,1]]}},"keywords":{}}],["yield",{"_index":615,"title":{},"content":{"30":{"position":[[717,5]]}},"keywords":{}}],["you'r",{"_index":938,"title":{},"content":{"57":{"position":[[2081,6]]},"59":{"position":[[855,6]]}},"keywords":{}}],["yourself",{"_index":587,"title":{},"content":{"26":{"position":[[524,9]]},"31":{"position":[[344,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file +{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,471.213,1,371.371,2,164.089]],["content/0",[0,2.268,1,3.039,2,1.343,3,2.926,4,1.917,5,0.515,6,2.926,7,2.529,8,2.529,9,2.073,10,2.268,11,2.268,12,1.676,13,2.926,14,12.511,15,13.065,16,12.511,17,11.219,18,12.511,19,11.098,20,11.098,21,11.098,22,11.098,23,11.098,24,11.098,25,11.098,26,11.098,27,11.098,28,9.952,29,11.098,30,11.098,31,11.098]],["keywords/0",[]],["title/1",[1,371.371,2,164.089,32,294.024]],["content/1",[14,11.191,15,12.074,16,11.191,17,10.035,18,11.191,19,9.177,20,9.177,21,9.177,22,9.177,23,9.177,24,9.177,25,9.177,26,9.177,27,9.177,28,8.23,29,9.177,30,9.177,31,9.177]],["keywords/1",[]],["title/2",[1,371.371,2,164.089,33,525.48]],["content/2",[1,7.943,2,3.509,5,1.88,8,9.242,33,9.242,34,7.005,35,9.242,36,9.242,37,5.771,38,4.066,39,8.288,40,6.532,41,10.691,42,6.126,43,9.242,44,10.691,45,10.691,46,10.691,47,10.691,48,10.691,49,10.691]],["keywords/2",[]],["title/3",[50,933.725]],["content/3",[1,9.304,2,3.453,5,1.543,34,5.75,35,9.922,36,7.586,37,4.737,38,3.338,40,5.362,51,8.776,52,8.776,53,6.218,54,4.478,55,11.478,56,9.922,57,8.776,58,5.028,59,5.75,60,8.776,61,8.776,62,6.803,63,8.776,64,8.776,65,11.478,66,11.478,67,8.776,68,8.776,69,8.776,70,8.776,71,7.586,72,7.586,73,8.776,74,6.218,75,6.803,76,5.362,77,7.586,78,5.75,79,8.776]],["keywords/3",[]],["title/4",[80,570.45]],["content/4",[]],["keywords/4",[]],["title/5",[81,807.171]],["content/5",[5,1.745,75,7.692,80,8.932,81,10.733,82,7.03,83,9.923,84,8.578,85,6.062,86,5.356,87,3.495,88,6.006,89,3.95,90,4.56,91,7.692,92,9.923,93,8.578,94,7.692,95,8.578,96,4.8,97,7.692,98,9.923,99,8.578,100,7.692,101,8.578,102,8.578,103,3.95,104,7.692]],["keywords/5",[]],["title/6",[105,723.812]],["content/6",[53,6.851,75,7.496,80,8.595,82,6.851,84,8.359,85,5.908,86,5.219,87,3.96,88,5.909,89,3.849,90,4.444,91,7.496,93,8.359,94,7.496,95,8.359,96,4.677,105,9.47,106,8.359,107,14.069,108,8.359,109,6.336,110,8.359,111,10.561,112,3.678,113,8.359,114,8.359]],["keywords/6",[]],["title/7",[115,611.836]],["content/7",[54,4.998,56,10.646,71,8.467,80,8.635,87,3.467,89,3.899,90,4.501,115,6.418,116,6.94,117,6.418,118,9.795,119,4.738,120,4.998,121,9.795,122,9.795,123,2.235,124,9.795,125,9.795,126,3.563,127,6.94,128,9.795,129,8.467,130,8.467,131,8.467,132,4.085,133,7.593,134,6.418,135,4.085,136,9.795,137,9.795,138,9.795]],["keywords/7",[]],["title/8",[139,807.171]],["content/8",[5,1.355,72,9.097,76,4.709,80,8.235,86,4.16,87,3.794,88,5.796,89,4.77,90,6.194,94,5.974,96,3.728,97,5.974,105,5.974,109,5.05,116,5.46,117,5.05,120,3.932,126,2.804,139,12.709,140,4.416,141,6.896,142,3.932,143,7.707,144,10.523,145,10.523,146,10.523,147,4.558,148,9.289,149,5.46,150,6.429,151,10.523,152,7.707,153,7.707,154,6.662,155,5.974,156,3.214,157,4.416,158,6.662,159,6.662,160,7.707,161,6.662,162,5.974,163,5.974]],["keywords/8",[]],["title/9",[164,356.173,165,736.357]],["content/9",[]],["keywords/9",[]],["title/10",[166,449.87,167,397.458]],["content/10",[5,1.526,10,6.725,38,3.3,112,3.3,147,3.3,166,7.77,167,6.149,168,5.3,169,6.725,170,3.894,171,8.676,172,3.966,173,3.075,174,6.725,175,4.117,176,9.569,177,7.465,178,5.3,179,7.5,180,7.5,181,2.893,182,5.51,183,6.725,184,7.5,185,6.527,186,6.891,187,6.147,188,8.676,189,6.147,190,7.5,191,5.685,192,6.147,193,2.771,194,8.676,195,8.676,196,4.196]],["keywords/10",[]],["title/11",[175,216.151,197,245.513]],["content/11",[2,3.407,32,2.782,42,5.837,89,4.055,102,4.972,110,4.972,123,3.064,130,4.972,150,3.514,166,3.514,170,3.119,172,2.002,173,2.75,175,4.156,177,3.769,178,3.514,181,3.397,182,5.827,193,1.837,197,2.848,198,4.928,199,3.514,200,7.988,201,3.249,202,7.388,203,4.458,204,5.596,205,3.925,206,5.751,207,4.075,208,3.295,209,4.075,210,6.621,211,5.751,212,6.051,213,2.516,214,6.051,215,4.075,216,3.295,217,4.458,218,5.751,219,8.541,220,6.224,221,2.982,222,5.751,223,5.751,224,3.104,225,8.807,226,3.769,227,4.972,228,6.621,229,5.751,230,5.343,231,4.61,232,6.105,233,4.61,234,4.131,235,2.935,236,4.458,237,2.782,238,4.458,239,2.643,240,3.769,241,2.782,242,5.751,243,3.514,244,3.769]],["keywords/11",[]],["title/12",[170,225.457,197,245.513]],["content/12",[112,3.281,126,4.128,147,3.281,164,4.173,170,4.126,172,4.416,173,2.329,175,2.532,197,2.876,201,3.281,204,5.653,205,3.964,208,4.943,221,1.969,241,4.173,245,7.437,246,6.112,247,8.626,248,7.457,249,4.317,250,9.811,251,8.798,252,3.964,253,8.626,254,11.349,255,8.626,256,4.943,257,8.626,258,8.626,259,11.349,260,11.349,261,8.626,262,11.349,263,8.798,264,11.349,265,6.112,266,5.653,267,8.626,268,7.457,269,7.457,270,5.653]],["keywords/12",[]],["title/13",[271,348.291,272,371.371,273,371.371]],["content/13",[11,7.544,53,6.895,104,7.544,170,4.451,173,2.627,175,3.943,197,4.09,199,5.946,200,6.895,201,3.702,204,6.377,205,4.472,216,5.576,221,2.221,245,8.037,265,6.895,272,5.946,273,7.494,274,9.732,275,6.377,276,6.895,277,4.257,278,9.732,279,5.576,280,6.377,281,4.707,282,6.377,283,5.576]],["keywords/13",[]],["title/14",[112,231.209,284,430.679,285,328.104]],["content/14",[112,3.982,170,3.93,172,3.645,173,2.826,175,4.075,182,5.064,197,3.491,201,3.982,205,5.899,212,7.418,243,6.396,245,6.861,252,4.812,272,6.396,279,5.999,281,5.064,285,5.651,286,7.418,287,10.47,288,6.861,289,6.396,290,9.051]],["keywords/14",[]],["title/15",[272,371.371,291,525.48,292,525.48]],["content/15",[38,3.458,40,5.554,112,3.458,147,3.458,164,4.397,170,3.983,172,3.165,175,3.819,189,6.441,196,4.397,197,4.338,220,5.554,245,7.695,252,5.397,263,7.047,272,5.554,279,5.209,280,5.957,281,4.397,282,5.957,292,7.859,293,3.619,294,7.695,295,7.859,296,4.907,297,9.091,298,9.091,299,7.859,300,7.859,301,6.441,302,7.859,303,5.957,304,5.957,305,5.957,306,7.859,307,7.047,308,7.047,309,6.441,310,7.047]],["keywords/15",[]],["title/16",[185,348.291,311,398.314,312,310.165]],["content/16",[5,1.703,17,5.302,38,2.601,40,4.178,42,3.919,59,4.482,74,4.846,76,4.178,103,2.722,112,4.651,120,3.49,166,5.917,167,3.692,168,4.178,170,3.744,172,2.381,175,3.934,185,3.919,186,3.49,192,4.846,193,2.185,196,3.308,197,3.749,199,4.178,200,4.846,201,2.601,202,4.482,203,5.302,207,4.846,208,3.919,221,1.561,226,6.346,243,5.917,248,5.912,263,5.302,265,4.846,270,4.482,275,4.482,279,5.549,288,4.482,302,5.912,303,7.368,311,7.368,312,6.838,313,5.167,314,6.346,315,4.846,316,4.236,317,4.846,318,4.846,319,6.839,320,8.716,321,4.482,322,4.846,323,6.839,324,3.919,325,5.912,326,5.302,327,6.839,328,6.839,329,5.912,330,4.178,331,5.302,332,6.839,333,6.839,334,5.912,335,4.482,336,5.302,337,3.308,338,5.912]],["keywords/16",[]],["title/17",[271,348.291,339,525.48,340,525.48]],["content/17",[5,1.658,103,3.754,170,2.887,172,3.283,175,2.768,176,6.681,193,3.012,241,5.815,252,4.334,266,8.673,273,5.761,277,4.125,279,5.403,283,5.403,305,6.179,311,6.179,312,7.113,313,4.334,339,8.152,340,8.152,341,7.31,342,9.43,343,9.43,344,7.31,345,9.43,346,7.345,347,5.761,348,5.761,349,9.43,350,6.681,351,8.152,352,8.152,353,9.43,354,8.152,355,6.681]],["keywords/17",[]],["title/18",[284,521.715,356,636.554]],["content/18",[5,1.384,74,5.574,89,4.248,112,4.606,116,7.561,135,3.281,142,4.014,179,6.8,180,6.8,185,4.507,196,3.805,215,5.574,221,1.795,235,4.014,241,3.805,266,8.509,279,4.507,281,3.805,282,5.155,286,5.574,300,6.8,303,5.155,312,6.927,313,5.565,337,3.805,341,6.098,356,9.225,357,7.867,358,10.671,359,6.8,360,6.8,361,6.8,362,5.155,363,7.867,364,10.671,365,6.8,366,3.805,367,6.098,368,7.867,369,10.067,370,7.867,371,6.098,372,4.806,373,7.867,374,7.867,375,6.8,376,6.098,377,4.806,378,6.8,379,6.098,380,4.806,381,7.867,382,6.8,383,6.098,384,7.867]],["keywords/18",[]],["title/19",[112,231.209,291,525.48,385,607.869]],["content/19",[4,7.636,5,1.58,38,3.417,112,4.433,140,5.147,168,7.12,173,2.425,191,5.887,193,2.87,205,4.128,224,4.849,283,5.147,289,5.488,304,5.887,312,4.584,313,4.128,331,6.964,337,4.345,344,6.964,350,6.365,354,7.766,366,4.345,369,6.964,377,5.488,386,8.983,387,8.983,388,7.12,389,8.983,390,8.983,391,7.766,392,6.964,393,8.983,394,8.983,395,8.983,396,8.983,397,8.983,398,6.964,399,8.983,400,8.983,401,6.365,402,8.983,403,8.983,404,6.964,405,6.964,406,8.983,407,8.983]],["keywords/19",[]],["title/20",[408,736.357,409,636.554]],["content/20",[111,8.522,150,6.023,167,5.321,185,5.648,186,5.03,202,6.46,241,4.768,283,5.648,313,5.683,347,6.023,348,6.023,355,6.985,388,6.023,409,8.522,410,9.858,411,8.522,412,9.858,413,9.858,414,9.858,415,9.858,416,9.858,417,8.522,418,9.858,419,9.858,420,9.858,421,7.642,422,9.858,423,9.858,424,9.858,425,9.858,426,9.858,427,8.522,428,9.858,429,8.522]],["keywords/20",[]],["title/21",[34,295.27,352,389.538,430,389.538,431,389.538,432,450.612]],["content/21",[4,5.784,5,1.552,32,4.27,34,7.549,37,4.764,38,3.357,112,3.357,120,4.504,155,6.842,164,4.27,170,2.703,183,6.842,185,5.058,221,2.015,241,6.204,273,5.393,293,3.514,303,5.784,312,6.545,313,5.894,315,6.254,347,7.039,388,7.836,398,6.842,429,7.63,431,7.63,433,8.827,434,7.63,435,8.827,436,6.842,437,8.827,438,8.827,439,5.784,440,8.827,441,8.827,442,6.254,443,7.63,444,6.842,445,6.842,446,6.842,447,8.827,448,8.827,449,8.827]],["keywords/21",[]],["title/22",[444,471.213,450,607.869,451,525.48]],["content/22",[4,6.029,32,4.451,88,4.451,148,7.133,164,4.451,166,5.621,170,2.817,172,4.121,177,6.029,186,6.039,224,4.966,281,6.681,304,6.029,306,7.954,312,6.676,313,6.013,321,6.029,347,5.621,365,7.954,372,5.621,377,5.621,388,5.621,404,7.133,451,7.954,452,9.201,453,7.954,454,9.201,455,6.029,456,6.519,457,9.201,458,6.029,459,9.201,460,11.835,461,9.201,462,9.201,463,7.954]],["keywords/22",[]],["title/23",[176,430.679,464,607.869,465,525.48]],["content/23",[4,4.925,5,1.819,10,5.827,38,2.859,82,5.325,123,1.715,170,2.301,172,3.601,175,3.74,176,9.027,186,3.835,189,5.325,190,6.498,193,2.401,208,4.307,210,5.827,212,5.325,235,5.278,250,8.942,251,8.019,305,4.925,311,4.925,312,7.045,313,6.622,321,4.925,346,4.592,375,6.498,376,5.827,398,5.827,417,6.498,439,4.925,465,6.498,466,7.516,467,7.516,468,6.498,469,6.498,470,5.827,471,6.498,472,7.516,473,7.516,474,7.516,475,6.498,476,8.942,477,7.516,478,7.516,479,7.516,480,6.498,481,5.325,482,7.516,483,5.325,484,7.516,485,7.516,486,4.925,487,7.516,488,7.516,489,7.516,490,7.516,491,4.592,492,7.516]],["keywords/23",[]],["title/24",[493,607.869,494,525.48,495,525.48]],["content/24",[87,2.116,135,3.134,185,4.307,221,1.715,235,3.835,266,4.925,270,4.925,277,3.288,279,5.927,311,8.349,312,6.035,313,3.454,322,5.325,337,5.003,366,5.003,372,4.592,391,6.498,480,6.498,481,5.325,486,6.778,494,8.942,495,6.498,496,7.516,497,5.325,498,7.329,499,7.516,500,6.498,501,7.516,502,7.516,503,10.344,504,6.778,505,7.516,506,7.516,507,7.516,508,6.498,509,10.344,510,6.498,511,11.827,512,7.516,513,7.516,514,4.925,515,7.516,516,7.516,517,7.516,518,7.516,519,7.516,520,7.516,521,7.516,522,7.516,523,7.516,524,5.827,525,7.516,526,7.516,527,7.516,528,7.516,529,7.516,530,5.827,531,7.516,532,7.516,533,5.325,534,7.516,535,7.516,536,7.516,537,7.516,538,7.516,539,7.516,540,7.516]],["keywords/24",[]],["title/25",[541,534.997]],["content/25",[2,3.519,5,1.494,12,3.271,32,2.761,38,2.171,42,5.811,54,5.732,86,3.081,89,2.272,123,3.332,131,4.935,132,3.542,147,2.171,156,5.007,173,1.541,175,3.525,178,3.487,181,4.197,187,6.017,193,1.823,213,2.497,221,3.179,230,4.037,231,3.081,232,5.808,233,3.081,237,4.108,238,4.425,239,2.623,240,3.74,243,5.189,249,2.171,256,3.271,283,3.271,293,2.272,326,6.584,329,4.935,330,3.487,338,4.935,346,3.487,377,3.487,379,4.425,458,3.74,491,3.487,524,4.425,541,3.271,542,4.579,543,5.708,544,4.425,545,5.708,546,5.708,547,5.708,548,4.425,549,5.708,550,5.708,551,5.175,552,4.425,553,3.487,554,5.474,555,4.425,556,4.425,557,3.911,558,4.108,559,3.487,560,4.661,561,4.334,562,4.425,563,4.935,564,5.708,565,4.935,566,5.708,567,5.708,568,5.708]],["keywords/25",[]],["title/26",[127,661.551]],["content/26",[2,2.941,7,9.418,28,5.009,53,4.578,88,3.125,89,2.572,123,3.591,127,4.578,182,3.125,221,2.122,227,5.585,230,2.572,231,3.487,239,2.969,243,3.947,252,2.969,271,3.702,275,4.234,284,4.578,293,4.743,316,2.826,377,3.947,401,4.578,557,4.396,560,2.969,569,5.585,570,6.461,571,5.009,572,6.461,573,9.418,574,6.461,575,6.461,576,5.585,577,5.585,578,4.234,579,4.234,580,6.461,581,5.585,582,6.093,583,7.209,584,6.461,585,6.461,586,9.299,587,10.894,588,6.461,589,6.461,590,6.461,591,6.461,592,6.461,593,6.461,594,6.461,595,6.461,596,10.894,597,6.461,598,6.461,599,6.461,600,6.461,601,6.461,602,6.461,603,6.461,604,6.461,605,6.461,606,6.461,607,6.461,608,6.461,609,6.461,610,4.578]],["keywords/26",[]],["title/27",[611,723.812]],["content/27",[42,5.087,54,4.53,87,2.499,88,4.294,89,4.604,90,5.315,96,4.294,117,5.818,123,2.64,132,3.702,141,8.428,147,4.399,161,7.675,202,5.818,220,5.424,237,4.294,316,3.884,348,7.066,401,6.29,427,7.675,542,3.23,548,8.965,553,5.424,569,7.675,571,6.882,577,7.675,610,8.194,611,8.965,612,8.878,613,8.878,614,8.878,615,11.565,616,8.878,617,8.878,618,8.878,619,8.878,620,5.087,621,8.878,622,8.878,623,8.878,624,7.675]],["keywords/27",[]],["title/28",[119,451.639]],["content/28",[]],["keywords/28",[]],["title/29",[625,534.997]],["content/29",[5,1.734,38,3.75,89,3.924,90,6.511,96,4.768,157,5.648,197,4.123,212,6.985,217,7.642,335,6.46,366,4.768,504,6.46,514,6.46,542,3.586,625,8.117,626,6.46,627,7.555,628,8.522,629,7.642,630,5.321,631,8.522,632,8.103,633,8.522,634,8.522,635,6.985,636,7.642]],["keywords/29",[]],["title/30",[277,226.398,557,180.193,637,316.197,638,366.694]],["content/30",[78,7.423,96,5.48,99,9.793,181,3.777,277,4.956,366,5.48,557,3.944,625,6.491,629,8.782,630,6.115,633,9.793,637,6.921,638,8.027,639,8.782,640,9.793]],["keywords/30",[]],["title/31",[542,339.663]],["content/31",[54,6.335,78,6.502,90,4.56,96,6.006,123,2.265,132,4.138,181,3.308,193,3.17,197,3.308,201,3.774,213,4.34,217,7.692,226,6.502,318,7.03,542,4.93,551,5.063,625,7.764,627,6.062,632,8.136,640,8.578,641,8.578,642,8.578,643,8.578,644,4.56,645,8.578,646,8.578,647,8.578]],["keywords/31",[]],["title/32",[141,611.836]],["content/32",[5,1.618,54,6.039,87,2.59,89,3.663,90,6.013,96,5.725,103,3.663,123,2.1,132,3.837,141,9.364,147,4.977,156,4.936,177,6.029,193,2.939,197,3.068,201,3.5,209,6.519,213,4.025,226,6.029,541,6.781,551,4.695,611,7.133,627,5.621,632,6.029,635,6.519,641,7.954,642,7.954,643,7.954,644,4.228,645,7.954,646,7.954,647,7.954,648,6.519,649,6.029]],["keywords/32",[]],["title/33",[650,807.171]],["content/33",[42,7.324,54,7.366,87,2.927,90,5.874,96,5.03,132,4.336,156,4.336,202,6.814,276,7.367,293,4.139,316,4.549,541,5.958,542,3.783,650,11.049,651,10.398,652,10.398,653,10.398,654,10.398,655,10.398,656,10.398,657,7.367]],["keywords/33",[]],["title/34",[167,503.989]],["content/34",[]],["keywords/34",[]],["title/35",[167,328.104,405,471.213,658,525.48]],["content/35",[5,1.451,87,2.323,106,7.133,113,7.133,120,4.21,129,7.133,135,3.441,142,4.21,149,8.791,157,6.314,166,5.041,170,3.374,173,2.975,175,2.422,186,5.623,192,5.846,197,2.751,209,5.846,220,6.732,228,6.396,246,5.846,282,5.407,293,3.284,294,7.221,308,6.396,309,5.846,322,5.846,383,6.396,491,5.041,530,6.396,542,4.513,579,5.407,620,4.728,627,5.041,636,6.396,648,7.808,659,8.251,660,8.251,661,6.396,662,12.407,663,8.251,664,7.133,665,8.251,666,7.133,667,5.846,668,8.251,669,5.846,670,8.251,671,8.251,672,8.251,673,6.396,674,8.251]],["keywords/35",[]],["title/36",[103,241.965,197,202.673,636,471.213]],["content/36",[38,3.437,58,5.178,103,4.657,120,4.611,135,3.769,142,5.969,167,4.878,173,2.439,175,3.434,182,4.371,189,6.403,191,5.922,192,6.403,193,2.887,197,3.013,241,4.371,249,3.437,276,6.403,294,7.666,324,5.178,325,7.812,346,5.521,367,7.005,382,7.812,383,7.005,442,6.403,469,7.812,542,3.287,563,7.812,626,5.922,627,5.521,664,10.113,675,9.037,676,9.037,677,7.005,678,9.037,679,9.037,680,9.037,681,7.812,682,7.812,683,7.812,684,9.037,685,7.005,686,7.005]],["keywords/36",[]],["title/37",[649,611.836]],["content/37",[5,1.072,12,3.494,38,2.319,87,1.716,88,2.95,103,4.617,109,3.996,112,3.392,116,6.318,123,2.035,135,2.543,140,3.494,142,3.111,149,4.32,157,3.494,164,5.099,173,3.131,175,4.007,178,3.725,187,4.32,193,2.848,197,3.867,198,2.95,199,5.448,201,3.392,205,4.098,208,3.494,226,3.996,241,2.95,243,3.725,244,5.843,249,3.392,252,2.802,269,5.271,271,5.109,272,3.725,277,2.667,280,3.996,285,3.291,286,4.32,293,3.549,315,4.32,316,3.901,317,4.32,337,5.099,346,3.725,360,5.271,361,5.271,371,6.912,401,4.32,439,3.996,455,5.843,470,4.727,483,4.32,533,4.32,625,3.494,626,3.996,637,5.448,649,7.6,687,5.271,688,5.271,689,5.271,690,3.996,691,6.098,692,7.708,693,4.727,694,6.318,695,6.098,696,5.271,697,6.098,698,6.098,699,6.098,700,4.32,701,5.271,702,6.098,703,4.727,704,6.098,705,4.727,706,6.098,707,4.32,708,6.098,709,6.098,710,4.32,711,6.098,712,6.098,713,4.727,714,5.271,715,5.271,716,5.271,717,6.098]],["keywords/37",[]],["title/38",[170,225.457,718,736.357]],["content/38",[2,2.644,115,6.418,123,3.393,140,5.612,149,6.94,170,2.999,172,4.288,173,3.324,221,2.235,231,5.287,233,5.287,239,4.501,240,6.418,249,3.725,281,4.738,446,7.593,456,6.94,491,5.984,649,6.418,710,8.726,719,7.593,720,9.795,721,9.795,722,9.795,723,9.795,724,9.795,725,12.315]],["keywords/38",[]],["title/39",[283,421.912,710,521.715]],["content/39",[5,1,9,4.029,32,2.751,37,5.462,42,3.258,88,2.751,89,2.264,103,5.003,109,3.726,120,2.902,142,4.321,148,8.692,163,4.408,167,3.07,170,1.741,172,1.98,175,2.486,193,3.582,197,2.824,201,2.163,203,4.408,207,4.029,210,4.408,246,4.029,252,2.613,265,4.029,277,2.488,283,3.258,289,3.474,293,2.264,303,3.726,307,4.408,310,4.408,316,2.488,335,5.55,337,2.751,347,5.174,348,3.474,355,6.001,371,4.408,372,6.85,380,5.174,388,7.325,421,4.408,443,4.916,444,4.408,445,4.408,453,4.916,471,7.321,491,3.474,498,4.029,508,4.916,510,7.321,533,4.029,544,4.408,565,4.916,579,3.726,627,3.474,631,4.916,644,2.613,648,4.029,661,4.408,673,4.408,690,3.726,710,8.494,726,5.687,727,5.687,728,4.916,729,5.687,730,5.687,731,4.916,732,4.916,733,8.469,734,5.687,735,5.687,736,5.687,737,8.469,738,4.916,739,5.687,740,7.321,741,4.916,742,5.687,743,5.687,744,4.408,745,5.687,746,4.916,747,4.916,748,5.687,749,4.916,750,5.687,751,5.687,752,5.687,753,8.469,754,5.687,755,5.687,756,5.687,757,5.687,758,3.705,759,5.687,760,4.408,761,5.687,762,5.687,763,5.687,764,4.408,765,5.687,766,4.916,767,5.687,768,4.916,769,5.687,770,5.687]],["keywords/39",[]],["title/40",[123,118.125,271,296.546,637,316.197,771,517.558]],["content/40",[]],["keywords/40",[]],["title/41",[215,661.551]],["content/41",[2,3.54,37,7.078,58,6.213,126,3.945,168,6.625,175,3.183,214,7.683,241,5.245,249,4.124,305,7.105,337,5.245,578,7.105,620,6.213,772,10.844,773,9.374,774,10.844,775,7.683,776,9.374,777,7.683]],["keywords/41",[]],["title/42",[2,198.773,126,267.866]],["content/42",[2,3.817,12,6.258,32,5.283,58,6.258,115,7.157,126,3.973,135,4.554,173,3.555,175,3.206,193,3.489,204,7.157,228,8.466,234,5.283,237,5.283,560,5.019,778,10.922,779,8.466]],["keywords/42",[]],["title/43",[126,267.866,221,168.063]],["content/43",[2,3.185,5,1.113,32,3.06,58,5.248,100,4.904,103,2.518,115,4.146,147,4.488,164,5.207,169,4.904,172,3.189,173,3.944,175,3.16,182,3.06,186,3.228,193,3.77,198,3.06,201,2.406,205,2.907,208,3.625,216,5.248,221,2.693,235,3.228,252,2.907,266,4.146,270,4.146,280,6.001,281,3.06,286,4.482,289,3.865,290,5.469,293,3.646,304,4.146,307,4.904,331,4.904,337,3.06,366,4.43,405,4.904,436,8.345,455,4.146,497,4.482,578,4.146,620,6.168,630,4.944,693,4.904,713,4.904,773,5.469,775,4.482,780,6.326,781,6.326,782,4.904,783,9.159,784,9.159,785,7.917,786,5.469,787,4.482,788,4.146,789,6.326,790,6.326,791,6.326,792,6.326,793,9.159,794,6.326,795,6.326,796,6.326,797,6.326,798,5.469,799,6.326,800,5.469,801,6.326,802,6.326,803,6.326,804,6.326,805,5.469,806,5.469,807,4.904,808,6.326,809,6.326,810,6.326]],["keywords/43",[]],["title/44",[5,129.503,119,356.173]],["content/44",[80,5.488,82,6.365,87,3.28,90,4.128,119,5.637,140,6.677,142,4.584,156,3.746,173,2.425,174,6.964,198,4.345,199,5.488,216,5.147,296,4.849,304,5.887,314,7.636,336,6.964,337,5.637,366,5.637,372,5.488,379,6.964,514,5.887,541,5.147,624,7.766,630,4.849,644,4.128,649,5.887,690,5.887,694,6.365,744,6.964,764,6.964,811,8.983,812,8.983,813,8.983,814,8.983,815,7.766,816,8.983,817,8.983,818,8.983,819,8.983,820,7.766,821,8.983,822,7.766,823,5.887]],["keywords/44",[]],["title/45",[213,322.109,824,736.357]],["content/45",[2,3.705,5,1.296,12,4.223,54,3.761,86,3.978,87,2.075,119,3.565,123,3.273,126,3.712,135,3.074,156,3.074,164,3.565,170,2.257,173,1.99,181,3.903,193,3.26,221,3.028,230,4.062,231,3.978,232,6.806,233,3.978,234,3.565,239,3.387,240,4.83,249,3.882,293,2.934,324,4.223,366,3.565,458,4.83,542,3.712,555,5.713,556,5.713,557,4.076,558,4.936,561,5.973,562,5.713,630,3.978,639,5.713,644,3.387,667,7.23,690,4.83,713,5.713,786,6.371,825,7.37,826,7.37,827,7.37,828,5.713,829,7.37,830,7.37,831,7.37,832,7.37,833,7.37]],["keywords/45",[]],["title/46",[87,171.102,88,294.024,119,294.024]],["content/46",[2,3.334,5,1.231,54,3.57,87,2.77,90,3.215,96,4.76,119,4.76,123,3.366,126,2.545,156,2.918,164,4.76,173,1.889,193,2.235,221,2.598,224,3.777,237,3.384,249,2.661,271,7.735,277,4.98,280,4.585,293,2.785,362,6.449,366,5.506,514,6.449,548,7.629,557,4.829,625,6.523,629,5.424,630,6.667,637,7.952,638,6.973,639,7.629,667,4.957,669,6.973,690,4.585,777,4.957,823,4.585,834,6.997,835,9.841,836,6.997,837,6.049,838,6.997,839,6.049,840,6.997,841,9.841,842,4.585,843,4.957]],["keywords/46",[]],["title/47",[5,106.906,315,430.679,844,398.314]],["content/47",[2,2.329,37,4.656,87,2.428,89,3.434,108,7.457,119,4.173,123,2.895,132,3.597,147,3.281,154,7.457,156,4.733,168,5.27,173,2.329,181,2.876,201,3.281,221,2.59,230,3.434,231,4.656,232,5.489,233,4.656,234,4.173,256,4.943,277,3.773,285,4.656,296,4.656,309,6.112,316,3.773,330,5.27,366,4.173,542,3.138,554,6.126,557,3.003,559,5.27,561,5.791,582,7.437,630,4.656,696,7.457,700,6.112,807,6.687,844,5.653,845,7.457,846,8.626,847,8.626,848,8.626,849,5.653,850,8.626,851,4.173,852,6.112,853,6.687]],["keywords/47",[]],["title/48",[114,636.554,823,482.509]],["content/48",[2,3.39,5,1.777,12,6.656,38,2.763,85,6.172,86,3.921,87,2.045,119,4.887,120,5.155,164,3.514,173,3.136,178,4.438,182,4.887,193,2.321,201,2.763,221,2.651,230,4.022,234,3.514,238,5.631,270,4.76,277,4.42,282,4.76,284,5.147,285,3.921,296,5.453,308,5.631,309,5.147,317,5.147,330,4.438,341,7.832,388,4.438,436,5.631,455,4.76,481,5.147,498,5.147,533,5.147,553,6.172,554,3.921,557,2.529,582,6.62,630,3.921,638,5.147,644,3.339,669,5.147,685,5.631,700,5.147,744,5.631,746,6.28,758,3.178,785,6.28,787,5.147,844,4.76,851,4.887,852,5.147,853,7.832,854,6.28,855,7.265,856,7.265,857,4.76,858,5.147,859,6.28,860,6.28,861,6.28,862,6.28,863,7.265,864,7.265,865,6.28,866,7.265]],["keywords/48",[]],["title/49",[867,570.45]],["content/49",[]],["keywords/49",[]],["title/50",[87,207.269,867,449.87]],["content/50",[5,2.148,87,2.722,89,3.849,123,2.788,134,6.336,156,4.032,196,5.909,249,3.678,275,8.005,281,4.677,305,6.336,321,6.336,578,6.336,758,5.344,851,4.677,854,8.359,857,6.336,867,8.595,868,8.359,869,8.359,870,9.67,871,8.359,872,13.392,873,9.67,874,7.496,875,12.216,876,5.908]],["keywords/50",[]],["title/51",[871,807.171]],["content/51",[5,2.248,123,2.917,181,3.467,196,6.183,213,5.591,221,2.917,230,5.088,458,6.814,557,5.026,558,5.03,877,9.805,878,11.049,879,8.989,880,8.989,881,10.398]],["keywords/51",[]],["title/52",[851,451.639]],["content/52",[2,3.436,5,1.816,9,9.018,123,2.905,181,4.244,196,4.995,213,4.518,230,5.492,231,5.574,232,6.157,233,5.574,237,4.995,458,6.767,558,4.995,560,4.746,788,6.767,842,6.767,851,4.995,882,6.767,883,10.327,884,10.327]],["keywords/52",[]],["title/53",[857,611.836]],["content/53",[2,3.802,12,4.603,62,6.227,76,4.908,103,3.198,123,2.989,126,2.922,150,6.612,181,4.367,201,3.055,205,3.692,220,4.908,221,2.47,224,4.336,230,3.198,231,4.336,232,5.235,233,4.336,234,6.335,235,4.099,296,5.842,439,5.264,483,5.692,557,4.262,558,5.235,559,4.908,560,3.692,561,5.523,582,7.092,828,6.227,851,5.235,852,5.692,857,5.264,867,6.612,882,5.264,885,8.033,886,8.033,887,8.033,888,6.227,889,8.033,890,8.033,891,5.692,892,8.033,893,8.033,894,8.033]],["keywords/53",[]],["title/54",[874,723.812]],["content/54",[109,6.676,123,2.881,132,4.249,133,9.785,134,8.271,141,6.676,147,5.216,181,3.397,198,4.928,213,4.457,221,2.881,237,4.928,256,5.838,324,5.838,504,8.271,557,3.547,559,6.225,842,6.676,895,10.189,896,10.189,897,10.189,898,10.189,899,10.189]],["keywords/54",[]],["title/55",[876,570.45]],["content/55",[5,1.816,9,9.018,86,5.574,87,2.907,123,2.905,126,3.757,147,4.841,173,2.788,181,3.443,198,4.995,221,2.357,234,6.157,256,5.917,486,6.767,551,5.27,557,3.596,558,4.995,782,8.006,867,6.309,876,7.776,900,10.327,901,10.327,902,10.327]],["keywords/55",[]],["title/56",[758,408.444]],["content/56",[]],["keywords/56",[]],["title/57",[147,355.151]],["content/57",[0,1.696,5,0.913,37,2.087,38,1.471,39,6.627,40,1.337,43,1.892,58,1.254,59,1.434,74,1.55,78,4.692,85,1.337,87,2.816,88,3.033,91,2.997,100,2.997,103,2.067,112,2.385,117,1.434,120,1.117,123,2.811,126,1.406,127,1.55,132,1.612,133,4.861,134,4.109,135,0.912,140,1.254,142,3.2,147,3.644,155,2.997,156,2.615,157,2.976,158,6.838,159,1.892,168,1.337,170,1.184,172,0.762,173,0.591,175,0.642,177,2.533,181,1.289,182,3.033,184,1.892,186,3.2,191,1.434,193,0.699,196,3.033,198,1.058,213,2.743,214,2.739,216,1.254,220,3.831,221,0.499,224,1.181,230,1.539,235,3.654,236,1.696,237,1.058,239,1.006,241,1.87,249,2.385,268,1.892,273,1.337,275,2.533,276,1.55,277,0.957,281,1.87,285,1.181,288,1.434,293,0.871,294,4.692,295,1.892,296,2.087,299,3.342,313,1.006,314,1.434,316,2.272,317,1.55,318,3.68,320,2.997,324,2.976,330,1.337,335,1.434,336,2.997,337,2.512,346,1.337,347,1.337,351,1.892,362,1.434,369,1.696,372,3.831,380,3.173,392,1.696,404,1.696,411,1.892,430,1.892,434,1.892,439,1.434,456,1.55,463,1.892,468,1.892,475,1.892,476,1.892,497,1.55,498,2.739,504,7.393,514,3.403,541,5.946,542,4.193,551,3.2,553,1.337,554,2.087,557,4.735,558,1.058,560,1.006,571,1.696,573,6.191,579,2.533,620,1.254,625,1.254,626,4.692,628,1.892,632,1.434,634,3.342,635,3.68,644,2.882,657,5.604,658,1.892,667,1.55,673,1.696,677,1.696,682,1.892,687,1.892,688,1.892,693,1.696,701,1.892,703,2.997,705,1.696,715,1.892,716,3.342,719,1.696,749,1.892,758,2.272,760,1.696,775,1.55,782,2.997,798,4.49,800,1.892,805,3.342,806,1.892,815,1.892,822,1.892,823,1.434,839,1.892,843,1.55,851,3.826,868,3.342,869,1.892,874,1.696,876,4.375,891,1.55,903,2.188,904,3.866,905,2.188,906,2.188,907,2.188,908,9.414,909,1.892,910,1.892,911,3.866,912,2.188,913,1.892,914,2.188,915,1.892,916,3.866,917,3.866,918,3.866,919,2.188,920,1.892,921,2.188,922,2.188,923,2.188,924,2.188,925,2.188,926,2.188,927,3.866,928,1.892,929,2.188,930,2.188,931,1.892,932,2.997,933,2.188,934,5.421,935,3.866,936,1.892,937,2.188,938,2.188,939,2.188,940,7.161,941,5.194,942,1.892,943,3.342,944,2.188,945,3.866,946,2.188,947,2.188,948,2.188,949,2.188,950,2.188,951,2.188,952,2.188,953,3.866,954,3.866,955,2.188,956,2.188,957,1.892,958,2.188,959,2.188,960,5.194,961,2.188,962,2.188,963,3.866,964,2.188,965,2.188,966,2.188,967,2.188,968,2.188,969,2.188,970,3.342,971,6.27,972,1.892,973,2.188,974,2.188,975,1.892,976,2.188,977,2.188,978,2.188,979,3.866,980,2.188,981,2.188,982,2.188,983,5.194,984,3.342,985,5.194,986,2.188,987,2.188,988,2.188,989,2.188,990,2.188,991,2.188,992,2.188,993,2.188,994,3.866,995,2.188,996,2.188,997,2.188,998,2.188,999,5.194,1000,1.892,1001,1.892,1002,3.866,1003,2.188,1004,2.188,1005,2.188,1006,1.892,1007,2.188,1008,3.866,1009,1.892,1010,1.892,1011,2.188,1012,1.892,1013,1.892,1014,2.188,1015,2.188,1016,2.188]],["keywords/57",[]],["title/58",[932,723.812]],["content/58",[5,0.768,11,1.949,32,1.216,37,1.357,39,1.949,58,1.441,59,1.647,78,3.792,87,0.708,101,2.173,103,1.001,112,0.956,117,1.647,123,3.173,126,0.915,132,1.821,135,2.414,140,4.484,142,2.953,147,2.201,150,1.536,157,1.441,172,0.875,173,2.316,174,3.385,175,2.029,182,2.112,183,3.385,186,3.527,191,2.861,193,2.208,198,1.216,205,1.155,213,1.91,221,0.574,235,1.283,236,6.652,237,1.216,244,1.647,246,1.781,249,1.661,252,1.155,256,1.441,285,1.357,289,5.63,293,1.001,294,3.792,296,1.357,313,2.007,316,2.532,318,1.781,320,1.949,321,3.792,322,1.781,324,1.441,330,2.668,335,1.647,348,1.536,350,1.781,355,4.101,359,2.173,362,1.647,376,1.949,380,1.536,392,1.949,442,3.094,481,1.781,483,1.781,497,3.094,500,5.003,504,5.623,541,2.502,542,4.393,544,1.949,551,4.378,552,3.385,553,5.242,554,5.267,555,4.486,556,8.767,557,4.866,576,2.173,620,1.441,632,1.647,635,3.094,644,2.007,648,4.898,657,4.101,677,1.949,681,2.173,683,2.173,686,1.949,694,1.781,700,1.781,714,2.173,719,5.359,728,2.173,731,2.173,741,2.173,758,1.91,766,2.173,768,2.173,777,1.781,787,1.781,844,5.128,851,2.799,858,1.781,876,6.247,891,1.781,908,10.834,915,2.173,928,2.173,932,7.144,957,3.775,970,2.173,972,2.173,984,2.173,1000,2.173,1001,5.003,1006,2.173,1010,2.173,1012,3.775,1013,2.173,1017,10.992,1018,6.765,1019,7.825,1020,2.514,1021,2.514,1022,2.514,1023,2.514,1024,2.514,1025,6.913,1026,4.366,1027,5.788,1028,2.514,1029,9.216,1030,10.621,1031,2.514,1032,2.514,1033,2.514,1034,2.514,1035,5.976,1036,2.514,1037,2.514,1038,2.514,1039,2.514,1040,2.514,1041,2.514,1042,2.514,1043,2.514,1044,2.514,1045,2.514,1046,5.788,1047,2.173,1048,2.514,1049,2.514,1050,2.173,1051,2.514,1052,2.514,1053,2.514,1054,2.514,1055,2.514,1056,2.514,1057,2.514,1058,2.514,1059,2.514,1060,2.514,1061,2.514,1062,2.514,1063,6.913,1064,5.788,1065,2.514,1066,2.514,1067,2.514,1068,3.775,1069,2.514,1070,2.173,1071,2.514,1072,2.514,1073,2.514,1074,2.514,1075,2.173,1076,2.514,1077,2.514,1078,2.514,1079,2.514,1080,2.173,1081,2.514,1082,2.514,1083,2.514,1084,2.514,1085,4.366,1086,2.173,1087,2.514,1088,2.514,1089,2.514,1090,2.173]],["keywords/58",[]],["title/59",[554,503.989]],["content/59",[2,2.711,5,1.858,38,1.135,59,3.314,77,2.579,85,1.823,86,1.61,87,1.423,103,1.188,119,2.446,123,3.11,126,1.085,132,4.188,134,4.313,135,2.745,147,2.948,150,1.823,156,2.109,157,2.897,172,1.761,173,2.971,175,3.231,178,3.09,181,3.909,198,3.749,201,1.923,204,3.314,213,4.815,215,2.114,221,3.053,224,1.61,230,3.998,232,2.446,233,4.183,234,1.443,235,1.522,237,1.443,239,3.562,244,4.313,249,1.923,252,1.371,256,4.97,271,1.709,277,2.212,293,1.188,296,5.421,316,2.212,326,5.102,344,2.313,348,1.823,350,2.114,377,1.823,380,3.09,455,1.955,470,2.313,530,6.008,551,4.426,552,3.92,553,5.3,554,5.086,557,4.184,558,5.11,559,6.454,560,3.562,561,1.522,578,1.955,582,4.313,620,1.709,637,1.823,644,1.371,657,3.583,661,2.313,666,2.579,669,6.146,685,2.313,694,2.114,732,2.579,738,7.499,758,3.39,764,2.313,779,2.313,788,3.314,820,2.579,828,2.313,842,1.955,844,1.955,845,2.579,851,5.671,852,3.583,853,5.102,857,1.955,858,2.114,859,2.579,860,2.579,861,2.579,862,2.579,867,1.823,876,6.454,877,4.663,878,5.69,879,6.7,880,2.579,882,1.955,888,2.313,908,6.724,909,6.7,913,2.579,942,2.579,1030,4.372,1068,4.372,1070,2.579,1075,2.579,1080,2.579,1090,4.372,1091,5.057,1092,5.057,1093,2.983,1094,7.75,1095,5.057,1096,2.983,1097,2.983,1098,5.057,1099,6.582,1100,6.582,1101,5.057,1102,5.057,1103,5.057,1104,2.983,1105,2.983,1106,2.983,1107,2.983,1108,5.057,1109,2.983,1110,2.983,1111,2.983,1112,2.983,1113,2.983]],["keywords/59",[]],["title/60",[849,611.836]],["content/60",[5,2.164,76,4.236,123,2.808,135,2.891,156,5.613,162,5.374,170,2.994,181,3.26,196,3.353,198,3.353,207,6.928,221,2.232,230,4.509,234,3.353,239,5.654,249,4.309,301,4.912,314,4.543,316,3.033,334,5.993,486,4.543,542,4.897,560,6.357,561,4.989,686,5.374,740,5.993,747,8.453,758,5.381,760,5.374,776,5.993,788,6.407,837,8.453,843,4.912,849,7.423,877,6.928,882,7.423,888,7.58,934,8.453,975,5.993,1018,5.993,1114,6.933,1115,6.933,1116,6.933,1117,8.453,1118,6.933,1119,9.778,1120,6.933,1121,6.933,1122,6.933,1123,9.778]],["keywords/60",[]],["title/61",[707,661.551]],["content/61",[2,3.203,32,2.369,34,3.21,76,2.992,112,1.863,123,3.294,126,3.36,132,3.852,135,2.043,170,1.5,181,4.464,187,3.47,196,2.369,199,5.644,205,2.251,214,3.47,216,2.807,221,2.915,224,2.644,230,3.01,232,5.982,239,2.251,240,3.21,245,3.21,249,4.27,251,3.797,285,2.644,288,3.21,314,3.21,367,3.797,380,2.992,421,3.797,486,3.21,542,4.647,551,3.859,557,4.447,558,2.369,559,2.992,560,5.684,561,5.3,579,3.21,581,4.234,583,3.797,610,3.47,689,4.234,703,3.797,707,9.288,758,4.544,779,3.797,788,3.21,807,8.703,842,3.21,843,3.47,849,3.21,865,4.234,877,3.47,882,3.21,891,3.47,936,6.538,943,4.234,1086,4.234,1124,4.898,1125,4.898,1126,4.234,1127,7.563,1128,4.898,1129,7.563,1130,4.898,1131,7.563,1132,6.538,1133,4.898,1134,4.898,1135,4.898,1136,7.563,1137,4.898,1138,4.898,1139,4.898,1140,4.898,1141,4.898,1142,9.238,1143,7.563,1144,4.898,1145,4.898,1146,4.898,1147,4.898,1148,4.898,1149,4.898,1150,4.898,1151,4.898,1152,4.898]],["keywords/61",[]],["title/62",[1153,807.171]],["content/62",[123,3.291,162,8.864,172,3.038,181,4.253,182,4.22,221,2.911,232,4.22,239,5.255,289,5.331,301,6.182,316,5.002,362,5.717,456,6.182,542,4.64,557,4.441,560,5.255,561,4.452,626,5.717,644,4.01,692,7.543,705,6.764,758,5.002,851,5.531,858,6.182,931,9.885,1035,7.543,1153,9.885,1154,8.725,1155,8.725,1156,8.725,1157,8.725,1158,8.725,1159,8.725,1160,8.725]],["keywords/62",[]],["title/63",[197,245.513,758,322.109]],["content/63",[2,3.04,5,2.092,40,3.012,62,3.822,85,4.643,97,3.822,103,3.692,104,3.822,123,2.922,126,3.374,132,2.056,156,3.868,163,3.822,169,3.822,172,3.229,173,2.504,181,4.133,197,2.534,200,3.493,201,1.875,205,2.266,208,2.825,209,3.493,213,2.157,216,2.825,221,3.203,225,4.262,230,3.692,232,5.042,234,5.446,239,5.883,244,6.078,249,3.965,252,4.262,273,4.643,281,2.385,288,3.23,301,3.493,310,3.822,324,2.825,378,4.262,442,3.493,445,3.822,446,5.892,491,3.012,524,3.822,542,3.792,551,2.516,554,4.102,558,3.676,560,5.697,561,5.319,562,8.08,583,5.892,610,3.493,644,3.493,707,3.493,758,5.423,775,3.493,777,3.493,787,3.493,823,3.23,849,3.23,910,4.262,920,4.262,1009,4.262,1047,4.262,1050,4.262,1117,6.57,1126,6.57,1132,6.57,1161,4.93,1162,4.93,1163,7.6,1164,7.6,1165,4.93,1166,4.93,1167,4.93,1168,4.93,1169,4.93,1170,4.93,1171,4.93,1172,4.93,1173,4.93,1174,4.93,1175,4.93,1176,4.93,1177,4.93]],["keywords/63",[]]],"invertedIndex":[["",{"_index":123,"title":{"40":{"position":[[11,1]]}},"content":{"7":{"position":[[149,1]]},"11":{"position":[[750,1],[801,1],[833,1],[997,1],[1036,1],[1251,1],[1302,1],[1342,1]]},"23":{"position":[[744,1]]},"25":{"position":[[423,1],[541,1],[556,1],[569,1],[571,1],[661,1],[663,1],[736,1],[794,1],[838,1],[953,1],[955,1],[1028,1],[1068,1]]},"26":{"position":[[166,1],[174,1],[190,1],[198,1],[200,1],[202,1],[293,1],[313,1],[334,1],[336,1],[421,1],[423,1],[531,1],[533,2],[575,1],[577,2],[580,1],[664,1],[666,1],[732,2],[735,1],[806,1],[808,2],[850,1],[852,1],[854,2],[896,1],[898,1],[900,1]]},"27":{"position":[[243,2],[282,2]]},"31":{"position":[[145,3]]},"32":{"position":[[278,3]]},"37":{"position":[[356,1],[380,1]]},"38":{"position":[[220,1],[268,1],[286,1],[299,1],[301,1],[303,1]]},"45":{"position":[[131,1],[146,1],[159,1],[207,1],[219,1],[307,1],[319,1],[432,1]]},"46":{"position":[[161,1],[175,1],[428,1],[441,1],[449,1],[456,1],[458,1],[561,1],[569,1],[576,1],[578,2]]},"47":{"position":[[341,1],[531,1],[533,1]]},"50":{"position":[[276,1],[402,1]]},"51":{"position":[[132,1],[198,1]]},"52":{"position":[[71,1],[184,1]]},"53":{"position":[[56,1],[104,1],[116,1],[340,1]]},"54":{"position":[[113,1],[205,1]]},"55":{"position":[[90,1],[179,1]]},"57":{"position":[[264,1],[651,1],[685,1],[1324,1],[1358,1],[1902,1],[1936,1],[2572,1],[2606,1],[2619,1],[2772,1],[3788,1],[3822,1],[4662,1],[4696,1],[5389,1],[5423,1],[5948,1],[5982,1]]},"58":{"position":[[295,1],[574,1],[608,1],[803,1],[837,1],[1042,1],[1076,1],[1285,1],[1319,1],[1549,1],[1583,1],[1967,1],[2001,1],[2623,1],[2657,1],[2831,1],[2865,1],[3064,1],[3098,1],[3281,1],[3315,1],[3738,1],[3772,1],[4448,1],[4482,1],[5162,1],[5196,1],[5536,1],[5570,1]]},"59":{"position":[[122,1],[176,1],[701,1],[814,1],[946,1],[1000,1],[1204,1],[1270,1],[1460,1],[1556,1],[1772,1],[1901,1],[2146,1],[2276,1],[2649,1],[2788,1],[3069,1],[3262,1],[3507,1],[3528,1],[3692,1]]},"60":{"position":[[427,1],[472,1],[861,1],[892,1]]},"61":{"position":[[310,1],[325,1],[337,1],[360,1],[372,1],[430,1],[445,1],[492,1],[505,1],[613,1],[869,1],[884,1],[897,1],[931,1],[1553,1],[1671,1]]},"62":{"position":[[91,1],[106,1],[119,1],[180,1],[192,1],[216,1]]},"63":{"position":[[357,1],[380,1],[392,1],[531,1],[1337,1],[1360,1],[1372,1],[1404,1]]}},"keywords":{}}],["0.0.0.0:8000",{"_index":614,"title":{},"content":{"27":{"position":[[267,14]]}},"keywords":{}}],["05",{"_index":65,"title":{},"content":{"3":{"position":[[239,2],[260,2]]}},"keywords":{}}],["1",{"_index":271,"title":{"13":{"position":[[0,2]]},"17":{"position":[[0,2]]},"40":{"position":[[13,1]]}},"content":{"26":{"position":[[354,2]]},"37":{"position":[[358,1],[382,1]]},"46":{"position":[[163,2],[166,1],[177,2],[180,1],[430,2],[433,1]]},"59":{"position":[[3509,1]]}},"keywords":{}}],["10",{"_index":1089,"title":{},"content":{"58":{"position":[[5471,3]]}},"keywords":{}}],["100",{"_index":436,"title":{},"content":{"21":{"position":[[207,4]]},"43":{"position":[[176,3],[229,3],[495,3]]},"48":{"position":[[760,3]]}},"keywords":{}}],["1000",{"_index":1088,"title":{},"content":{"58":{"position":[[5458,5]]}},"keywords":{}}],["101",{"_index":785,"title":{},"content":{"43":{"position":[[306,3],[582,3]]},"48":{"position":[[751,3]]}},"keywords":{}}],["12",{"_index":1157,"title":{},"content":{"62":{"position":[[175,4]]}},"keywords":{}}],["2",{"_index":284,"title":{"14":{"position":[[0,2]]},"18":{"position":[[0,2]]}},"content":{"26":{"position":[[598,2]]},"48":{"position":[[822,2]]}},"keywords":{}}],["2019",{"_index":64,"title":{},"content":{"3":{"position":[[234,4]]}},"keywords":{}}],["256",{"_index":727,"title":{},"content":{"39":{"position":[[8,3]]}},"keywords":{}}],["3",{"_index":291,"title":{"15":{"position":[[0,2]]},"19":{"position":[[0,2]]}},"content":{},"keywords":{}}],["30",{"_index":66,"title":{},"content":{"3":{"position":[[242,2],[263,2]]}},"keywords":{}}],["4",{"_index":408,"title":{"20":{"position":[[0,2]]}},"content":{},"keywords":{}}],["5",{"_index":430,"title":{"21":{"position":[[0,2]]}},"content":{"57":{"position":[[6066,1]]}},"keywords":{}}],["5000",{"_index":1008,"title":{},"content":{"57":{"position":[[5942,5],[6044,4]]}},"keywords":{}}],["6",{"_index":450,"title":{"22":{"position":[[0,2]]}},"content":{},"keywords":{}}],["60",{"_index":1029,"title":{},"content":{"58":{"position":[[512,3],[741,3],[980,3],[1223,3],[2561,3],[2769,3],[3002,3]]}},"keywords":{}}],["7",{"_index":464,"title":{"23":{"position":[[0,2]]}},"content":{},"keywords":{}}],["8",{"_index":493,"title":{"24":{"position":[[0,2]]}},"content":{},"keywords":{}}],["80",{"_index":924,"title":{},"content":{"57":{"position":[[884,2]]}},"keywords":{}}],["8000",{"_index":916,"title":{},"content":{"57":{"position":[[618,5],[1857,5]]}},"keywords":{}}],["8080",{"_index":159,"title":{},"content":{"8":{"position":[[662,5]]},"57":{"position":[[890,5]]}},"keywords":{}}],["8080:8080",{"_index":152,"title":{},"content":{"8":{"position":[[457,9]]}},"keywords":{}}],["8081:8081",{"_index":153,"title":{},"content":{"8":{"position":[[470,9]]}},"keywords":{}}],["8090",{"_index":918,"title":{},"content":{"57":{"position":[[645,5],[724,5]]}},"keywords":{}}],["abov",{"_index":237,"title":{},"content":{"11":{"position":[[868,5]]},"25":{"position":[[1074,5],[1344,5]]},"27":{"position":[[130,6]]},"42":{"position":[[101,5]]},"46":{"position":[[543,5]]},"52":{"position":[[202,6]]},"54":{"position":[[215,5]]},"57":{"position":[[4714,6]]},"58":{"position":[[3790,6]]},"59":{"position":[[2294,6]]}},"keywords":{}}],["access",{"_index":196,"title":{},"content":{"10":{"position":[[635,6]]},"15":{"position":[[290,6]]},"16":{"position":[[767,6]]},"18":{"position":[[759,10]]},"50":{"position":[[78,10],[132,6]]},"51":{"position":[[73,6],[237,6]]},"52":{"position":[[229,6]]},"57":{"position":[[767,10],[1631,6],[3123,6],[3355,11]]},"60":{"position":[[1002,10]]},"61":{"position":[[246,8]]}},"keywords":{}}],["accord",{"_index":1080,"title":{},"content":{"58":{"position":[[4956,10]]},"59":{"position":[[3336,9]]}},"keywords":{}}],["accur",{"_index":745,"title":{},"content":{"39":{"position":[[653,8]]}},"keywords":{}}],["acquir",{"_index":789,"title":{},"content":{"43":{"position":[[485,9]]}},"keywords":{}}],["act",{"_index":177,"title":{},"content":{"10":{"position":[[179,4],[585,4]]},"11":{"position":[[220,4]]},"22":{"position":[[54,3]]},"32":{"position":[[48,6]]},"57":{"position":[[5709,4],[6339,4]]}},"keywords":{}}],["activ",{"_index":928,"title":{},"content":{"57":{"position":[[1010,10]]},"58":{"position":[[4871,10]]}},"keywords":{}}],["actual",{"_index":163,"title":{},"content":{"8":{"position":[[787,6]]},"39":{"position":[[965,8]]},"63":{"position":[[1234,6]]}},"keywords":{}}],["ad",{"_index":59,"title":{},"content":{"3":{"position":[[151,5]]},"16":{"position":[[876,5]]},"57":{"position":[[2149,5]]},"58":{"position":[[3589,5]]},"59":{"position":[[218,5],[1730,5]]}},"keywords":{}}],["adapt",{"_index":489,"title":{},"content":{"23":{"position":[[736,7]]}},"keywords":{}}],["add",{"_index":53,"title":{},"content":{"3":{"position":[[68,3]]},"6":{"position":[[82,3]]},"13":{"position":[[348,3]]},"26":{"position":[[914,3]]}},"keywords":{}}],["addit",{"_index":293,"title":{},"content":{"15":{"position":[[3,9]]},"21":{"position":[[372,10]]},"25":{"position":[[1125,9]]},"26":{"position":[[536,10],[811,10],[857,10],[918,10]]},"33":{"position":[[177,10]]},"35":{"position":[[53,8]]},"37":{"position":[[486,10],[589,10]]},"39":{"position":[[1035,10]]},"43":{"position":[[450,10],[748,10]]},"45":{"position":[[629,10]]},"46":{"position":[[716,10]]},"57":{"position":[[1818,10]]},"58":{"position":[[1778,10]]},"59":{"position":[[2844,10]]}},"keywords":{}}],["addition",{"_index":367,"title":{},"content":{"18":{"position":[[292,13]]},"36":{"position":[[262,13]]},"61":{"position":[[1292,13]]}},"keywords":{}}],["address",{"_index":807,"title":{},"content":{"43":{"position":[[1038,7]]},"47":{"position":[[176,7]]},"61":{"position":[[412,8],[421,8],[437,7],[963,7],[1075,7]]}},"keywords":{}}],["adipisc",{"_index":20,"title":{},"content":{"0":{"position":[[166,10],[345,10],[524,10],[703,10],[882,10],[1061,10],[1240,10],[1419,10],[1598,10],[1777,10],[1956,10],[2135,10],[2314,10],[2493,10],[2672,10],[2851,10]]},"1":{"position":[[40,10]]}},"keywords":{}}],["adjust",{"_index":913,"title":{},"content":{"57":{"position":[[390,6]]},"59":{"position":[[3329,6]]}},"keywords":{}}],["advantag",{"_index":332,"title":{},"content":{"16":{"position":[[735,9]]}},"keywords":{}}],["adversari",{"_index":1015,"title":{},"content":{"57":{"position":[[6416,11]]}},"keywords":{}}],["affect",{"_index":510,"title":{},"content":{"24":{"position":[[334,9]]},"39":{"position":[[424,6],[1532,6]]}},"keywords":{}}],["ag",{"_index":931,"title":{},"content":{"57":{"position":[[1100,3]]},"62":{"position":[[170,4],[207,4]]}},"keywords":{}}],["against",{"_index":985,"title":{},"content":{"57":{"position":[[4292,7],[5729,7],[6366,7]]}},"keywords":{}}],["agent",{"_index":1060,"title":{},"content":{"58":{"position":[[3121,5]]}},"keywords":{}}],["aim",{"_index":1049,"title":{},"content":{"58":{"position":[[2138,5]]}},"keywords":{}}],["alert("button",{"_index":46,"title":{},"content":{"2":{"position":[[152,18]]}},"keywords":{}}],["algorithm",{"_index":390,"title":{},"content":{"19":{"position":[[172,11]]}},"keywords":{}}],["align",{"_index":685,"title":{},"content":{"36":{"position":[[464,6]]},"48":{"position":[[251,6]]},"59":{"position":[[3832,6]]}},"keywords":{}}],["aliquam",{"_index":30,"title":{},"content":{"0":{"position":[[259,7],[438,7],[617,7],[796,7],[975,7],[1154,7],[1333,7],[1512,7],[1691,7],[1870,7],[2049,7],[2228,7],[2407,7],[2586,7],[2765,7],[2944,7]]},"1":{"position":[[133,7]]}},"keywords":{}}],["aliv",{"_index":1019,"title":{},"content":{"58":{"position":[[150,5],[897,5],[1158,5],[1387,5],[2924,5]]}},"keywords":{}}],["allow",{"_index":644,"title":{},"content":{"31":{"position":[[182,6]]},"32":{"position":[[315,6]]},"39":{"position":[[796,6]]},"44":{"position":[[207,6]]},"45":{"position":[[447,6]]},"48":{"position":[[611,6]]},"57":{"position":[[2232,6],[3518,8],[5221,6],[5640,7]]},"58":{"position":[[23,6],[3826,5]]},"59":{"position":[[2462,6]]},"62":{"position":[[21,6]]},"63":{"position":[[70,6],[1793,6]]}},"keywords":{}}],["allowedhead",{"_index":1063,"title":{},"content":{"58":{"position":[[3318,15],[3338,14],[3472,14],[3801,14]]}},"keywords":{}}],["alreadi",{"_index":82,"title":{},"content":{"5":{"position":[[13,7]]},"6":{"position":[[13,7]]},"23":{"position":[[191,7]]},"44":{"position":[[405,8]]}},"keywords":{}}],["alter",{"_index":740,"title":{},"content":{"39":{"position":[[482,5],[1340,7]]},"60":{"position":[[60,5]]}},"keywords":{}}],["although",{"_index":975,"title":{},"content":{"57":{"position":[[3829,8]]},"60":{"position":[[528,8]]}},"keywords":{}}],["alway",{"_index":920,"title":{},"content":{"57":{"position":[[808,6]]},"63":{"position":[[1739,6]]}},"keywords":{}}],["amet",{"_index":18,"title":{},"content":{"0":{"position":[[148,5],[300,4],[327,5],[479,4],[506,5],[658,4],[685,5],[837,4],[864,5],[1016,4],[1043,5],[1195,4],[1222,5],[1374,4],[1401,5],[1553,4],[1580,5],[1732,4],[1759,5],[1911,4],[1938,5],[2090,4],[2117,5],[2269,4],[2296,5],[2448,4],[2475,5],[2627,4],[2654,5],[2806,4],[2833,5],[2985,4]]},"1":{"position":[[22,5],[174,4]]}},"keywords":{}}],["amount",{"_index":342,"title":{},"content":{"17":{"position":[[117,6]]}},"keywords":{}}],["anoth",{"_index":286,"title":{},"content":{"14":{"position":[[0,7]]},"18":{"position":[[0,7]]},"37":{"position":[[610,7]]},"43":{"position":[[521,7]]}},"keywords":{}}],["anticip",{"_index":678,"title":{},"content":{"36":{"position":[[190,13]]}},"keywords":{}}],["anyth",{"_index":402,"title":{},"content":{"19":{"position":[[391,8]]}},"keywords":{}}],["api",{"_index":175,"title":{"11":{"position":[[0,3]]}},"content":{"10":{"position":[[134,3],[150,3],[381,3],[561,3],[573,3]]},"11":{"position":[[0,3],[60,4],[81,3],[158,4],[211,3],[256,5],[267,3],[300,3],[625,4],[1093,4],[1236,4]]},"12":{"position":[[283,3]]},"13":{"position":[[32,3],[113,3],[306,4]]},"14":{"position":[[23,3],[198,5],[279,4]]},"15":{"position":[[13,3],[165,3],[488,3]]},"16":{"position":[[48,3],[192,3],[307,4],[851,4],[1005,4],[1064,5]]},"17":{"position":[[156,3]]},"23":{"position":[[78,3],[207,3],[263,3],[732,3]]},"25":{"position":[[92,4],[157,3],[198,3],[722,3],[1014,3]]},"35":{"position":[[265,4]]},"36":{"position":[[94,5],[447,3]]},"37":{"position":[[324,4],[395,3],[462,3],[541,3],[618,4],[732,4],[921,3],[1342,3]]},"39":{"position":[[263,3],[470,4]]},"41":{"position":[[91,4]]},"42":{"position":[[148,4]]},"43":{"position":[[377,4],[419,3],[1131,3]]},"57":{"position":[[2109,4]]},"58":{"position":[[3722,3],[3857,3],[4168,5],[4578,3]]},"59":{"position":[[93,4],[317,4],[380,4],[600,4],[842,3],[1011,3],[1319,3],[1611,3],[1926,3]]}},"keywords":{}}],["api/data"",{"_index":956,"title":{},"content":{"57":{"position":[[2668,15]]}},"keywords":{}}],["api_endpoint",{"_index":899,"title":{},"content":{"54":{"position":[[288,13]]}},"keywords":{}}],["apikey",{"_index":960,"title":{},"content":{"57":{"position":[[2817,6],[3001,6],[3083,7]]}},"keywords":{}}],["appli",{"_index":703,"title":{},"content":{"37":{"position":[[993,5]]},"57":{"position":[[28,7],[5895,8]]},"61":{"position":[[655,7]]}},"keywords":{}}],["applic",{"_index":216,"title":{},"content":{"11":{"position":[[433,11]]},"13":{"position":[[206,12]]},"43":{"position":[[621,12],[1099,12]]},"44":{"position":[[89,12]]},"57":{"position":[[3629,12]]},"61":{"position":[[829,12]]},"63":{"position":[[1917,12]]}},"keywords":{}}],["application'",{"_index":866,"title":{},"content":{"48":{"position":[[915,13]]}},"keywords":{}}],["approach",{"_index":744,"title":{},"content":{"39":{"position":[[609,8]]},"44":{"position":[[198,8]]},"48":{"position":[[698,9]]}},"keywords":{}}],["appropri",{"_index":184,"title":{},"content":{"10":{"position":[[278,11]]},"57":{"position":[[6216,11]]}},"keywords":{}}],["architectur",{"_index":167,"title":{"10":{"position":[[13,13]]},"34":{"position":[[0,12]]},"35":{"position":[[11,13]]}},"content":{"10":{"position":[[37,12],[520,13]]},"16":{"position":[[380,13]]},"20":{"position":[[245,12]]},"36":{"position":[[451,12]]},"39":{"position":[[1616,12]]}},"keywords":{}}],["arg",{"_index":871,"title":{"51":{"position":[[0,5]]}},"content":{"50":{"position":[[278,5]]}},"keywords":{}}],["args.id",{"_index":881,"title":{},"content":{"51":{"position":[[218,7]]}},"keywords":{}}],["argument",{"_index":877,"title":{},"content":{"51":{"position":[[14,9],[84,9],[251,8]]},"59":{"position":[[331,8],[2996,9],[3358,8]]},"60":{"position":[[245,8],[727,8]]},"61":{"position":[[729,9]]}},"keywords":{}}],["aris",{"_index":848,"title":{},"content":{"47":{"position":[[211,6]]}},"keywords":{}}],["array",{"_index":1086,"title":{},"content":{"58":{"position":[[5372,5]]},"61":{"position":[[1361,5]]}},"keywords":{}}],["aspect",{"_index":681,"title":{},"content":{"36":{"position":[[310,8]]},"58":{"position":[[53,7]]}},"keywords":{}}],["assist",{"_index":834,"title":{},"content":{"46":{"position":[[41,6]]}},"keywords":{}}],["associ",{"_index":667,"title":{},"content":{"35":{"position":[[399,10]]},"45":{"position":[[517,10],[661,10]]},"46":{"position":[[748,10]]},"57":{"position":[[4113,10]]}},"keywords":{}}],["attack",{"_index":299,"title":{},"content":{"15":{"position":[[233,7]]},"57":{"position":[[4061,9],[6402,7]]}},"keywords":{}}],["attempt",{"_index":484,"title":{},"content":{"23":{"position":[[606,9]]}},"keywords":{}}],["attribut",{"_index":1114,"title":{},"content":{"60":{"position":[[70,10]]}},"keywords":{}}],["aut",{"_index":589,"title":{},"content":{"26":{"position":[[455,3]]}},"keywords":{}}],["autem"",{"_index":604,"title":{},"content":{"26":{"position":[[720,11]]}},"keywords":{}}],["authent",{"_index":189,"title":{},"content":{"10":{"position":[[424,15]]},"15":{"position":[[178,14]]},"23":{"position":[[113,15]]},"36":{"position":[[329,14]]}},"keywords":{}}],["author",{"_index":58,"title":{},"content":{"3":{"position":[[136,7]]},"36":{"position":[[348,13]]},"41":{"position":[[155,7]]},"42":{"position":[[206,6]]},"43":{"position":[[266,6],[553,6]]},"57":{"position":[[3015,13]]},"58":{"position":[[3837,13]]}},"keywords":{}}],["author'",{"_index":780,"title":{},"content":{"43":{"position":[[40,8]]}},"keywords":{}}],["authors.yml",{"_index":60,"title":{},"content":{"3":{"position":[[160,12]]}},"keywords":{}}],["automat",{"_index":716,"title":{},"content":{"37":{"position":[[1299,13]]},"57":{"position":[[5036,13],[6149,13]]}},"keywords":{}}],["avail",{"_index":805,"title":{},"content":{"43":{"position":[[997,13]]},"57":{"position":[[1753,10],[3690,10]]}},"keywords":{}}],["backend",{"_index":185,"title":{"16":{"position":[[0,7]]}},"content":{"10":{"position":[[290,7],[347,7]]},"16":{"position":[[88,7]]},"18":{"position":[[709,8]]},"20":{"position":[[85,8]]},"21":{"position":[[33,7]]},"24":{"position":[[4,8]]}},"keywords":{}}],["base",{"_index":552,"title":{},"content":{"25":{"position":[[435,4]]},"58":{"position":[[4150,4],[4672,4]]},"59":{"position":[[584,4],[635,4]]}},"keywords":{}}],["baseurl",{"_index":1030,"title":{},"content":{"58":{"position":[[516,8],[745,8],[984,8],[1227,8],[1491,8],[1909,8],[2162,7],[2232,7],[2565,8],[2773,8],[3006,8],[3223,8],[4114,8],[4280,8],[4329,8],[4513,7]]},"59":{"position":[[556,8],[755,8]]}},"keywords":{}}],["bash",{"_index":124,"title":{},"content":{"7":{"position":[[151,4]]}},"keywords":{}}],["basic",{"_index":379,"title":{},"content":{"18":{"position":[[732,9]]},"25":{"position":[[1176,9]]},"44":{"position":[[362,6]]}},"keywords":{}}],["batch",{"_index":844,"title":{"47":{"position":[[14,9]]}},"content":{"47":{"position":[[0,8]]},"48":{"position":[[302,5]]},"58":{"position":[[5199,6],[5235,5],[5294,7],[5348,7],[5416,7]]},"59":{"position":[[3883,5]]}},"keywords":{}}],["be",{"_index":483,"title":{},"content":{"23":{"position":[[600,5]]},"37":{"position":[[506,5]]},"53":{"position":[[645,5]]},"58":{"position":[[2385,5]]}},"keywords":{}}],["becom",{"_index":421,"title":{},"content":{"20":{"position":[[204,6]]},"39":{"position":[[1083,7]]},"61":{"position":[[853,8]]}},"keywords":{}}],["befor",{"_index":140,"title":{},"content":{"8":{"position":[[69,6]]},"19":{"position":[[384,6]]},"37":{"position":[[1078,6]]},"38":{"position":[[135,6]]},"44":{"position":[[107,6],[285,6]]},"57":{"position":[[5655,6]]},"58":{"position":[[445,6],[1172,6],[1693,6],[2378,6],[2509,6]]}},"keywords":{}}],["behalf",{"_index":319,"title":{},"content":{"16":{"position":[[211,6]]}},"keywords":{}}],["behav",{"_index":905,"title":{},"content":{"57":{"position":[[137,7]]}},"keywords":{}}],["behind",{"_index":734,"title":{},"content":{"39":{"position":[[252,6]]}},"keywords":{}}],["below",{"_index":117,"title":{},"content":{"7":{"position":[[17,5]]},"8":{"position":[[62,6]]},"27":{"position":[[236,6]]},"57":{"position":[[504,6]]},"58":{"position":[[366,6]]}},"keywords":{}}],["benchmark",{"_index":400,"title":{},"content":{"19":{"position":[[354,12]]}},"keywords":{}}],["benefici",{"_index":976,"title":{},"content":{"57":{"position":[[3855,10]]}},"keywords":{}}],["best",{"_index":360,"title":{},"content":{"18":{"position":[[153,4]]},"37":{"position":[[902,4]]}},"keywords":{}}],["better",{"_index":1151,"title":{},"content":{"61":{"position":[[1800,6]]}},"keywords":{}}],["between",{"_index":321,"title":{},"content":{"16":{"position":[[394,7]]},"22":{"position":[[70,7]]},"23":{"position":[[338,7]]},"50":{"position":[[168,7]]},"58":{"position":[[879,7],[2902,7],[5335,7]]}},"keywords":{}}],["beyond",{"_index":536,"title":{},"content":{"24":{"position":[[873,6]]}},"keywords":{}}],["bff",{"_index":312,"title":{"16":{"position":[[21,6]]}},"content":{"16":{"position":[[2,3],[177,3],[316,3],[589,4],[722,3],[1113,3]]},"17":{"position":[[35,3],[190,3],[249,3],[403,3]]},"18":{"position":[[31,3],[99,3],[310,3],[584,3],[669,3]]},"19":{"position":[[8,3]]},"21":{"position":[[72,3],[152,3],[521,3]]},"22":{"position":[[0,3],[244,3],[385,3]]},"23":{"position":[[0,3],[282,3],[366,3],[383,3],[634,3],[650,4]]},"24":{"position":[[26,5],[248,3],[415,3]]}},"keywords":{}}],["big",{"_index":412,"title":{},"content":{"20":{"position":[[41,3]]}},"keywords":{}}],["bit",{"_index":621,"title":{},"content":{"27":{"position":[[438,4]]}},"keywords":{}}],["blog",{"_index":1,"title":{"0":{"position":[[5,4]]},"1":{"position":[[6,4]]},"2":{"position":[[4,4]]}},"content":{"0":{"position":[[35,4],[93,4]]},"2":{"position":[[0,4],[111,4]]},"3":{"position":[[11,8],[48,4],[107,4],[131,4],[177,4],[285,4],[333,4],[355,4],[407,5],[449,5]]}},"keywords":{}}],["blue",{"_index":440,"title":{},"content":{"21":{"position":[[334,4]]}},"keywords":{}}],["blueprint",{"_index":636,"title":{"36":{"position":[[26,12]]}},"content":{"29":{"position":[[286,10]]},"35":{"position":[[127,13]]}},"keywords":{}}],["bodi",{"_index":233,"title":{},"content":{"11":{"position":[[775,5],[1276,5]]},"25":{"position":[[1054,5]]},"38":{"position":[[276,4]]},"45":{"position":[[358,5]]},"47":{"position":[[380,5]]},"52":{"position":[[96,5]]},"53":{"position":[[155,5]]},"59":{"position":[[1904,5],[1914,4],[2242,5],[2425,5]]}},"keywords":{}}],["boolean",{"_index":1040,"title":{},"content":{"58":{"position":[[1344,7]]}},"keywords":{}}],["booleandefault",{"_index":640,"title":{},"content":{"30":{"position":[[54,15]]},"31":{"position":[[77,15]]}},"keywords":{}}],["bootstrap",{"_index":651,"title":{},"content":{"33":{"position":[[17,10]]}},"keywords":{}}],["both",{"_index":323,"title":{},"content":{"16":{"position":[[469,4]]}},"keywords":{}}],["bottleneck",{"_index":691,"title":{},"content":{"37":{"position":[[301,11]]}},"keywords":{}}],["box",{"_index":349,"title":{},"content":{"17":{"position":[[235,4]]}},"keywords":{}}],["break",{"_index":759,"title":{},"content":{"39":{"position":[[1495,8]]}},"keywords":{}}],["breviti",{"_index":596,"title":{},"content":{"26":{"position":[[567,7],[842,7],[888,7]]}},"keywords":{}}],["brew",{"_index":107,"title":{},"content":{"6":{"position":[[173,4],[202,4],[341,4],[353,4]]}},"keywords":{}}],["bridg",{"_index":454,"title":{},"content":{"22":{"position":[[63,6]]}},"keywords":{}}],["browser",{"_index":571,"title":{},"content":{"26":{"position":[[19,7]]},"27":{"position":[[497,7]]},"57":{"position":[[1512,7]]}},"keywords":{}}],["bug",{"_index":365,"title":{},"content":{"18":{"position":[[263,4]]},"22":{"position":[[323,3]]}},"keywords":{}}],["build",{"_index":104,"title":{},"content":{"5":{"position":[[338,7]]},"13":{"position":[[3,5]]},"63":{"position":[[148,5]]}},"keywords":{}}],["built",{"_index":434,"title":{},"content":{"21":{"position":[[103,5]]},"57":{"position":[[1487,5]]}},"keywords":{}}],["busi",{"_index":982,"title":{},"content":{"57":{"position":[[4124,8]]}},"keywords":{}}],["bypass",{"_index":991,"title":{},"content":{"57":{"position":[[4760,9]]}},"keywords":{}}],["cach",{"_index":191,"title":{},"content":{"10":{"position":[[459,8]]},"19":{"position":[[196,8]]},"36":{"position":[[242,7]]},"57":{"position":[[1052,5]]},"58":{"position":[[4915,7],[4981,7]]}},"keywords":{}}],["call",{"_index":256,"title":{},"content":{"12":{"position":[[287,5]]},"25":{"position":[[350,6]]},"47":{"position":[[124,6]]},"54":{"position":[[281,6]]},"55":{"position":[[222,6]]},"58":{"position":[[4582,5]]},"59":{"position":[[871,5],[1323,5],[1615,5],[1930,5],[3465,5]]}},"keywords":{}}],["can't",{"_index":452,"title":{},"content":{"22":{"position":[[11,5]]}},"keywords":{}}],["canari",{"_index":431,"title":{"21":{"position":[[3,6]]}},"content":{"21":{"position":[[456,6]]}},"keywords":{}}],["capabl",{"_index":847,"title":{},"content":{"47":{"position":[[162,10]]}},"keywords":{}}],["care",{"_index":1141,"title":{},"content":{"61":{"position":[[1174,5]]}},"keywords":{}}],["case",{"_index":224,"title":{},"content":{"11":{"position":[[560,5]]},"19":{"position":[[61,5]]},"22":{"position":[[307,4]]},"46":{"position":[[549,5]]},"53":{"position":[[351,5]]},"57":{"position":[[185,6]]},"59":{"position":[[393,5]]},"61":{"position":[[646,5]]}},"keywords":{}}],["caus",{"_index":506,"title":{},"content":{"24":{"position":[[274,7]]}},"keywords":{}}],["certain",{"_index":1121,"title":{},"content":{"60":{"position":[[800,7]]}},"keywords":{}}],["chain",{"_index":1137,"title":{},"content":{"61":{"position":[[754,5]]}},"keywords":{}}],["challeng",{"_index":279,"title":{},"content":{"13":{"position":[[97,10]]},"14":{"position":[[8,9]]},"15":{"position":[[389,11]]},"16":{"position":[[34,10],[1095,10]]},"17":{"position":[[11,10]]},"18":{"position":[[8,9]]},"24":{"position":[[624,11],[847,9]]}},"keywords":{}}],["chang",{"_index":388,"title":{},"content":{"19":{"position":[[137,7],[469,8]]},"20":{"position":[[282,6]]},"21":{"position":[[6,6],[137,7],[177,7]]},"22":{"position":[[191,6]]},"39":{"position":[[368,7],[555,7],[844,6],[1430,8],[1504,7]]},"48":{"position":[[14,7]]}},"keywords":{}}],["channel",{"_index":768,"title":{},"content":{"39":{"position":[[1720,8]]},"58":{"position":[[2180,9]]}},"keywords":{}}],["characterist",{"_index":755,"title":{},"content":{"39":{"position":[[1365,14]]}},"keywords":{}}],["check",{"_index":625,"title":{"29":{"position":[[0,6]]}},"content":{"29":{"position":[[4,5],[114,5],[152,5],[189,5]]},"30":{"position":[[79,5]]},"31":{"position":[[102,5],[168,5],[286,5]]},"37":{"position":[[174,5]]},"46":{"position":[[9,5],[110,5],[356,5]]},"57":{"position":[[4569,7]]}},"keywords":{}}],["chosen",{"_index":925,"title":{},"content":{"57":{"position":[[908,6]]}},"keywords":{}}],["citi",{"_index":1130,"title":{},"content":{"61":{"position":[[463,5]]}},"keywords":{}}],["class",{"_index":443,"title":{},"content":{"21":{"position":[[436,5]]},"39":{"position":[[1099,5]]}},"keywords":{}}],["clear",{"_index":475,"title":{},"content":{"23":{"position":[[244,5]]},"57":{"position":[[857,5]]}},"keywords":{}}],["cli",{"_index":119,"title":{"28":{"position":[[0,3]]},"44":{"position":[[10,4]]},"46":{"position":[[21,4]]}},"content":{"7":{"position":[[47,3]]},"44":{"position":[[13,3],[385,4]]},"45":{"position":[[749,3]]},"46":{"position":[[33,3],[215,3]]},"47":{"position":[[144,3]]},"48":{"position":[[197,3],[322,3]]},"59":{"position":[[3778,3],[3903,3]]}},"keywords":{}}],["click",{"_index":49,"title":{},"content":{"2":{"position":[[216,5]]}},"keywords":{}}],["clicked!")}>click",{"_index":47,"title":{},"content":{"2":{"position":[[171,25]]}},"keywords":{}}],["client",{"_index":170,"title":{"12":{"position":[[15,8]]},"38":{"position":[[0,6]]}},"content":{"10":{"position":[[67,7],[370,7],[624,7]]},"11":{"position":[[426,6],[570,6],[1042,6]]},"12":{"position":[[23,6],[111,6],[253,6],[532,6]]},"13":{"position":[[68,6],[136,6],[199,6],[239,6],[394,6]]},"14":{"position":[[46,6],[146,6]]},"15":{"position":[[36,6],[111,6],[270,6]]},"16":{"position":[[149,7],[225,7],[415,6],[487,6]]},"17":{"position":[[337,7]]},"21":{"position":[[116,6]]},"22":{"position":[[82,7]]},"23":{"position":[[350,7]]},"35":{"position":[[4,7],[501,6]]},"38":{"position":[[9,6]]},"39":{"position":[[1548,8]]},"45":{"position":[[454,7]]},"57":{"position":[[3527,7],[3622,6]]},"60":{"position":[[829,7],[1020,7]]},"61":{"position":[[1115,6]]}},"keywords":{}}],["client'",{"_index":674,"title":{},"content":{"35":{"position":[[696,8]]}},"keywords":{}}],["close",{"_index":1026,"title":{},"content":{"58":{"position":[[452,7],[1179,8]]}},"keywords":{}}],["co",{"_index":70,"title":{},"content":{"3":{"position":[[323,2]]}},"keywords":{}}],["code",{"_index":283,"title":{"39":{"position":[[5,5]]}},"content":{"13":{"position":[[401,5]]},"17":{"position":[[140,5]]},"19":{"position":[[132,4]]},"20":{"position":[[144,4]]},"25":{"position":[[1301,5]]},"39":{"position":[[997,4]]}},"keywords":{}}],["combin",{"_index":200,"title":{},"content":{"11":{"position":[[41,9],[167,9],[634,8],[1058,7]]},"13":{"position":[[315,9]]},"16":{"position":[[1013,9]]},"63":{"position":[[84,7]]}},"keywords":{}}],["come",{"_index":712,"title":{},"content":{"37":{"position":[[1216,6]]}},"keywords":{}}],["command",{"_index":90,"title":{},"content":{"5":{"position":[[122,7]]},"6":{"position":[[147,7]]},"7":{"position":[[168,7]]},"8":{"position":[[226,8],[291,7],[434,8],[524,7],[769,7]]},"27":{"position":[[30,7],[179,7]]},"29":{"position":[[10,7],[62,7],[120,8],[195,7]]},"31":{"position":[[174,7]]},"32":{"position":[[10,7],[232,8],[307,7]]},"33":{"position":[[9,7],[157,7]]},"44":{"position":[[532,9]]},"46":{"position":[[15,8]]}},"keywords":{}}],["comment",{"_index":9,"title":{},"content":{"0":{"position":[[76,7]]},"39":{"position":[[379,8]]},"52":{"position":[[110,9],[120,9]]},"55":{"position":[[109,9],[315,8]]}},"keywords":{}}],["commentsforus",{"_index":900,"title":{},"content":{"55":{"position":[[92,16]]}},"keywords":{}}],["commit",{"_index":523,"title":{},"content":{"24":{"position":[[666,9]]}},"keywords":{}}],["common",{"_index":438,"title":{},"content":{"21":{"position":[[291,6]]}},"keywords":{}}],["commonli",{"_index":1097,"title":{},"content":{"59":{"position":[[1329,8]]}},"keywords":{}}],["commun",{"_index":322,"title":{},"content":{"16":{"position":[[452,11]]},"24":{"position":[[152,13]]},"35":{"position":[[675,11]]},"58":{"position":[[4040,12]]}},"keywords":{}}],["compani",{"_index":398,"title":{},"content":{"19":{"position":[[327,9]]},"21":{"position":[[546,9]]},"23":{"position":[[456,7]]}},"keywords":{}}],["compat",{"_index":457,"title":{},"content":{"22":{"position":[[201,10]]}},"keywords":{}}],["compel",{"_index":528,"title":{},"content":{"24":{"position":[[743,10]]}},"keywords":{}}],["compelet",{"_index":160,"title":{},"content":{"8":{"position":[[698,11]]}},"keywords":{}}],["compil",{"_index":858,"title":{},"content":{"48":{"position":[[326,8]]},"58":{"position":[[4354,11]]},"59":{"position":[[3907,8]]},"62":{"position":[[279,7]]}},"keywords":{}}],["complet",{"_index":130,"title":{},"content":{"7":{"position":[[298,10]]},"11":{"position":[[1321,8]]}},"keywords":{}}],["complex",{"_index":273,"title":{"13":{"position":[[13,11]]}},"content":{"13":{"position":[[181,10],[376,10]]},"17":{"position":[[421,7]]},"21":{"position":[[402,7]]},"57":{"position":[[6438,7]]},"63":{"position":[[159,7],[1457,7]]}},"keywords":{}}],["compon",{"_index":192,"title":{},"content":{"10":{"position":[[491,9]]},"16":{"position":[[355,9]]},"35":{"position":[[71,10]]},"36":{"position":[[430,9]]}},"keywords":{}}],["compos",{"_index":243,"title":{},"content":{"11":{"position":[[1227,8]]},"14":{"position":[[270,8]]},"16":{"position":[[298,8],[842,8]]},"25":{"position":[[53,7],[293,7]]},"26":{"position":[[941,7]]},"37":{"position":[[333,8]]}},"keywords":{}}],["composit",{"_index":197,"title":{"11":{"position":[[4,12]]},"12":{"position":[[0,11]]},"36":{"position":[[0,11]]},"63":{"position":[[9,12]]}},"content":{"11":{"position":[[4,11],[271,11]]},"12":{"position":[[4,11]]},"13":{"position":[[36,11],[117,11]]},"14":{"position":[[27,11]]},"15":{"position":[[17,11],[359,11],[492,11]]},"16":{"position":[[52,11],[196,11],[915,11]]},"29":{"position":[[30,11],[326,11]]},"31":{"position":[[53,11]]},"32":{"position":[[174,11]]},"35":{"position":[[91,11]]},"36":{"position":[[4,11]]},"37":{"position":[[9,11],[219,11],[399,11],[925,11]]},"39":{"position":[[25,11],[267,12]]},"63":{"position":[[40,11],[1422,11]]}},"keywords":{}}],["comprehens",{"_index":903,"title":{},"content":{"57":{"position":[[66,13]]}},"keywords":{}}],["compris",{"_index":675,"title":{},"content":{"36":{"position":[[103,9]]}},"keywords":{}}],["concept",{"_index":1161,"title":{},"content":{"63":{"position":[[29,7]]}},"keywords":{}}],["concern",{"_index":468,"title":{},"content":{"23":{"position":[[63,8]]},"57":{"position":[[5803,9]]}},"keywords":{}}],["conclus",{"_index":1147,"title":{},"content":{"61":{"position":[[1677,11]]}},"keywords":{}}],["condit",{"_index":264,"title":{},"content":{"12":{"position":[[406,10],[514,10]]}},"keywords":{}}],["config",{"_index":79,"title":{},"content":{"3":{"position":[[480,7]]}},"keywords":{}}],["configur",{"_index":541,"title":{"25":{"position":[[0,13]]}},"content":{"25":{"position":[[0,13]]},"32":{"position":[[89,15],[144,15]]},"33":{"position":[[206,14]]},"44":{"position":[[139,14]]},"57":{"position":[[94,15],[341,14],[990,14],[1382,13],[2218,13],[2394,15],[2895,13],[3184,15],[3329,13],[4208,13],[5583,13]]},"58":{"position":[[2098,13],[3353,13]]}},"keywords":{}}],["confin",{"_index":537,"title":{},"content":{"24":{"position":[[884,8]]}},"keywords":{}}],["conform",{"_index":986,"title":{},"content":{"57":{"position":[[4354,10]]}},"keywords":{}}],["confus",{"_index":473,"title":{},"content":{"23":{"position":[[175,9]]}},"keywords":{}}],["conjunct",{"_index":261,"title":{},"content":{"12":{"position":[[375,11]]}},"keywords":{}}],["connect",{"_index":1017,"title":{},"content":{"58":{"position":[[84,11],[124,10],[419,10],[465,12],[658,11],[932,11],[1126,10],[1427,10],[2473,10],[2706,10],[2959,11]]}},"keywords":{}}],["connecttimeout",{"_index":1053,"title":{},"content":{"58":{"position":[[2428,15]]}},"keywords":{}}],["consectetur",{"_index":19,"title":{},"content":{"0":{"position":[[154,11],[333,11],[512,11],[691,11],[870,11],[1049,11],[1228,11],[1407,11],[1586,11],[1765,11],[1944,11],[2123,11],[2302,11],[2481,11],[2660,11],[2839,11]]},"1":{"position":[[28,11]]}},"keywords":{}}],["consequat",{"_index":31,"title":{},"content":{"0":{"position":[[267,10],[446,10],[625,10],[804,10],[983,10],[1162,10],[1341,10],[1520,10],[1699,10],[1878,10],[2057,10],[2236,10],[2415,10],[2594,10],[2773,10],[2952,10]]},"1":{"position":[[141,10]]}},"keywords":{}}],["consid",{"_index":214,"title":{},"content":{"11":{"position":[[398,8],[1195,10]]},"41":{"position":[[0,8]]},"57":{"position":[[3920,8],[4953,8]]},"61":{"position":[[284,8]]}},"keywords":{}}],["consist",{"_index":741,"title":{},"content":{"39":{"position":[[527,10]]},"58":{"position":[[4101,12]]}},"keywords":{}}],["consol",{"_index":1160,"title":{},"content":{"62":{"position":[[455,8]]}},"keywords":{}}],["consolid",{"_index":860,"title":{},"content":{"48":{"position":[[396,13]]},"59":{"position":[[3977,13]]}},"keywords":{}}],["const",{"_index":1153,"title":{"62":{"position":[[0,7]]}},"content":{"62":{"position":[[4,6],[223,5]]}},"keywords":{}}],["const(data",{"_index":1155,"title":{},"content":{"62":{"position":[[132,12]]}},"keywords":{}}],["constant",{"_index":705,"title":{},"content":{"37":{"position":[[1032,8]]},"57":{"position":[[2385,8]]},"62":{"position":[[42,8]]}},"keywords":{}}],["construct",{"_index":563,"title":{},"content":{"25":{"position":[[869,9]]},"36":{"position":[[81,12]]}},"keywords":{}}],["consum",{"_index":774,"title":{},"content":{"41":{"position":[[50,9]]}},"keywords":{}}],["consumpt",{"_index":718,"title":{"38":{"position":[[7,12]]}},"content":{},"keywords":{}}],["contain",{"_index":150,"title":{},"content":{"8":{"position":[[405,9],[571,10]]},"11":{"position":[[1131,8]]},"20":{"position":[[104,8]]},"53":{"position":[[583,9],[696,10]]},"58":{"position":[[3899,10]]},"59":{"position":[[1024,8]]}},"keywords":{}}],["content",{"_index":550,"title":{},"content":{"25":{"position":[[405,8]]}},"keywords":{}}],["context",{"_index":867,"title":{"49":{"position":[[0,7]]},"50":{"position":[[0,7]]}},"content":{"50":{"position":[[48,7],[191,7],[268,7],[328,7]]},"53":{"position":[[17,7],[437,7]]},"55":{"position":[[266,8]]},"59":{"position":[[3009,7]]}},"keywords":{}}],["control",{"_index":335,"title":{},"content":{"16":{"position":[[898,7]]},"29":{"position":[[231,7]]},"39":{"position":[[862,11],[1164,7]]},"57":{"position":[[1058,7]]},"58":{"position":[[37,7]]}},"keywords":{}}],["conundrum",{"_index":527,"title":{},"content":{"24":{"position":[[728,9]]}},"keywords":{}}],["conveni",{"_index":69,"title":{},"content":{"3":{"position":[[309,10]]}},"keywords":{}}],["convent",{"_index":538,"title":{},"content":{"24":{"position":[[896,12]]}},"keywords":{}}],["convert",{"_index":861,"title":{},"content":{"48":{"position":[[504,7]]},"59":{"position":[[2379,9]]}},"keywords":{}}],["coordin",{"_index":521,"title":{},"content":{"24":{"position":[[591,13]]}},"keywords":{}}],["correct",{"_index":993,"title":{},"content":{"57":{"position":[[4893,7]]}},"keywords":{}}],["correctli",{"_index":95,"title":{},"content":{"5":{"position":[[211,9]]},"6":{"position":[[258,9]]}},"keywords":{}}],["correspond",{"_index":671,"title":{},"content":{"35":{"position":[[568,13]]}},"keywords":{}}],["cost",{"_index":800,"title":{},"content":{"43":{"position":[[856,6]]},"57":{"position":[[4556,4]]}},"keywords":{}}],["costlier",{"_index":425,"title":{},"content":{"20":{"position":[[263,9]]}},"keywords":{}}],["coupl",{"_index":451,"title":{"22":{"position":[[3,7]]}},"content":{"22":{"position":[[430,8]]}},"keywords":{}}],["cover",{"_index":618,"title":{},"content":{"27":{"position":[[411,5]]}},"keywords":{}}],["cpu",{"_index":302,"title":{},"content":{"15":{"position":[[309,4]]},"16":{"position":[[759,3]]}},"keywords":{}}],["creat",{"_index":42,"title":{},"content":{"2":{"position":[[92,6]]},"11":{"position":[[68,6],[196,8],[1101,6]]},"16":{"position":[[994,6]]},"25":{"position":[[336,6],[665,6],[957,6]]},"27":{"position":[[122,7]]},"33":{"position":[[55,7],[221,8]]},"39":{"position":[[57,7]]}},"keywords":{}}],["createus",{"_index":1107,"title":{},"content":{"59":{"position":[[2305,10]]}},"keywords":{}}],["createuser(input",{"_index":1099,"title":{},"content":{"59":{"position":[[1462,17],[2148,17],[2651,17]]}},"keywords":{}}],["creation",{"_index":655,"title":{},"content":{"33":{"position":[[193,8]]}},"keywords":{}}],["credenti",{"_index":297,"title":{},"content":{"15":{"position":[[193,12]]}},"keywords":{}}],["critic",{"_index":680,"title":{},"content":{"36":{"position":[[292,8]]}},"keywords":{}}],["cross",{"_index":466,"title":{},"content":{"23":{"position":[[49,5]]}},"keywords":{}}],["crucial",{"_index":806,"title":{},"content":{"43":{"position":[[1027,7]]},"57":{"position":[[6198,7]]}},"keywords":{}}],["culmin",{"_index":790,"title":{},"content":{"43":{"position":[[568,10]]}},"keywords":{}}],["curl",{"_index":115,"title":{"7":{"position":[[0,5]]}},"content":{"7":{"position":[[67,4]]},"38":{"position":[[170,4]]},"42":{"position":[[48,4]]},"43":{"position":[[110,4]]}},"keywords":{}}],["current",{"_index":458,"title":{},"content":{"22":{"position":[[221,7]]},"25":{"position":[[848,7]]},"45":{"position":[[551,9]]},"51":{"position":[[38,7]]},"52":{"position":[[33,7]]}},"keywords":{}}],["custom",{"_index":350,"title":{},"content":{"17":{"position":[[276,6]]},"19":{"position":[[33,6]]},"58":{"position":[[1805,6]]},"59":{"position":[[2476,9]]}},"keywords":{}}],["cut",{"_index":467,"title":{},"content":{"23":{"position":[[55,7]]}},"keywords":{}}],["cycl",{"_index":397,"title":{},"content":{"19":{"position":[[310,6]]}},"keywords":{}}],["data",{"_index":249,"title":{},"content":{"12":{"position":[[146,5],[309,4]]},"25":{"position":[[176,5]]},"36":{"position":[[63,4]]},"37":{"position":[[600,4],[1060,4]]},"38":{"position":[[224,4]]},"41":{"position":[[60,4]]},"45":{"position":[[533,5],[677,5]]},"46":{"position":[[764,5]]},"50":{"position":[[139,4]]},"57":{"position":[[2635,4],[2948,4],[4142,4],[5528,5]]},"58":{"position":[[3642,4],[5054,4]]},"59":{"position":[[1985,4],[3437,4]]},"60":{"position":[[338,4],[585,4],[808,4]]},"61":{"position":[[32,4],[173,4],[238,4],[1127,4],[1751,4]]},"63":{"position":[[186,5],[225,4],[1114,4],[1608,4]]}},"keywords":{}}],["date",{"_index":61,"title":{},"content":{"3":{"position":[[187,4]]}},"keywords":{}}],["day",{"_index":702,"title":{},"content":{"37":{"position":[[976,3]]}},"keywords":{}}],["debug",{"_index":977,"title":{},"content":{"57":{"position":[[3889,9]]}},"keywords":{}}],["decis",{"_index":479,"title":{},"content":{"23":{"position":[[436,9]]}},"keywords":{}}],["deeper",{"_index":838,"title":{},"content":{"46":{"position":[[263,6]]}},"keywords":{}}],["default",{"_index":657,"title":{},"content":{"33":{"position":[[260,8]]},"57":{"position":[[602,7],[1221,8],[3704,8],[4582,8],[5287,7],[5876,7]]},"58":{"position":[[195,7],[4142,7],[5102,8]]},"59":{"position":[[627,7],[1410,7]]}},"keywords":{}}],["defin",{"_index":324,"title":{},"content":{"16":{"position":[[527,7]]},"36":{"position":[[480,7]]},"45":{"position":[[561,8]]},"54":{"position":[[318,7]]},"57":{"position":[[2246,6],[4304,7],[5831,8]]},"58":{"position":[[1611,7]]},"63":{"position":[[212,8]]}},"keywords":{}}],["degrad",{"_index":801,"title":{},"content":{"43":{"position":[[869,8]]}},"keywords":{}}],["delay",{"_index":500,"title":{},"content":{"24":{"position":[[166,6]]},"58":{"position":[[5302,5],[5313,5],[5464,6]]}},"keywords":{}}],["delet",{"_index":77,"title":{},"content":{"3":{"position":[[418,6]]},"59":{"position":[[1375,7]]}},"keywords":{}}],["demand",{"_index":520,"title":{},"content":{"24":{"position":[[574,7]]}},"keywords":{}}],["demonstr",{"_index":786,"title":{},"content":{"43":{"position":[[337,12]]},"45":{"position":[[691,11]]}},"keywords":{}}],["denial",{"_index":1014,"title":{},"content":{"57":{"position":[[6384,6]]}},"keywords":{}}],["denot",{"_index":885,"title":{},"content":{"53":{"position":[[5,7]]}},"keywords":{}}],["depend",{"_index":359,"title":{},"content":{"18":{"position":[[115,9]]},"58":{"position":[[4056,9]]}},"keywords":{}}],["deploy",{"_index":347,"title":{},"content":{"17":{"position":[[215,8]]},"20":{"position":[[313,10]]},"21":{"position":[[54,10],[345,12]]},"22":{"position":[[20,8]]},"39":{"position":[[1288,8],[1485,9]]},"57":{"position":[[4004,11]]}},"keywords":{}}],["depth",{"_index":1149,"title":{},"content":{"61":{"position":[[1783,6]]}},"keywords":{}}],["deriv",{"_index":732,"title":{},"content":{"39":{"position":[[141,7]]},"59":{"position":[[2979,7]]}},"keywords":{}}],["describ",{"_index":854,"title":{},"content":{"48":{"position":[[4,9]]},"50":{"position":[[206,9]]}},"keywords":{}}],["descript",{"_index":1158,"title":{},"content":{"62":{"position":[[414,11]]}},"keywords":{}}],["design",{"_index":497,"title":{},"content":{"24":{"position":[[47,8]]},"43":{"position":[[1073,6]]},"57":{"position":[[1582,11]]},"58":{"position":[[2151,10],[4998,8]]}},"keywords":{}}],["desir",{"_index":1116,"title":{},"content":{"60":{"position":[[368,7]]}},"keywords":{}}],["destin",{"_index":1052,"title":{},"content":{"58":{"position":[[2415,12]]}},"keywords":{}}],["detail",{"_index":620,"title":{},"content":{"27":{"position":[[426,6]]},"35":{"position":[[346,7]]},"41":{"position":[[140,7]]},"43":{"position":[[49,8],[273,8],[560,7]]},"57":{"position":[[482,7]]},"58":{"position":[[344,7]]},"59":{"position":[[3480,7]]}},"keywords":{}}],["detect",{"_index":629,"title":{},"content":{"29":{"position":[[74,6]]},"30":{"position":[[23,9]]},"46":{"position":[[223,8]]}},"keywords":{}}],["determin",{"_index":1000,"title":{},"content":{"57":{"position":[[5597,10]]},"58":{"position":[[1363,10]]}},"keywords":{}}],["dev",{"_index":839,"title":{},"content":{"46":{"position":[[352,3]]},"57":{"position":[[4843,3]]}},"keywords":{}}],["develop",{"_index":337,"title":{},"content":{"16":{"position":[[971,10]]},"18":{"position":[[132,10]]},"19":{"position":[[298,11]]},"24":{"position":[[185,12],[918,11]]},"37":{"position":[[261,10],[945,10],[1168,9]]},"39":{"position":[[1196,9]]},"41":{"position":[[15,10]]},"43":{"position":[[1084,11]]},"44":{"position":[[38,11],[266,11]]},"57":{"position":[[1554,11],[1995,12],[3873,11]]}},"keywords":{}}],["devop",{"_index":449,"title":{},"content":{"21":{"position":[[564,6]]}},"keywords":{}}],["dictat",{"_index":904,"title":{},"content":{"57":{"position":[[113,8],[1396,8]]}},"keywords":{}}],["differ",{"_index":212,"title":{},"content":{"11":{"position":[[342,9],[615,9]]},"14":{"position":[[188,9]]},"23":{"position":[[754,9]]},"29":{"position":[[239,9]]}},"keywords":{}}],["differenti",{"_index":746,"title":{},"content":{"39":{"position":[[748,14]]},"48":{"position":[[632,13]]}},"keywords":{}}],["difficult",{"_index":354,"title":{},"content":{"17":{"position":[[433,9]]},"19":{"position":[[77,9]]}},"keywords":{}}],["dignissim",{"_index":24,"title":{},"content":{"0":{"position":[[206,9],[385,9],[564,9],[743,9],[922,9],[1101,9],[1280,9],[1459,9],[1638,9],[1817,9],[1996,9],[2175,9],[2354,9],[2533,9],[2712,9],[2891,9]]},"1":{"position":[[80,9]]}},"keywords":{}}],["diminish",{"_index":507,"title":{},"content":{"24":{"position":[[304,10]]}},"keywords":{}}],["direct",{"_index":330,"title":{},"content":{"16":{"position":[[684,6]]},"25":{"position":[[1161,11]]},"47":{"position":[[273,9]]},"48":{"position":[[64,9]]},"57":{"position":[[12,10]]},"58":{"position":[[13,9],[4882,7]]}},"keywords":{}}],["directli",{"_index":943,"title":{},"content":{"57":{"position":[[2114,8],[3573,9]]},"61":{"position":[[1032,8]]}},"keywords":{}}],["directori",{"_index":56,"title":{},"content":{"3":{"position":[[112,10],[430,10]]},"7":{"position":[[282,10],[399,10]]}},"keywords":{}}],["disabl",{"_index":940,"title":{},"content":{"57":{"position":[[2028,7],[3929,9],[4486,7],[4962,9],[5430,9]]}},"keywords":{}}],["discern",{"_index":981,"title":{},"content":{"57":{"position":[[4083,10]]}},"keywords":{}}],["discord",{"_index":767,"title":{},"content":{"39":{"position":[[1712,7]]}},"keywords":{}}],["discov",{"_index":395,"title":{},"content":{"19":{"position":[[270,10]]}},"keywords":{}}],["discuss",{"_index":809,"title":{},"content":{"43":{"position":[[1177,9]]}},"keywords":{}}],["display",{"_index":217,"title":{},"content":{"11":{"position":[[454,7]]},"29":{"position":[[271,7]]},"31":{"position":[[24,7]]}},"keywords":{}}],["dive",{"_index":816,"title":{},"content":{"44":{"position":[[292,6]]}},"keywords":{}}],["do",{"_index":480,"title":{},"content":{"23":{"position":[[510,5]]},"24":{"position":[[268,5]]}},"keywords":{}}],["docker",{"_index":139,"title":{"8":{"position":[[0,7]]}},"content":{"8":{"position":[[37,7],[93,6],[193,6],[235,6],[342,6],[364,6],[398,6],[443,6],[564,6]]}},"keywords":{}}],["document",{"_index":684,"title":{},"content":{"36":{"position":[[408,8]]}},"keywords":{}}],["docusauru",{"_index":35,"title":{},"content":{"2":{"position":[[19,10]]},"3":{"position":[[0,10],[469,10]]}},"keywords":{}}],["doesn't",{"_index":301,"title":{},"content":{"15":{"position":[[277,7]]},"60":{"position":[[350,7]]},"62":{"position":[[375,7]]},"63":{"position":[[1697,7]]}},"keywords":{}}],["dolor",{"_index":16,"title":{},"content":{"0":{"position":[[138,5],[290,5],[317,5],[469,5],[496,5],[648,5],[675,5],[827,5],[854,5],[1006,5],[1033,5],[1185,5],[1212,5],[1364,5],[1391,5],[1543,5],[1570,5],[1722,5],[1749,5],[1901,5],[1928,5],[2080,5],[2107,5],[2259,5],[2286,5],[2438,5],[2465,5],[2617,5],[2644,5],[2796,5],[2823,5],[2975,5]]},"1":{"position":[[12,5],[164,5]]}},"keywords":{}}],["dolorem"",{"_index":609,"title":{},"content":{"26":{"position":[[792,13]]}},"keywords":{}}],["don't",{"_index":75,"title":{},"content":{"3":{"position":[[394,5]]},"5":{"position":[[7,5]]},"6":{"position":[[7,5]]}},"keywords":{}}],["done",{"_index":110,"title":{},"content":{"6":{"position":[[304,5]]},"11":{"position":[[121,4]]}},"keywords":{}}],["door"",{"_index":195,"title":{},"content":{"10":{"position":[[609,10]]}},"keywords":{}}],["down",{"_index":378,"title":{},"content":{"18":{"position":[[727,4]]},"63":{"position":[[663,4]]}},"keywords":{}}],["download",{"_index":143,"title":{},"content":{"8":{"position":[[145,8]]}},"keywords":{}}],["downstream",{"_index":393,"title":{},"content":{"19":{"position":[[221,10]]}},"keywords":{}}],["downtim",{"_index":802,"title":{},"content":{"43":{"position":[[934,8]]}},"keywords":{}}],["dramat",{"_index":328,"title":{},"content":{"16":{"position":[[598,12]]}},"keywords":{}}],["drill",{"_index":1166,"title":{},"content":{"63":{"position":[[657,5]]}},"keywords":{}}],["due",{"_index":803,"title":{},"content":{"43":{"position":[[943,3]]}},"keywords":{}}],["durat",{"_index":1002,"title":{},"content":{"57":{"position":[[5620,8],[6132,8]]}},"keywords":{}}],["dure",{"_index":100,"title":{},"content":{"5":{"position":[[269,6]]},"43":{"position":[[1062,6]]},"57":{"position":[[2291,6],[3866,6]]}},"keywords":{}}],["dynam",{"_index":530,"title":{},"content":{"24":{"position":[[779,8]]},"35":{"position":[[542,11]]},"59":{"position":[[1033,7],[1685,7],[2951,7],[3317,11]]}},"keywords":{}}],["ea",{"_index":600,"title":{},"content":{"26":{"position":[[696,2]]}},"keywords":{}}],["each",{"_index":193,"title":{},"content":{"10":{"position":[[540,4]]},"11":{"position":[[514,4]]},"16":{"position":[[126,4]]},"17":{"position":[[244,4]]},"19":{"position":[[52,4]]},"23":{"position":[[451,4]]},"25":{"position":[[278,4]]},"31":{"position":[[217,4]]},"32":{"position":[[350,4]]},"36":{"position":[[425,4]]},"37":{"position":[[576,4],[659,4]]},"39":{"position":[[690,4],[839,4],[1005,4],[1442,4]]},"42":{"position":[[153,4]]},"43":{"position":[[10,4],[254,4],[541,4],[695,4]]},"45":{"position":[[493,4],[603,4]]},"46":{"position":[[689,4]]},"48":{"position":[[646,4]]},"57":{"position":[[4331,4]]},"58":{"position":[[887,4],[2910,4],[4239,4],[5343,4]]}},"keywords":{}}],["easier",{"_index":1176,"title":{},"content":{"63":{"position":[[1846,6]]}},"keywords":{}}],["easili",{"_index":980,"title":{},"content":{"57":{"position":[[4076,6]]}},"keywords":{}}],["easily.immut",{"_index":751,"title":{},"content":{"39":{"position":[[1214,20]]}},"keywords":{}}],["editor",{"_index":574,"title":{},"content":{"26":{"position":[[114,6]]}},"keywords":{}}],["effect",{"_index":309,"title":{},"content":{"15":{"position":[[467,9]]},"35":{"position":[[663,11]]},"47":{"position":[[15,9]]},"48":{"position":[[855,11]]}},"keywords":{}}],["effici",{"_index":308,"title":{},"content":{"15":{"position":[[453,9]]},"35":{"position":[[729,9]]},"48":{"position":[[929,10]]}},"keywords":{}}],["effort",{"_index":373,"title":{},"content":{"18":{"position":[[512,6]]}},"keywords":{}}],["eg",{"_index":692,"title":{},"content":{"37":{"position":[[346,3],[1018,3]]},"62":{"position":[[80,3]]}},"keywords":{}}],["elementum",{"_index":23,"title":{},"content":{"0":{"position":[[196,9],[375,9],[554,9],[733,9],[912,9],[1091,9],[1270,9],[1449,9],[1628,9],[1807,9],[1986,9],[2165,9],[2344,9],[2523,9],[2702,9],[2881,9]]},"1":{"position":[[70,9]]}},"keywords":{}}],["elimin",{"_index":1140,"title":{},"content":{"61":{"position":[[981,10]]}},"keywords":{}}],["elit",{"_index":21,"title":{},"content":{"0":{"position":[[177,5],[356,5],[535,5],[714,5],[893,5],[1072,5],[1251,5],[1430,5],[1609,5],[1788,5],[1967,5],[2146,5],[2325,5],[2504,5],[2683,5],[2862,5]]},"1":{"position":[[51,5]]}},"keywords":{}}],["email",{"_index":240,"title":{},"content":{"11":{"position":[[1021,6]]},"25":{"position":[[779,6]]},"38":{"position":[[293,5]]},"45":{"position":[[262,6]]},"61":{"position":[[397,6]]}},"keywords":{}}],["emb",{"_index":1154,"title":{},"content":{"62":{"position":[[34,5]]}},"keywords":{}}],["emphas",{"_index":1071,"title":{},"content":{"58":{"position":[[4076,11]]}},"keywords":{}}],["enabl",{"_index":318,"title":{},"content":{"16":{"position":[[166,6]]},"31":{"position":[[12,7]]},"57":{"position":[[3729,7],[4832,7],[5199,8]]},"58":{"position":[[1796,8]]}},"keywords":{}}],["enablecachecontrolhead",{"_index":927,"title":{},"content":{"57":{"position":[[935,25],[965,24]]}},"keywords":{}}],["enablegraphiql",{"_index":935,"title":{},"content":{"57":{"position":[[1361,15],[1863,15]]}},"keywords":{}}],["enablehttpcach",{"_index":1079,"title":{},"content":{"58":{"position":[[4849,16]]}},"keywords":{}}],["enableintrospect",{"_index":968,"title":{},"content":{"57":{"position":[[3367,20]]}},"keywords":{}}],["enablequeryvalid",{"_index":983,"title":{},"content":{"57":{"position":[[4159,22],[4186,21],[4721,21]]}},"keywords":{}}],["enableresponsevalid",{"_index":994,"title":{},"content":{"57":{"position":[[5001,25],[5307,24]]}},"keywords":{}}],["encapsul",{"_index":679,"title":{},"content":{"36":{"position":[[279,12]]}},"keywords":{}}],["encompass",{"_index":664,"title":{},"content":{"35":{"position":[[300,11]]},"36":{"position":[[37,11],[395,12]]}},"keywords":{}}],["end",{"_index":250,"title":{},"content":{"12":{"position":[[167,4],[260,3]]},"23":{"position":[[17,3],[464,4]]}},"keywords":{}}],["endpoint",{"_index":157,"title":{},"content":{"8":{"position":[[645,8]]},"29":{"position":[[297,10]]},"35":{"position":[[372,9],[419,9]]},"37":{"position":[[1287,8]]},"57":{"position":[[1671,9],[2975,9],[5083,9]]},"58":{"position":[[1724,9]]},"59":{"position":[[846,8],[1015,8]]}},"keywords":{}}],["engin",{"_index":420,"title":{},"content":{"20":{"position":[[189,9]]}},"keywords":{}}],["enhanc",{"_index":498,"title":{},"content":{"24":{"position":[[59,7],[582,8]]},"39":{"position":[[1380,8]]},"48":{"position":[[900,9]]},"57":{"position":[[4020,7],[4522,7]]}},"keywords":{}}],["ensur",{"_index":142,"title":{},"content":{"8":{"position":[[86,6]]},"18":{"position":[[423,6]]},"35":{"position":[[720,8]]},"36":{"position":[[417,7],[504,8]]},"37":{"position":[[1324,8]]},"39":{"position":[[618,7],[1269,8]]},"44":{"position":[[315,6]]},"57":{"position":[[896,6],[2138,7],[3200,6],[4342,7]]},"58":{"position":[[2112,7],[4001,7],[4655,6]]}},"keywords":{}}],["enter",{"_index":575,"title":{},"content":{"26":{"position":[[134,5]]}},"keywords":{}}],["entri",{"_index":180,"title":{},"content":{"10":{"position":[[205,5]]},"18":{"position":[[685,5]]}},"keywords":{}}],["env",{"_index":874,"title":{"54":{"position":[[0,4]]}},"content":{"50":{"position":[[336,4]]},"57":{"position":[[4938,4]]}},"keywords":{}}],["env.api_endpoint",{"_index":898,"title":{},"content":{"54":{"position":[[230,16]]}},"keywords":{}}],["environ",{"_index":133,"title":{},"content":{"7":{"position":[[347,11]]},"54":{"position":[[23,11],[260,11]]},"57":{"position":[[2053,13],[3956,13],[4847,11],[6271,13]]}},"keywords":{}}],["equival",{"_index":1167,"title":{},"content":{"63":{"position":[[737,10]]}},"keywords":{}}],["ero",{"_index":29,"title":{},"content":{"0":{"position":[[254,4],[433,4],[612,4],[791,4],[970,4],[1149,4],[1328,4],[1507,4],[1686,4],[1865,4],[2044,4],[2223,4],[2402,4],[2581,4],[2760,4],[2939,4]]},"1":{"position":[[128,4]]}},"keywords":{}}],["error",{"_index":362,"title":{},"content":{"18":{"position":[[183,5]]},"46":{"position":[[145,6],[412,6]]},"57":{"position":[[4391,6]]},"58":{"position":[[4366,6]]},"62":{"position":[[426,5]]}},"keywords":{}}],["especi",{"_index":941,"title":{},"content":{"57":{"position":[[2067,10],[3301,10],[6246,10]]}},"keywords":{}}],["essenc",{"_index":864,"title":{},"content":{"48":{"position":[[599,8]]}},"keywords":{}}],["essenti",{"_index":891,"title":{},"content":{"53":{"position":[[463,12]]},"57":{"position":[[5693,12]]},"58":{"position":[[3632,9]]},"61":{"position":[[202,11]]}},"keywords":{}}],["est",{"_index":608,"title":{},"content":{"26":{"position":[[788,3]]}},"keywords":{}}],["etc",{"_index":470,"title":{},"content":{"23":{"position":[[141,4]]},"37":{"position":[[1073,4]]},"59":{"position":[[1383,4]]}},"keywords":{}}],["even",{"_index":304,"title":{},"content":{"15":{"position":[[379,4]]},"19":{"position":[[454,4]]},"22":{"position":[[376,4]]},"43":{"position":[[914,4]]},"44":{"position":[[102,4]]}},"keywords":{}}],["eventu",{"_index":410,"title":{},"content":{"20":{"position":[[0,11]]}},"keywords":{}}],["exactli",{"_index":996,"title":{},"content":{"57":{"position":[[5243,7]]}},"keywords":{}}],["examin",{"_index":827,"title":{},"content":{"45":{"position":[[45,10]]}},"keywords":{}}],["exampl",{"_index":213,"title":{"45":{"position":[[16,8]]}},"content":{"11":{"position":[[389,8]]},"25":{"position":[[28,8]]},"31":{"position":[[274,8]]},"32":{"position":[[407,8]]},"51":{"position":[[112,8],[209,8]]},"52":{"position":[[194,7]]},"54":{"position":[[221,8]]},"57":{"position":[[696,8],[2791,8],[4706,7],[5999,8]]},"58":{"position":[[2020,8],[3782,7]]},"59":{"position":[[102,8],[187,8],[1111,8],[1437,8],[1752,8],[2123,8],[2286,7],[2799,8],[3046,8]]},"63":{"position":[[5,7]]}},"keywords":{}}],["except",{"_index":384,"title":{},"content":{"18":{"position":[[833,11]]}},"keywords":{}}],["excepturi",{"_index":593,"title":{},"content":{"26":{"position":[[495,9]]}},"keywords":{}}],["exclud",{"_index":1120,"title":{},"content":{"60":{"position":[[661,7]]}},"keywords":{}}],["execut",{"_index":127,"title":{"26":{"position":[[0,7]]}},"content":{"7":{"position":[[188,8]]},"26":{"position":[[0,7]]},"57":{"position":[[6098,9]]}},"keywords":{}}],["exhaust",{"_index":1016,"title":{},"content":{"57":{"position":[[6457,7]]}},"keywords":{}}],["exist",{"_index":761,"title":{},"content":{"39":{"position":[[1539,8]]}},"keywords":{}}],["expand",{"_index":914,"title":{},"content":{"57":{"position":[[401,6]]}},"keywords":{}}],["expans",{"_index":519,"title":{},"content":{"24":{"position":[[525,9]]}},"keywords":{}}],["expect",{"_index":576,"title":{},"content":{"26":{"position":[[241,6]]},"58":{"position":[[4019,8]]}},"keywords":{}}],["expens",{"_index":463,"title":{},"content":{"22":{"position":[[467,9]]},"57":{"position":[[5517,7]]}},"keywords":{}}],["experi",{"_index":270,"title":{},"content":{"12":{"position":[[565,11]]},"16":{"position":[[706,11]]},"24":{"position":[[72,11]]},"43":{"position":[[883,11]]},"48":{"position":[[949,11]]}},"keywords":{}}],["expertis",{"_index":374,"title":{},"content":{"18":{"position":[[523,10]]}},"keywords":{}}],["explain",{"_index":915,"title":{},"content":{"57":{"position":[[494,9]]},"58":{"position":[[356,9]]}},"keywords":{}}],["explicitli",{"_index":1006,"title":{},"content":{"57":{"position":[[5820,10]]},"58":{"position":[[4186,10]]}},"keywords":{}}],["export",{"_index":137,"title":{},"content":{"7":{"position":[[410,6]]}},"keywords":{}}],["expos",{"_index":155,"title":{},"content":{"8":{"position":[[623,7]]},"21":{"position":[[196,7]]},"57":{"position":[[2092,8],[3276,7]]}},"keywords":{}}],["exposur",{"_index":749,"title":{},"content":{"39":{"position":[[1176,8]]},"57":{"position":[[2197,9]]}},"keywords":{}}],["extend",{"_index":131,"title":{},"content":{"7":{"position":[[330,6]]},"25":{"position":[[796,6]]}},"keywords":{}}],["extern",{"_index":964,"title":{},"content":{"57":{"position":[[3133,8]]}},"keywords":{}}],["externaldata",{"_index":954,"title":{},"content":{"57":{"position":[[2621,13],[2962,12]]}},"keywords":{}}],["extract",{"_index":62,"title":{},"content":{"3":{"position":[[199,9]]},"53":{"position":[[481,10]]},"63":{"position":[[1500,7]]}},"keywords":{}}],["facad",{"_index":487,"title":{},"content":{"23":{"position":[[675,7]]}},"keywords":{}}],["facer",{"_index":590,"title":{},"content":{"26":{"position":[[459,6]]}},"keywords":{}}],["failur",{"_index":358,"title":{},"content":{"18":{"position":[[86,8],[625,8]]}},"keywords":{}}],["fake",{"_index":546,"title":{},"content":{"25":{"position":[[171,4]]}},"keywords":{}}],["fals",{"_index":78,"title":{},"content":{"3":{"position":[[455,5]]},"30":{"position":[[70,5]]},"31":{"position":[[93,5]]},"57":{"position":[[1245,5],[3781,6],[4655,6],[4753,6],[5335,6]]},"58":{"position":[[1484,6],[5114,6],[5155,6]]}},"keywords":{}}],["familiar",{"_index":818,"title":{},"content":{"44":{"position":[[331,12]]}},"keywords":{}}],["fast",{"_index":333,"title":{},"content":{"16":{"position":[[779,4]]}},"keywords":{}}],["façad",{"_index":206,"title":{},"content":{"11":{"position":[[230,6]]}},"keywords":{}}],["featur",{"_index":37,"title":{},"content":{"2":{"position":[[39,9]]},"3":{"position":[[20,8]]},"21":{"position":[[87,7]]},"39":{"position":[[763,7],[1105,7],[1206,7]]},"41":{"position":[[28,7],[100,7]]},"47":{"position":[[247,8]]},"57":{"position":[[1784,7],[3498,7]]},"58":{"position":[[5094,7]]}},"keywords":{}}],["feel",{"_index":765,"title":{},"content":{"39":{"position":[[1676,4]]}},"keywords":{}}],["fervent",{"_index":522,"title":{},"content":{"24":{"position":[[656,9]]}},"keywords":{}}],["fetch",{"_index":126,"title":{"42":{"position":[[0,8]]},"43":{"position":[[0,8]]}},"content":{"7":{"position":[[176,7]]},"8":{"position":[[299,7]]},"12":{"position":[[92,8],[234,8]]},"41":{"position":[[117,8]]},"42":{"position":[[115,7]]},"45":{"position":[[465,5],[651,5]]},"46":{"position":[[738,5]]},"53":{"position":[[680,5]]},"55":{"position":[[309,5]]},"57":{"position":[[2940,7],[3538,5]]},"58":{"position":[[5059,8]]},"59":{"position":[[1123,5]]},"61":{"position":[[52,5],[1132,5],[1756,8]]},"63":{"position":[[751,8],[1099,5],[1598,5]]}},"keywords":{}}],["few",{"_index":338,"title":{},"content":{"16":{"position":[[1091,3]]},"25":{"position":[[1121,3]]}},"keywords":{}}],["field",{"_index":560,"title":{},"content":{"25":{"position":[[693,6],[832,5],[985,6]]},"26":{"position":[[929,7]]},"42":{"position":[[185,5]]},"52":{"position":[[243,5]]},"53":{"position":[[530,6]]},"57":{"position":[[3667,7]]},"59":{"position":[[49,5],[236,5],[286,5],[538,5]]},"60":{"position":[[86,5],[191,5],[308,5],[376,5],[541,5],[671,5],[941,5]]},"61":{"position":[[98,5],[685,5],[763,6],[803,5],[1201,7],[1223,6],[1393,5]]},"62":{"position":[[332,6],[405,6]]},"63":{"position":[[271,6],[323,6],[592,6],[722,6],[866,5],[907,5],[959,5]]}},"keywords":{}}],["file",{"_index":54,"title":{},"content":{"3":{"position":[[81,5]]},"7":{"position":[[245,5]]},"25":{"position":[[345,4],[1080,4],[1108,5],[1267,5]]},"27":{"position":[[108,4]]},"31":{"position":[[202,6],[222,4]]},"32":{"position":[[335,6],[355,4]]},"33":{"position":[[92,5],[114,4],[188,4],[252,4]]},"45":{"position":[[26,4]]},"46":{"position":[[101,5]]}},"keywords":{}}],["filenam",{"_index":63,"title":{},"content":{"3":{"position":[[214,10]]}},"keywords":{}}],["fill",{"_index":485,"title":{},"content":{"23":{"position":[[622,6]]}},"keywords":{}}],["final",{"_index":714,"title":{},"content":{"37":{"position":[[1238,5]]},"58":{"position":[[2409,5]]}},"keywords":{}}],["find",{"_index":84,"title":{},"content":{"5":{"position":[[52,4]]},"6":{"position":[[54,4]]}},"keywords":{}}],["first",{"_index":32,"title":{"1":{"position":[[0,5]]}},"content":{"11":{"position":[[669,5]]},"21":{"position":[[430,5]]},"22":{"position":[[148,6]]},"25":{"position":[[22,5]]},"39":{"position":[[1093,5]]},"42":{"position":[[0,6]]},"43":{"position":[[195,5]]},"58":{"position":[[2174,5]]},"61":{"position":[[1451,5]]}},"keywords":{}}],["firstus",{"_index":1145,"title":{},"content":{"61":{"position":[[1555,10]]}},"keywords":{}}],["fix",{"_index":516,"title":{},"content":{"24":{"position":[[493,4]]}},"keywords":{}}],["flag",{"_index":99,"title":{},"content":{"5":{"position":[[264,4]]},"30":{"position":[[5,4]]}},"keywords":{}}],["flaki",{"_index":262,"title":{},"content":{"12":{"position":[[392,5],[500,5]]}},"keywords":{}}],["flatten",{"_index":1124,"title":{},"content":{"61":{"position":[[85,10]]}},"keywords":{}}],["fledg",{"_index":428,"title":{},"content":{"20":{"position":[[305,7]]}},"keywords":{}}],["flexibl",{"_index":334,"title":{},"content":{"16":{"position":[[882,11]]},"60":{"position":[[45,11]]}},"keywords":{}}],["flow",{"_index":1066,"title":{},"content":{"58":{"position":[[3647,5]]}},"keywords":{}}],["fold",{"_index":706,"title":{},"content":{"37":{"position":[[1041,8]]}},"keywords":{}}],["folder",{"_index":55,"title":{},"content":{"3":{"position":[[91,8],[295,6]]}},"keywords":{}}],["follow",{"_index":89,"title":{},"content":{"5":{"position":[[112,9]]},"6":{"position":[[137,9]]},"7":{"position":[[0,6]]},"8":{"position":[[45,6],[216,9],[424,9]]},"11":{"position":[[660,8],[720,9],[967,9]]},"18":{"position":[[146,6],[570,9]]},"25":{"position":[[395,9]]},"26":{"position":[[144,9]]},"27":{"position":[[20,9],[226,9]]},"29":{"position":[[129,6]]},"32":{"position":[[222,9]]},"39":{"position":[[816,10]]},"47":{"position":[[322,8]]},"50":{"position":[[226,9]]}},"keywords":{}}],["foolproof",{"_index":515,"title":{},"content":{"24":{"position":[[483,9]]}},"keywords":{}}],["forc",{"_index":98,"title":{},"content":{"5":{"position":[[258,5]]}},"keywords":{}}],["format",{"_index":631,"title":{},"content":{"29":{"position":[[141,7]]},"39":{"position":[[388,11]]}},"keywords":{}}],["forward",{"_index":1064,"title":{},"content":{"58":{"position":[[3416,9],[3532,9],[3929,7]]}},"keywords":{}}],["found",{"_index":835,"title":{},"content":{"46":{"position":[[152,6],[419,6]]}},"keywords":{}}],["fragil",{"_index":356,"title":{"18":{"position":[[3,8]]}},"content":{"18":{"position":[[59,7],[604,7]]}},"keywords":{}}],["free",{"_index":544,"title":{},"content":{"25":{"position":[[140,4]]},"39":{"position":[[1681,4]]},"58":{"position":[[4689,4]]}},"keywords":{}}],["frequent",{"_index":435,"title":{},"content":{"21":{"position":[[168,8]]}},"keywords":{}}],["friction",{"_index":495,"title":{"24":{"position":[[18,9]]}},"content":{"24":{"position":[[121,9]]}},"keywords":{}}],["frontend",{"_index":311,"title":{"16":{"position":[[12,8]]}},"content":{"16":{"position":[[140,8],[406,8],[478,8]]},"17":{"position":[[328,8]]},"23":{"position":[[695,8]]},"24":{"position":[[17,8],[348,8],[432,8],[555,8]]}},"keywords":{}}],["full",{"_index":427,"title":{},"content":{"20":{"position":[[300,4]]},"27":{"position":[[67,4]]}},"keywords":{}}],["function",{"_index":203,"title":{},"content":{"11":{"position":[[94,14]]},"16":{"position":[[1027,13]]},"39":{"position":[[443,8]]}},"keywords":{}}],["fusc",{"_index":26,"title":{},"content":{"0":{"position":[[227,5],[406,5],[585,5],[764,5],[943,5],[1122,5],[1301,5],[1480,5],[1659,5],[1838,5],[2017,5],[2196,5],[2375,5],[2554,5],[2733,5],[2912,5]]},"1":{"position":[[101,5]]}},"keywords":{}}],["fusion",{"_index":529,"title":{},"content":{"24":{"position":[[754,6]]}},"keywords":{}}],["g",{"_index":92,"title":{},"content":{"5":{"position":[[155,1]]}},"keywords":{}}],["gap",{"_index":482,"title":{},"content":{"23":{"position":[[589,3]]}},"keywords":{}}],["gateway",{"_index":176,"title":{"23":{"position":[[10,8]]}},"content":{"10":{"position":[[138,8],[154,7],[385,7],[577,7]]},"17":{"position":[[160,8]]},"23":{"position":[[82,7],[211,8],[267,7],[565,8]]}},"keywords":{}}],["gener",{"_index":455,"title":{},"content":{"22":{"position":[[108,10]]},"37":{"position":[[1120,9],[1313,10]]},"43":{"position":[[431,9]]},"48":{"position":[[218,8]]},"59":{"position":[[3799,8]]}},"keywords":{}}],["get",{"_index":424,"title":{},"content":{"20":{"position":[[258,4]]}},"keywords":{}}],["ghcr.io/tailcallhq/tailcall/tc",{"_index":146,"title":{},"content":{"8":{"position":[[247,30],[480,30]]}},"keywords":{}}],["given",{"_index":1009,"title":{},"content":{"57":{"position":[[5993,5]]},"63":{"position":[[196,5]]}},"keywords":{}}],["global",{"_index":895,"title":{},"content":{"54":{"position":[[16,6]]}},"keywords":{}}],["globalresponsetimeout",{"_index":999,"title":{},"content":{"57":{"position":[[5534,22],[5561,21],[6012,21]]}},"keywords":{}}],["go",{"_index":377,"title":{},"content":{"18":{"position":[[721,5]]},"19":{"position":[[245,2]]},"22":{"position":[[140,2]]},"25":{"position":[[44,5]]},"26":{"position":[[31,2]]},"59":{"position":[[862,5]]}},"keywords":{}}],["goe",{"_index":403,"title":{},"content":{"19":{"position":[[400,4]]}},"keywords":{}}],["good",{"_index":1076,"title":{},"content":{"58":{"position":[[4723,5]]}},"keywords":{}}],["govern",{"_index":969,"title":{},"content":{"57":{"position":[[3401,7]]}},"keywords":{}}],["graham"",{"_index":585,"title":{},"content":{"26":{"position":[[388,13]]}},"keywords":{}}],["grant",{"_index":937,"title":{},"content":{"57":{"position":[[1625,5]]}},"keywords":{}}],["graphiql",{"_index":573,"title":{},"content":{"26":{"position":[[81,8],[124,9],[231,9]]},"57":{"position":[[1427,8],[1473,8],[1610,10],[1735,8],[1953,8]]}},"keywords":{}}],["graphql",{"_index":156,"title":{},"content":{"8":{"position":[[637,7]]},"25":{"position":[[63,7],[320,7],[1099,8],[1201,7],[1240,7]]},"32":{"position":[[61,7],[136,7]]},"33":{"position":[[77,7]]},"44":{"position":[[81,7]]},"45":{"position":[[17,8]]},"46":{"position":[[93,7]]},"47":{"position":[[221,8],[304,7]]},"50":{"position":[[23,7]]},"57":{"position":[[1520,7],[2101,7],[3509,8],[4276,7]]},"59":{"position":[[439,7],[2100,7]]},"60":{"position":[[24,7],[114,7],[215,7],[515,7],[697,7],[921,7]]},"63":{"position":[[55,8],[1583,7],[1817,7]]}},"keywords":{}}],["green",{"_index":441,"title":{},"content":{"21":{"position":[[339,5]]}},"keywords":{}}],["group",{"_index":845,"title":{},"content":{"47":{"position":[[38,5]]},"59":{"position":[[3421,6]]}},"keywords":{}}],["groupbi",{"_index":853,"title":{},"content":{"47":{"position":[[505,8]]},"48":{"position":[[94,8],[438,8]]},"59":{"position":[[3390,8],[3403,7],[3665,8]]}},"keywords":{}}],["grpc",{"_index":327,"title":{},"content":{"16":{"position":[[577,5]]}},"keywords":{}}],["gt",{"_index":8,"title":{},"content":{"0":{"position":[[71,4]]},"2":{"position":[[146,5]]}},"keywords":{}}],["guid",{"_index":820,"title":{},"content":{"44":{"position":[[447,6]]},"59":{"position":[[3511,6]]}},"keywords":{}}],["hand",{"_index":343,"title":{},"content":{"17":{"position":[[127,4]]}},"keywords":{}}],["handi",{"_index":949,"title":{},"content":{"57":{"position":[[2356,5]]}},"keywords":{}}],["handl",{"_index":282,"title":{},"content":{"13":{"position":[[255,6]]},"15":{"position":[[127,6]]},"18":{"position":[[172,6]]},"35":{"position":[[758,9]]},"48":{"position":[[867,7]]}},"keywords":{}}],["handwritten",{"_index":415,"title":{},"content":{"20":{"position":[[122,11]]}},"keywords":{}}],["happen",{"_index":433,"title":{},"content":{"21":{"position":[[18,7]]}},"keywords":{}}],["hard",{"_index":418,"title":{},"content":{"20":{"position":[[156,4]]}},"keywords":{}}],["harder",{"_index":422,"title":{},"content":{"20":{"position":[[211,6]]}},"keywords":{}}],["hardwar",{"_index":260,"title":{},"content":{"12":{"position":[[359,8],[487,8]]}},"keywords":{}}],["hash",{"_index":710,"title":{"39":{"position":[[0,4]]}},"content":{"37":{"position":[[1112,4]]},"38":{"position":[[58,4],[114,4]]},"39":{"position":[[12,4],[355,4],[492,5],[502,5],[635,4]]}},"keywords":{}}],["have",{"_index":329,"title":{},"content":{"16":{"position":[[675,6]]},"25":{"position":[[1281,6]]}},"keywords":{}}],["haven't",{"_index":819,"title":{},"content":{"44":{"position":[[397,7]]}},"keywords":{}}],["header",{"_index":876,"title":{"55":{"position":[[0,8]]}},"content":{"50":{"position":[[367,8]]},"55":{"position":[[14,7],[215,6]]},"57":{"position":[[1066,7],[1117,7],[1262,6],[2684,8],[3029,6]]},"58":{"position":[[3127,6],[3388,7],[3516,7],[3865,8],[3916,7],[4028,7],[5360,7],[5386,7],[5475,8]]},"59":{"position":[[2431,8],[2444,7],[2490,7],[2590,6],[2719,8],[2860,6],[2970,8],[3129,8]]}},"keywords":{}}],["header'",{"_index":1113,"title":{},"content":{"59":{"position":[[3297,8]]}},"keywords":{}}],["headers.userid",{"_index":902,"title":{},"content":{"55":{"position":[[188,14]]}},"keywords":{}}],["hear",{"_index":770,"title":{},"content":{"39":{"position":[[1746,4]]}},"keywords":{}}],["help",{"_index":314,"title":{},"content":{"16":{"position":[[16,4],[243,4]]},"44":{"position":[[50,7],[504,4]]},"57":{"position":[[149,5]]},"60":{"position":[[291,7]]},"61":{"position":[[1710,5]]}},"keywords":{}}],["here",{"_index":86,"title":{},"content":{"5":{"position":[[74,5]]},"6":{"position":[[76,5]]},"8":{"position":[[162,5]]},"25":{"position":[[1307,4]]},"45":{"position":[[0,4]]},"48":{"position":[[182,5]]},"55":{"position":[[182,5]]},"59":{"position":[[3763,5]]}},"keywords":{}}],["here'",{"_index":776,"title":{},"content":{"41":{"position":[[179,6]]},"60":{"position":[[130,6]]}},"keywords":{}}],["hidden",{"_index":1122,"title":{},"content":{"60":{"position":[[813,6]]}},"keywords":{}}],["high",{"_index":405,"title":{"35":{"position":[[0,4]]}},"content":{"19":{"position":[[434,4]]},"43":{"position":[[954,4]]}},"keywords":{}}],["higher",{"_index":799,"title":{},"content":{"43":{"position":[[842,6]]}},"keywords":{}}],["highli",{"_index":339,"title":{"17":{"position":[[3,6]]}},"content":{"17":{"position":[[61,6]]}},"keywords":{}}],["hinder",{"_index":501,"title":{},"content":{"24":{"position":[[178,6]]}},"keywords":{}}],["hold",{"_index":894,"title":{},"content":{"53":{"position":[[598,5]]}},"keywords":{}}],["homebrew",{"_index":105,"title":{"6":{"position":[[0,9]]}},"content":{"6":{"position":[[26,8],[113,8]]},"8":{"position":[[597,8]]}},"keywords":{}}],["hope",{"_index":762,"title":{},"content":{"39":{"position":[[1607,4]]}},"keywords":{}}],["host",{"_index":677,"title":{},"content":{"36":{"position":[[157,4]]},"57":{"position":[[1449,6]]},"58":{"position":[[698,5]]}},"keywords":{}}],["howell"",{"_index":598,"title":{},"content":{"26":{"position":[[631,13]]}},"keywords":{}}],["http",{"_index":554,"title":{"59":{"position":[[0,6]]}},"content":{"25":{"position":[[452,4],[585,4],[1155,5]]},"47":{"position":[[267,5],[405,6]]},"48":{"position":[[58,5]]},"57":{"position":[[3043,4],[5078,4]]},"58":{"position":[[3154,4],[3383,4],[4244,5],[4312,5],[4596,5],[4910,4],[4976,4],[5381,4]]},"59":{"position":[[5,5],[200,5],[1300,4],[2505,4],[2530,5],[2855,4]]},"63":{"position":[[1083,4],[1622,4]]}},"keywords":{}}],["http(baseurl",{"_index":896,"title":{},"content":{"54":{"position":[[130,14]]}},"keywords":{}}],["http(method",{"_index":1101,"title":{},"content":{"59":{"position":[[1498,13],[2184,13]]}},"keywords":{}}],["http(path",{"_index":558,"title":{},"content":{"25":{"position":[[629,11],[902,11]]},"45":{"position":[[175,11],[383,11]]},"51":{"position":[[154,11]]},"52":{"position":[[130,11]]},"53":{"position":[[72,11],[180,11]]},"55":{"position":[[119,11]]},"57":{"position":[[2640,11]]},"59":{"position":[[144,11],[723,11],[968,11],[1226,11],[1801,11],[2687,11],[3097,11],[3564,11]]},"61":{"position":[[1639,11]]},"63":{"position":[[475,11],[987,11]]}},"keywords":{}}],["http://0.0.0.0:8000",{"_index":616,"title":{},"content":{"27":{"position":[[297,19]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com",{"_index":1072,"title":{},"content":{"58":{"position":[[4531,36]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com)bad",{"_index":1077,"title":{},"content":{"58":{"position":[[4748,40]]}},"keywords":{}}],["http://jsonplaceholder.typicode.com/api",{"_index":1078,"title":{},"content":{"58":{"position":[[4808,40]]}},"keywords":{}}],["http://localhost:8000",{"_index":572,"title":{},"content":{"26":{"position":[[37,22]]}},"keywords":{}}],["http://localhost:8000/graphiql",{"_index":938,"title":{},"content":{"57":{"position":[[1686,31]]}},"keywords":{}}],["http://localhost:8090",{"_index":919,"title":{},"content":{"57":{"position":[[781,22]]}},"keywords":{}}],["https://cloud.tailcall.com/graphql/d5fb012",{"_index":722,"title":{},"content":{"38":{"position":[[175,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com",{"_index":543,"title":{},"content":{"25":{"position":[[100,37]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/post",{"_index":778,"title":{},"content":{"42":{"position":[[53,42]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/us",{"_index":1092,"title":{},"content":{"59":{"position":[[481,42],[890,44]]}},"keywords":{}}],["https://jsonplaceholder.typicode.com/users/1",{"_index":781,"title":{},"content":{"43":{"position":[[115,44]]}},"keywords":{}}],["https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh",{"_index":122,"title":{},"content":{"7":{"position":[[77,71]]}},"keywords":{}}],["hundr",{"_index":796,"title":{},"content":{"43":{"position":[[723,8]]}},"keywords":{}}],["i.",{"_index":1170,"title":{},"content":{"63":{"position":[[1141,6]]}},"keywords":{}}],["id",{"_index":230,"title":{},"content":{"11":{"position":[[752,3],[756,3],[797,3],[829,3],[999,3],[1003,3],[1253,3],[1257,3]]},"25":{"position":[[738,3],[863,2],[1030,3]]},"26":{"position":[[176,2]]},"45":{"position":[[221,3],[321,3]]},"47":{"position":[[343,3]]},"48":{"position":[[248,2],[574,2]]},"51":{"position":[[143,5],[248,2]]},"52":{"position":[[73,3],[77,3],[240,2]]},"53":{"position":[[118,3]]},"57":{"position":[[1528,3],[1646,3]]},"59":{"position":[[133,5],[712,5],[957,5],[1215,5],[1788,5],[3530,3],[3829,2]]},"60":{"position":[[429,3],[863,3],[938,2]]},"61":{"position":[[339,3],[374,3]]},"63":{"position":[[278,2],[359,3],[1339,3]]}},"keywords":{}}],["identifi",{"_index":690,"title":{},"content":{"37":{"position":[[280,8]]},"39":{"position":[[675,10]]},"44":{"position":[[58,8]]},"45":{"position":[[710,8]]},"46":{"position":[[55,11]]}},"keywords":{}}],["idin",{"_index":1118,"title":{},"content":{"60":{"position":[[565,4]]}},"keywords":{}}],["idl",{"_index":1027,"title":{},"content":{"58":{"position":[[460,4],[653,4],[1441,5]]}},"keywords":{}}],["ignor",{"_index":101,"title":{},"content":{"5":{"position":[[301,7]]},"58":{"position":[[3989,8]]}},"keywords":{}}],["illustr",{"_index":777,"title":{},"content":{"41":{"position":[[189,12]]},"46":{"position":[[648,11]]},"58":{"position":[[2213,11]]},"63":{"position":[[13,11]]}},"keywords":{}}],["imag",{"_index":72,"title":{},"content":{"3":{"position":[[343,7]]},"8":{"position":[[200,5],[349,5]]}},"keywords":{}}],["immut",{"_index":752,"title":{},"content":{"39":{"position":[[1258,10]]}},"keywords":{}}],["impact",{"_index":331,"title":{},"content":{"16":{"position":[[691,6]]},"19":{"position":[[114,6]]},"43":{"position":[[979,9]]}},"keywords":{}}],["implement",{"_index":305,"title":{},"content":{"15":{"position":[[404,9]]},"17":{"position":[[253,14]]},"23":{"position":[[24,12]]},"41":{"position":[[233,12]]},"50":{"position":[[31,16]]}},"keywords":{}}],["impli",{"_index":961,"title":{},"content":{"57":{"position":[[2909,7]]}},"keywords":{}}],["import",{"_index":445,"title":{},"content":{"21":{"position":[[480,9]]},"39":{"position":[[734,9]]},"63":{"position":[[1647,9]]}},"keywords":{}}],["improv",{"_index":320,"title":{},"content":{"16":{"position":[[251,7],[611,7],[795,7]]},"57":{"position":[[4979,8],[5482,13]]},"58":{"position":[[5010,7]]}},"keywords":{}}],["includ",{"_index":135,"title":{},"content":{"7":{"position":[[371,7]]},"18":{"position":[[350,9]]},"24":{"position":[[144,7]]},"35":{"position":[[336,9]]},"36":{"position":[[319,9]]},"37":{"position":[[1022,9]]},"42":{"position":[[167,8]]},"45":{"position":[[503,9]]},"57":{"position":[[2988,8]]},"58":{"position":[[101,8],[5251,9],[5400,8]]},"59":{"position":[[1351,7],[2401,8],[2833,7]]},"60":{"position":[[961,8]]},"61":{"position":[[713,8]]}},"keywords":{}}],["incom",{"_index":984,"title":{},"content":{"57":{"position":[[4267,8],[4795,8]]},"58":{"position":[[3507,8]]}},"keywords":{}}],["incompat",{"_index":502,"title":{},"content":{"24":{"position":[[198,12]]}},"keywords":{}}],["incorpor",{"_index":856,"title":{},"content":{"48":{"position":[[78,11]]}},"keywords":{}}],["increas",{"_index":272,"title":{"13":{"position":[[3,9]]},"15":{"position":[[3,9]]}},"content":{"13":{"position":[[171,9]]},"14":{"position":[[107,9]]},"15":{"position":[[65,9]]},"37":{"position":[[710,9]]}},"keywords":{}}],["independ",{"_index":453,"title":{},"content":{"22":{"position":[[29,13]]},"39":{"position":[[1470,14]]}},"keywords":{}}],["index",{"_index":1143,"title":{},"content":{"61":{"position":[[1323,9],[1367,5]]}},"keywords":{}}],["indic",{"_index":779,"title":{},"content":{"42":{"position":[[191,10]]},"59":{"position":[[33,10]]},"61":{"position":[[739,10]]}},"keywords":{}}],["ineffici",{"_index":391,"title":{},"content":{"19":{"position":[[184,11]]},"24":{"position":[[282,15]]}},"keywords":{}}],["infer",{"_index":995,"title":{},"content":{"57":{"position":[[5054,5]]}},"keywords":{}}],["info",{"_index":208,"title":{},"content":{"11":{"position":[[262,4]]},"12":{"position":[[475,4]]},"16":{"position":[[584,4]]},"23":{"position":[[645,4]]},"37":{"position":[[369,4]]},"43":{"position":[[602,4]]},"63":{"position":[[1636,4]]}},"keywords":{}}],["inform",{"_index":220,"title":{},"content":{"11":{"position":[[499,11],[945,12],[1157,12]]},"15":{"position":[[144,12]]},"27":{"position":[[390,12]]},"35":{"position":[[323,12],[628,11]]},"53":{"position":[[397,11]]},"57":{"position":[[2435,11],[3222,11],[3544,11],[5107,11]]}},"keywords":{}}],["infrastructur",{"_index":429,"title":{},"content":{"20":{"position":[[332,15]]},"21":{"position":[[383,14]]}},"keywords":{}}],["infrastructure.canari",{"_index":748,"title":{},"content":{"39":{"position":[[1046,21]]}},"keywords":{}}],["init",{"_index":650,"title":{"33":{"position":[[0,5]]}},"content":{"33":{"position":[[4,4],[128,4]]}},"keywords":{}}],["initi",{"_index":787,"title":{},"content":{"43":{"position":[[411,7]]},"48":{"position":[[779,7]]},"58":{"position":[[2326,9]]},"63":{"position":[[309,9]]}},"keywords":{}}],["inlin",{"_index":707,"title":{"61":{"position":[[0,8]]}},"content":{"37":{"position":[[1050,9]]},"61":{"position":[[4,7],[71,10],[620,7],[815,8],[1147,7],[1306,7],[1379,8],[1440,6],[1693,7]]},"63":{"position":[[853,7]]}},"keywords":{}}],["inline(path",{"_index":1132,"title":{},"content":{"61":{"position":[[538,13],[1571,13]]},"63":{"position":[[405,13],[603,13]]}},"keywords":{}}],["input",{"_index":666,"title":{},"content":{"35":{"position":[[386,5]]},"59":{"position":[[2366,5]]}},"keywords":{}}],["insid",{"_index":1172,"title":{},"content":{"63":{"position":[[1482,6]]}},"keywords":{}}],["instal",{"_index":80,"title":{"4":{"position":[[0,12]]}},"content":{"5":{"position":[[33,10],[80,7],[201,9],[280,14],[309,10]]},"6":{"position":[[35,10],[207,7],[248,9],[288,12]]},"7":{"position":[[35,7],[210,12],[235,9],[316,13]]},"8":{"position":[[15,7],[103,9],[606,13],[682,12],[794,9]]},"44":{"position":[[434,12]]}},"keywords":{}}],["instanc",{"_index":788,"title":{},"content":{"43":{"position":[[475,9]]},"52":{"position":[[51,9]]},"59":{"position":[[881,8],[2625,9]]},"60":{"position":[[407,9],[841,9]]},"61":{"position":[[274,9]]}},"keywords":{}}],["instead",{"_index":310,"title":{},"content":{"15":{"position":[[523,8]]},"39":{"position":[[126,8]]},"63":{"position":[[889,7]]}},"keywords":{}}],["instruct",{"_index":85,"title":{},"content":{"5":{"position":[[61,12]]},"6":{"position":[[63,12]]},"48":{"position":[[204,10],[480,9]]},"57":{"position":[[1021,9]]},"59":{"position":[[3785,10]]},"63":{"position":[[1050,8],[1574,8]]}},"keywords":{}}],["instrument",{"_index":963,"title":{},"content":{"57":{"position":[[3098,12],[3595,12]]}},"keywords":{}}],["int",{"_index":561,"title":{},"content":{"25":{"position":[[742,4],[1034,4]]},"45":{"position":[[225,4],[325,4],[338,4]]},"47":{"position":[[347,4],[360,4]]},"53":{"position":[[122,4],[135,4]]},"59":{"position":[[3534,4]]},"60":{"position":[[433,4],[867,4]]},"61":{"position":[[343,4],[378,4],[526,5],[918,5]]},"62":{"position":[[212,3]]},"63":{"position":[[363,3],[526,4],[1343,3],[1399,4]]}},"keywords":{}}],["integr",{"_index":371,"title":{},"content":{"18":{"position":[[399,11]]},"37":{"position":[[960,9],[1346,12]]},"39":{"position":[[1595,10]]}},"keywords":{}}],["intend",{"_index":1043,"title":{},"content":{"58":{"position":[[1715,8]]}},"keywords":{}}],["intensifi",{"_index":794,"title":{},"content":{"43":{"position":[[682,12]]}},"keywords":{}}],["interact",{"_index":43,"title":{},"content":{"2":{"position":[[99,11]]},"57":{"position":[[1497,11]]}},"keywords":{}}],["interest",{"_index":459,"title":{},"content":{"22":{"position":[[281,11]]}},"keywords":{}}],["interfac",{"_index":275,"title":{},"content":{"13":{"position":[[21,10]]},"16":{"position":[[535,10]]},"26":{"position":[[90,10]]},"50":{"position":[[247,10],[258,9]]},"57":{"position":[[1436,9],[1962,9]]}},"keywords":{}}],["intermediari",{"_index":1042,"title":{},"content":{"58":{"position":[[1622,12]]}},"keywords":{}}],["intern",{"_index":863,"title":{},"content":{"48":{"position":[[545,11]]}},"keywords":{}}],["interv",{"_index":1020,"title":{},"content":{"58":{"position":[[156,10]]}},"keywords":{}}],["intric",{"_index":526,"title":{},"content":{"24":{"position":[[718,9]]}},"keywords":{}}],["intricaci",{"_index":532,"title":{},"content":{"24":{"position":[[802,12]]}},"keywords":{}}],["intrins",{"_index":973,"title":{},"content":{"57":{"position":[[3488,9]]}},"keywords":{}}],["introduc",{"_index":481,"title":{},"content":{"23":{"position":[[577,9]]},"24":{"position":[[84,10]]},"48":{"position":[[22,9]]},"58":{"position":[[1765,9]]}},"keywords":{}}],["introspect",{"_index":971,"title":{},"content":{"57":{"position":[[3417,13],[3468,13],[3838,13],[3982,13]]}},"keywords":{}}],["invalid",{"_index":688,"title":{},"content":{"37":{"position":[[197,7]]},"57":{"position":[[4403,7]]}},"keywords":{}}],["involv",{"_index":773,"title":{},"content":{"41":{"position":[[41,8]]},"43":{"position":[[1112,9]]}},"keywords":{}}],["ipsum",{"_index":15,"title":{},"content":{"0":{"position":[[132,5],[241,5],[284,5],[311,5],[420,5],[463,5],[490,5],[599,5],[642,5],[669,5],[778,5],[821,5],[848,5],[957,5],[1000,5],[1027,5],[1136,5],[1179,5],[1206,5],[1315,5],[1358,5],[1385,5],[1494,5],[1537,5],[1564,5],[1673,5],[1716,5],[1743,5],[1852,5],[1895,5],[1922,5],[2031,5],[2074,5],[2101,5],[2210,5],[2253,5],[2280,5],[2389,5],[2432,5],[2459,5],[2568,5],[2611,5],[2638,5],[2747,5],[2790,5],[2817,5],[2926,5],[2969,5]]},"1":{"position":[[6,5],[115,5],[158,5]]}},"keywords":{}}],["isn't",{"_index":728,"title":{},"content":{"39":{"position":[[51,5]]},"58":{"position":[[3487,5]]}},"keywords":{}}],["issu",{"_index":366,"title":{},"content":{"18":{"position":[[284,7]]},"19":{"position":[[145,6]]},"24":{"position":[[137,6],[694,6]]},"29":{"position":[[95,7]]},"30":{"position":[[40,7]]},"43":{"position":[[396,5],[1163,5]]},"44":{"position":[[71,6],[228,6]]},"45":{"position":[[724,5]]},"46":{"position":[[81,6],[250,6],[293,7]]},"47":{"position":[[200,5]]}},"keywords":{}}],["it'",{"_index":235,"title":{},"content":{"11":{"position":[[824,4]]},"18":{"position":[[640,4]]},"23":{"position":[[230,4],[531,4]]},"24":{"position":[[472,4]]},"43":{"position":[[1022,4]]},"53":{"position":[[476,4]]},"57":{"position":[[1764,4],[2008,4],[3907,4],[5662,4],[6193,4]]},"58":{"position":[[4177,4]]},"59":{"position":[[1936,4]]}},"keywords":{}}],["json",{"_index":578,"title":{},"content":{"26":{"position":[[257,4]]},"41":{"position":[[74,4]]},"43":{"position":[[360,4]]},"50":{"position":[[315,4]]},"59":{"position":[[2392,4]]}},"keywords":{}}],["json>",{"_index":873,"title":{},"content":{"50":{"position":[[299,8]]}},"keywords":{}}],["jsonplacehold",{"_index":824,"title":{"45":{"position":[[0,15]]}},"content":{},"keywords":{}}],["jsonplaceholder.graphql",{"_index":548,"title":{},"content":{"25":{"position":[[357,23]]},"27":{"position":[[84,23],[146,25]]},"46":{"position":[[116,25],[362,25]]}},"keywords":{}}],["keep",{"_index":1018,"title":{},"content":{"58":{"position":[[145,4],[892,4],[1153,4],[1382,4],[2919,4]]},"60":{"position":[[795,4]]}},"keywords":{}}],["keepaliveinterv",{"_index":1034,"title":{},"content":{"58":{"position":[[840,18]]}},"keywords":{}}],["keepalivetimeout",{"_index":1037,"title":{},"content":{"58":{"position":[[1079,17]]}},"keywords":{}}],["keepalivewhileidl",{"_index":1039,"title":{},"content":{"58":{"position":[[1322,19]]}},"keywords":{}}],["key",{"_index":296,"title":{},"content":{"15":{"position":[[169,4]]},"44":{"position":[[528,3]]},"47":{"position":[[444,6]]},"48":{"position":[[120,6],[591,4]]},"53":{"position":[[219,6],[664,3]]},"57":{"position":[[2507,5],[2693,6]]},"58":{"position":[[3861,3]]},"59":{"position":[[1840,6],[2573,3],[2728,6],[3138,6],[3197,5],[3603,6],[3702,5]]}},"keywords":{}}],["key"",{"_index":1069,"title":{},"content":{"58":{"position":[[3726,11]]}},"keywords":{}}],["kind",{"_index":461,"title":{},"content":{"22":{"position":[[422,4]]}},"keywords":{}}],["known",{"_index":209,"title":{},"content":{"11":{"position":[[291,5]]},"32":{"position":[[165,5]]},"35":{"position":[[114,5]]},"63":{"position":[[112,6]]}},"keywords":{}}],["lack",{"_index":352,"title":{"21":{"position":[[18,5]]}},"content":{"17":{"position":[[350,4]]}},"keywords":{}}],["late",{"_index":396,"title":{},"content":{"19":{"position":[[286,4]]}},"keywords":{}}],["latenc",{"_index":287,"title":{},"content":{"14":{"position":[[117,8]]}},"keywords":{}}],["latest",{"_index":145,"title":{},"content":{"8":{"position":[[177,6],[311,6]]}},"keywords":{}}],["laudantium",{"_index":603,"title":{},"content":{"26":{"position":[[709,10]]}},"keywords":{}}],["launch",{"_index":611,"title":{"27":{"position":[[0,6]]}},"content":{"27":{"position":[[0,6],[255,8]]},"32":{"position":[[18,8]]}},"keywords":{}}],["layer",{"_index":313,"title":{},"content":{"16":{"position":[[6,5],[320,5],[1117,6]]},"17":{"position":[[39,5]]},"18":{"position":[[35,5],[673,5],[791,5]]},"19":{"position":[[12,6]]},"20":{"position":[[17,5],[98,5]]},"21":{"position":[[76,6],[156,6],[525,6]]},"22":{"position":[[4,6],[248,5],[389,5]]},"23":{"position":[[4,6],[286,6],[370,5],[387,5],[638,6],[668,6],[704,6],[725,6]]},"24":{"position":[[252,5]]},"57":{"position":[[2155,5]]},"58":{"position":[[1789,6],[3595,5]]}},"keywords":{}}],["lead",{"_index":280,"title":{},"content":{"13":{"position":[[163,4]]},"15":{"position":[[57,4]]},"37":{"position":[[681,4]]},"43":{"position":[[808,7],[919,4]]},"46":{"position":[[621,4]]}},"keywords":{}}],["lean",{"_index":921,"title":{},"content":{"57":{"position":[[815,4]]}},"keywords":{}}],["learn",{"_index":711,"title":{},"content":{"37":{"position":[[1187,5]]}},"keywords":{}}],["left",{"_index":1082,"title":{},"content":{"58":{"position":[[5071,4]]}},"keywords":{}}],["legaci",{"_index":465,"title":{"23":{"position":[[3,6]]}},"content":{"23":{"position":[[558,6]]}},"keywords":{}}],["level",{"_index":658,"title":{"35":{"position":[[5,5]]}},"content":{"57":{"position":[[50,6]]}},"keywords":{}}],["leverag",{"_index":946,"title":{},"content":{"57":{"position":[[2281,9]]}},"keywords":{}}],["librari",{"_index":423,"title":{},"content":{"20":{"position":[[232,9]]}},"keywords":{}}],["limit",{"_index":10,"title":{},"content":{"0":{"position":[[87,5]]},"10":{"position":[[445,9]]},"23":{"position":[[103,9]]}},"keywords":{}}],["line",{"_index":836,"title":{},"content":{"46":{"position":[[182,4]]}},"keywords":{}}],["list",{"_index":12,"title":{},"content":{"0":{"position":[[115,4]]},"25":{"position":[[221,4]]},"37":{"position":[[555,4]]},"42":{"position":[[125,4]]},"45":{"position":[[473,4]]},"48":{"position":[[516,4],[678,5],[808,5]]},"53":{"position":[[494,4]]}},"keywords":{}}],["liter",{"_index":735,"title":{},"content":{"39":{"position":[[296,7]]}},"keywords":{}}],["live",{"_index":404,"title":{},"content":{"19":{"position":[[405,5]]},"22":{"position":[[143,4]]},"57":{"position":[[3999,4]]}},"keywords":{}}],["load",{"_index":401,"title":{},"content":{"19":{"position":[[371,4]]},"26":{"position":[[72,4]]},"27":{"position":[[377,4]]},"37":{"position":[[720,4]]}},"keywords":{}}],["loader",{"_index":708,"title":{},"content":{"37":{"position":[[1065,7]]}},"keywords":{}}],["loading"",{"_index":698,"title":{},"content":{"37":{"position":[[803,13]]}},"keywords":{}}],["local",{"_index":945,"title":{},"content":{"57":{"position":[[2253,5],[3061,5]]}},"keywords":{}}],["locat",{"_index":71,"title":{},"content":{"3":{"position":[[326,6]]},"7":{"position":[[255,7]]}},"keywords":{}}],["log",{"_index":613,"title":{},"content":{"27":{"position":[[212,4]]}},"keywords":{}}],["logic",{"_index":673,"title":{},"content":{"35":{"position":[[653,5]]},"39":{"position":[[222,6]]},"57":{"position":[[4133,5]]}},"keywords":{}}],["long",{"_index":0,"title":{"0":{"position":[[0,4]]}},"content":{"0":{"position":[[30,4]]},"57":{"position":[[5737,4]]}},"keywords":{}}],["longer",{"_index":1011,"title":{},"content":{"57":{"position":[[6115,6]]}},"keywords":{}}],["look",{"_index":169,"title":{},"content":{"10":{"position":[[50,5]]},"43":{"position":[[94,4]]},"63":{"position":[[1310,5]]}},"keywords":{}}],["lorem",{"_index":14,"title":{},"content":{"0":{"position":[[126,5],[278,5],[305,5],[457,5],[484,5],[636,5],[663,5],[815,5],[842,5],[994,5],[1021,5],[1173,5],[1200,5],[1352,5],[1379,5],[1531,5],[1558,5],[1710,5],[1737,5],[1889,5],[1916,5],[2068,5],[2095,5],[2247,5],[2274,5],[2426,5],[2453,5],[2605,5],[2632,5],[2784,5],[2811,5],[2963,5]]},"1":{"position":[[0,5],[152,5]]}},"keywords":{}}],["lot",{"_index":414,"title":{},"content":{"20":{"position":[[115,3]]}},"keywords":{}}],["love",{"_index":769,"title":{},"content":{"39":{"position":[[1738,4]]}},"keywords":{}}],["lt",{"_index":6,"title":{},"content":{"0":{"position":[[52,5]]}},"keywords":{}}],["lt;button",{"_index":44,"title":{},"content":{"2":{"position":[[123,10]]}},"keywords":{}}],["lt;file>",{"_index":633,"title":{},"content":{"29":{"position":[[168,15]]},"30":{"position":[[106,15]]}},"keywords":{}}],["lt;file1>",{"_index":641,"title":{},"content":{"31":{"position":[[117,13]]},"32":{"position":[[250,13]]}},"keywords":{}}],["lt;file2>",{"_index":642,"title":{},"content":{"31":{"position":[[131,13]]},"32":{"position":[[264,13]]}},"keywords":{}}],["lt;file_path>",{"_index":653,"title":{},"content":{"33":{"position":[[133,17]]}},"keywords":{}}],["lt;filen>",{"_index":643,"title":{},"content":{"31":{"position":[[149,13]]},"32":{"position":[[282,13]]}},"keywords":{}}],["made",{"_index":694,"title":{},"content":{"37":{"position":[[512,5],[874,5]]},"44":{"position":[[131,4]]},"58":{"position":[[4588,4]]},"59":{"position":[[2518,4]]}},"keywords":{}}],["main",{"_index":278,"title":{},"content":{"13":{"position":[[92,4]]}},"keywords":{}}],["maintain",{"_index":355,"title":{},"content":{"17":{"position":[[446,9]]},"20":{"position":[[164,9]]},"39":{"position":[[974,11],[1557,11]]},"58":{"position":[[683,10],[919,8],[2946,8]]}},"keywords":{}}],["major",{"_index":998,"title":{},"content":{"57":{"position":[[5464,5]]}},"keywords":{}}],["make",{"_index":172,"title":{},"content":{"10":{"position":[[88,4],[473,5]]},"11":{"position":[[889,4]]},"12":{"position":[[118,5],[267,6],[417,5]]},"14":{"position":[[162,4]]},"15":{"position":[[349,5]]},"16":{"position":[[945,4]]},"17":{"position":[[394,4]]},"22":{"position":[[172,4],[439,5]]},"23":{"position":[[151,5],[472,6]]},"38":{"position":[[16,5],[44,4]]},"39":{"position":[[1629,5]]},"43":{"position":[[224,4],[514,6]]},"57":{"position":[[4862,4]]},"58":{"position":[[3452,6]]},"59":{"position":[[459,4],[2909,4]]},"62":{"position":[[295,4]]},"63":{"position":[[1075,4],[1253,6],[1807,4]]}},"keywords":{}}],["malform",{"_index":987,"title":{},"content":{"57":{"position":[[4414,9]]}},"keywords":{}}],["manag",{"_index":306,"title":{},"content":{"15":{"position":[[418,7]]},"22":{"position":[[480,7]]}},"keywords":{}}],["mani",{"_index":704,"title":{},"content":{"37":{"position":[[999,4]]}},"keywords":{}}],["manual",{"_index":118,"title":{},"content":{"7":{"position":[[26,8]]}},"keywords":{}}],["map",{"_index":862,"title":{},"content":{"48":{"position":[[541,3]]},"59":{"position":[[2583,3]]}},"keywords":{}}],["map<str",{"_index":872,"title":{},"content":{"50":{"position":[[284,14],[341,14],[376,14]]}},"keywords":{}}],["markdown",{"_index":36,"title":{},"content":{"2":{"position":[[30,8]]},"3":{"position":[[72,8]]}},"keywords":{}}],["market",{"_index":406,"title":{},"content":{"19":{"position":[[447,6]]}},"keywords":{}}],["match",{"_index":162,"title":{},"content":{"8":{"position":[[777,5]]},"60":{"position":[[358,5]]},"62":{"position":[[313,7],[383,5]]}},"keywords":{}}],["matchkey",{"_index":887,"title":{},"content":{"53":{"position":[[310,9]]}},"keywords":{}}],["matchpath",{"_index":886,"title":{},"content":{"53":{"position":[[281,10]]}},"keywords":{}}],["matter",{"_index":1174,"title":{},"content":{"63":{"position":[[1705,7]]}},"keywords":{}}],["max",{"_index":930,"title":{},"content":{"57":{"position":[[1096,3]]}},"keywords":{}}],["maximum",{"_index":1001,"title":{},"content":{"57":{"position":[[5612,7]]},"58":{"position":[[635,7],[2673,7],[5274,7]]}},"keywords":{}}],["maxsiz",{"_index":1085,"title":{},"content":{"58":{"position":[[5261,7],[5448,9]]}},"keywords":{}}],["mdx",{"_index":33,"title":{"2":{"position":[[0,3]]}},"content":{"2":{"position":[[57,4]]}},"keywords":{}}],["me!</button>",{"_index":48,"title":{},"content":{"2":{"position":[[197,18]]}},"keywords":{}}],["mean",{"_index":380,"title":{},"content":{"18":{"position":[[742,5]]},"39":{"position":[[167,7],[595,8]]},"57":{"position":[[735,5],[1251,7],[6082,5]]},"58":{"position":[[3879,5]]},"59":{"position":[[266,5],[424,5]]},"61":{"position":[[1333,7]]}},"keywords":{}}],["measur",{"_index":682,"title":{},"content":{"36":{"position":[[362,9]]},"57":{"position":[[6358,7]]}},"keywords":{}}],["mechan",{"_index":442,"title":{},"content":{"21":{"position":[[418,11]]},"36":{"position":[[250,11]]},"58":{"position":[[4923,11],[4941,11]]},"63":{"position":[[1778,9]]}},"keywords":{}}],["media",{"_index":223,"title":{},"content":{"11":{"position":[[536,5]]}},"keywords":{}}],["mention",{"_index":376,"title":{},"content":{"18":{"position":[[651,10]]},"23":{"position":[[542,10]]},"58":{"position":[[4197,9]]}},"keywords":{}}],["mere",{"_index":729,"title":{},"content":{"39":{"position":[[65,6]]}},"keywords":{}}],["mesh",{"_index":477,"title":{},"content":{"23":{"position":[[409,5]]}},"keywords":{}}],["messag",{"_index":1035,"title":{},"content":{"58":{"position":[[903,7],[1164,7],[1393,8],[2930,7]]},"62":{"position":[[432,7]]}},"keywords":{}}],["meta",{"_index":617,"title":{},"content":{"27":{"position":[[385,4]]}},"keywords":{}}],["metadata",{"_index":662,"title":{},"content":{"35":{"position":[[234,8],[291,8],[582,8]]}},"keywords":{}}],["method",{"_index":738,"title":{},"content":{"39":{"position":[[325,6]]},"59":{"position":[[1273,7],[1305,6],[1343,7],[1418,6],[1950,7]]}},"keywords":{}}],["microservic",{"_index":166,"title":{"10":{"position":[[0,12]]}},"content":{"10":{"position":[[23,13],[109,13],[506,13]]},"11":{"position":[[357,12]]},"16":{"position":[[430,14],[502,13]]},"22":{"position":[[334,12]]},"35":{"position":[[705,14]]}},"keywords":{}}],["middlewar",{"_index":488,"title":{},"content":{"23":{"position":[[683,11]]}},"keywords":{}}],["millisecond",{"_index":1010,"title":{},"content":{"57":{"position":[[6049,13]]},"58":{"position":[[5322,12]]}},"keywords":{}}],["minim",{"_index":841,"title":{},"content":{"46":{"position":[[489,7],[596,7]]}},"keywords":{}}],["minor",{"_index":407,"title":{},"content":{"19":{"position":[[463,5]]}},"keywords":{}}],["mitig",{"_index":813,"title":{},"content":{"44":{"position":[[241,9]]}},"keywords":{}}],["mobile/web",{"_index":171,"title":{},"content":{"10":{"position":[[75,12]]}},"keywords":{}}],["modern",{"_index":447,"title":{},"content":{"21":{"position":[[514,6]]}},"keywords":{}}],["modest",{"_index":259,"title":{},"content":{"12":{"position":[[352,6],[480,6]]}},"keywords":{}}],["modifi",{"_index":849,"title":{"60":{"position":[[0,8]]}},"content":{"47":{"position":[[256,6]]},"60":{"position":[[4,7],[261,7],[743,7]]},"61":{"position":[[144,9]]},"63":{"position":[[576,6]]}},"keywords":{}}],["modify(nam",{"_index":1117,"title":{},"content":{"60":{"position":[[438,13],[475,13]]},"63":{"position":[[439,13],[788,13]]}},"keywords":{}}],["modify(omit",{"_index":1123,"title":{},"content":{"60":{"position":[[872,13],[895,13]]}},"keywords":{}}],["monolith",{"_index":409,"title":{"20":{"position":[[3,9]]}},"content":{"20":{"position":[[45,8]]}},"keywords":{}}],["more",{"_index":252,"title":{},"content":{"12":{"position":[[183,4]]},"14":{"position":[[219,4]]},"15":{"position":[[384,4],[448,4]]},"17":{"position":[[416,4]]},"26":{"position":[[949,4]]},"37":{"position":[[1193,4]]},"39":{"position":[[343,4]]},"43":{"position":[[233,4]]},"58":{"position":[[171,5]]},"59":{"position":[[3475,4]]},"63":{"position":[[154,4],[1832,4],[1872,4]]}},"keywords":{}}],["moreov",{"_index":474,"title":{},"content":{"23":{"position":[[220,9]]}},"keywords":{}}],["multipl",{"_index":201,"title":{},"content":{"11":{"position":[[51,8],[149,8]]},"12":{"position":[[274,8]]},"13":{"position":[[297,8]]},"14":{"position":[[167,8]]},"16":{"position":[[1044,8]]},"31":{"position":[[193,8]]},"32":{"position":[[326,8]]},"37":{"position":[[127,8],[477,8]]},"39":{"position":[[886,8]]},"43":{"position":[[441,8]]},"47":{"position":[[44,8]]},"48":{"position":[[410,8]]},"53":{"position":[[542,8]]},"59":{"position":[[3428,8],[3991,8]]},"63":{"position":[[92,8]]}},"keywords":{}}],["mustach",{"_index":1094,"title":{},"content":{"59":{"position":[[1063,8],[1663,8],[2049,8],[2921,8]]}},"keywords":{}}],["mutat",{"_index":908,"title":{},"content":{"57":{"position":[[245,9],[255,8],[666,9],[676,8],[1339,9],[1349,8],[1917,9],[1927,8],[2587,9],[2597,8],[3803,9],[3813,8],[4677,9],[4687,8],[5404,9],[5414,8],[5963,9],[5973,8]]},"58":{"position":[[276,9],[286,8],[589,9],[599,8],[818,9],[828,8],[1057,9],[1067,8],[1300,9],[1310,8],[1564,9],[1574,8],[1982,9],[1992,8],[2638,9],[2648,8],[2846,9],[2856,8],[3079,9],[3089,8],[3296,9],[3306,8],[3753,9],[3763,8],[4463,9],[4473,8],[5177,9],[5187,8],[5551,9],[5561,8]]},"59":{"position":[[1451,8],[2137,8],[2316,8],[2640,8],[3060,8]]}},"keywords":{}}],["n",{"_index":637,"title":{"30":{"position":[[2,1]]},"40":{"position":[[9,1]]}},"content":{"30":{"position":[[87,1]]},"37":{"position":[[354,1],[378,1]]},"46":{"position":[[159,1],[173,1],[319,1],[390,1],[426,1]]},"59":{"position":[[3505,1]]}},"keywords":{}}],["n+1",{"_index":630,"title":{},"content":{"29":{"position":[[91,3]]},"30":{"position":[[36,3]]},"43":{"position":[[324,3],[1050,3]]},"44":{"position":[[67,3]]},"45":{"position":[[590,3]]},"46":{"position":[[77,3],[246,3],[523,3],[632,3]]},"47":{"position":[[196,3]]},"48":{"position":[[879,3]]}},"keywords":{}}],["name",{"_index":239,"title":{},"content":{"11":{"position":[[1007,5]]},"25":{"position":[[747,5]]},"26":{"position":[[179,4]]},"38":{"position":[[288,4]]},"45":{"position":[[230,5]]},"57":{"position":[[2811,5]]},"59":{"position":[[2597,5],[3292,4],[3353,4],[3539,5]]},"60":{"position":[[168,5],[240,4],[314,4],[382,4]]},"61":{"position":[[383,5]]},"62":{"position":[[145,6],[194,5]]},"63":{"position":[[285,5],[367,5],[717,4],[844,4],[861,4],[1347,5],[1530,7],[1538,4]]}},"keywords":{}}],["name"",{"_index":1111,"title":{},"content":{"59":{"position":[[3214,11]]}},"keywords":{}}],["necessari",{"_index":276,"title":{},"content":{"13":{"position":[[51,9]]},"33":{"position":[[67,9]]},"36":{"position":[[53,9]]},"57":{"position":[[426,10]]}},"keywords":{}}],["necessit",{"_index":518,"title":{},"content":{"24":{"position":[[509,12]]}},"keywords":{}}],["need",{"_index":281,"title":{},"content":{"13":{"position":[[246,5]]},"14":{"position":[[153,5]]},"15":{"position":[[118,5]]},"18":{"position":[[797,5]]},"22":{"position":[[132,4],[164,4],[354,5],[395,5]]},"38":{"position":[[35,5]]},"43":{"position":[[24,4]]},"50":{"position":[[149,5]]},"57":{"position":[[383,6],[2371,4]]},"63":{"position":[[1903,5]]}},"keywords":{}}],["nest",{"_index":1128,"title":{},"content":{"61":{"position":[[231,6]]}},"keywords":{}}],["network",{"_index":263,"title":{},"content":{"12":{"position":[[398,7],[506,7]]},"15":{"position":[[328,7]]},"16":{"position":[[784,7]]}},"keywords":{}}],["new",{"_index":202,"title":{},"content":{"11":{"position":[[77,3],[90,3],[207,3],[1175,3]]},"16":{"position":[[1001,3]]},"20":{"position":[[185,3]]},"27":{"position":[[481,3]]},"33":{"position":[[30,3]]}},"keywords":{}}],["newli",{"_index":750,"title":{},"content":{"39":{"position":[[1190,5]]}},"keywords":{}}],["next",{"_index":833,"title":{},"content":{"45":{"position":[[760,4]]}},"keywords":{}}],["node",{"_index":882,"title":{},"content":{"52":{"position":[[41,5]]},"53":{"position":[[39,5]]},"59":{"position":[[58,4]]},"60":{"position":[[97,4],[202,4],[682,4]]},"61":{"position":[[107,4]]}},"keywords":{}}],["nodej",{"_index":83,"title":{},"content":{"5":{"position":[[26,6]]}},"keywords":{}}],["nomenclatur",{"_index":490,"title":{},"content":{"23":{"position":[[764,13]]}},"keywords":{}}],["non",{"_index":268,"title":{},"content":{"12":{"position":[[459,3]]},"57":{"position":[[828,3]]}},"keywords":{}}],["notabl",{"_index":628,"title":{},"content":{"29":{"position":[[48,8]]},"57":{"position":[[4498,7]]}},"keywords":{}}],["note",{"_index":97,"title":{},"content":{"5":{"position":[[236,4]]},"8":{"position":[[668,4]]},"63":{"position":[[1660,4]]}},"keywords":{}}],["noth",{"_index":381,"title":{},"content":{"18":{"position":[[748,7]]}},"keywords":{}}],["now",{"_index":610,"title":{},"content":{"26":{"position":[[910,3]]},"27":{"position":[[7,4],[447,4]]},"61":{"position":[[1028,3]]},"63":{"position":[[939,3]]}},"keywords":{}}],["npm",{"_index":81,"title":{"5":{"position":[[0,4]]}},"content":{"5":{"position":[[148,3],[276,3]]}},"keywords":{}}],["nullabl",{"_index":1142,"title":{},"content":{"61":{"position":[[1183,10],[1245,9],[1282,9]]}},"keywords":{}}],["number",{"_index":700,"title":{},"content":{"37":{"position":[[855,6]]},"47":{"position":[[107,6]]},"48":{"position":[[727,6]]},"58":{"position":[[643,6]]}},"keywords":{}}],["numer",{"_index":808,"title":{},"content":{"43":{"position":[[1122,8]]}},"keywords":{}}],["object",{"_index":244,"title":{},"content":{"11":{"position":[[1335,6]]},"37":{"position":[[563,7],[664,7]]},"58":{"position":[[5209,6]]},"59":{"position":[[1649,6],[2033,6],[2372,6]]},"63":{"position":[[682,7],[928,7],[1465,6]]}},"keywords":{}}],["occaecati",{"_index":592,"title":{},"content":{"26":{"position":[[485,9]]}},"keywords":{}}],["occur",{"_index":695,"title":{},"content":{"37":{"position":[[527,5]]}},"keywords":{}}],["odit",{"_index":607,"title":{},"content":{"26":{"position":[[783,4]]}},"keywords":{}}],["offer",{"_index":634,"title":{},"content":{"29":{"position":[[203,6]]},"57":{"position":[[57,6],[5458,5]]}},"keywords":{}}],["omit",{"_index":1119,"title":{},"content":{"60":{"position":[[647,5],[722,4]]}},"keywords":{}}],["on",{"_index":277,"title":{"30":{"position":[[9,3]]}},"content":{"13":{"position":[[81,3]]},"17":{"position":[[0,3]]},"24":{"position":[[384,3]]},"30":{"position":[[94,3]]},"37":{"position":[[980,4]]},"39":{"position":[[1010,3]]},"46":{"position":[[232,3],[326,3],[397,3]]},"47":{"position":[[75,4]]},"48":{"position":[[433,4],[775,3]]},"57":{"position":[[874,4]]},"59":{"position":[[651,3],[4014,4]]}},"keywords":{}}],["onboard",{"_index":419,"title":{},"content":{"20":{"position":[[174,10]]}},"keywords":{}}],["onc",{"_index":109,"title":{},"content":{"6":{"position":[[283,4]]},"8":{"position":[[673,4]]},"37":{"position":[[0,4]]},"39":{"position":[[1283,4]]},"54":{"position":[[73,4]]}},"keywords":{}}],["onclick",{"_index":45,"title":{},"content":{"2":{"position":[[134,11]]}},"keywords":{}}],["onlin",{"_index":545,"title":{},"content":{"25":{"position":[[145,6]]}},"keywords":{}}],["open",{"_index":569,"title":{},"content":{"26":{"position":[[8,4]]},"27":{"position":[[452,4]]}},"keywords":{}}],["oper",{"_index":758,"title":{"56":{"position":[[0,9]]},"63":{"position":[[0,8]]}},"content":{"39":{"position":[[1461,8],[1569,11]]},"48":{"position":[[103,9]]},"50":{"position":[[98,9],[176,10]]},"57":{"position":[[2311,11],[2460,10],[3679,10]]},"58":{"position":[[4224,9],[4250,8]]},"59":{"position":[[11,8],[206,8],[680,9],[2536,9]]},"60":{"position":[[12,8],[158,9],[269,9],[751,9]]},"61":{"position":[[12,8],[628,9],[1155,8],[1701,8]]},"62":{"position":[[11,9],[229,8]]},"63":{"position":[[101,10],[563,9],[637,8],[824,8],[1030,8],[1437,9],[1687,9]]}},"keywords":{}}],["operation",{"_index":462,"title":{},"content":{"22":{"position":[[448,13]]}},"keywords":{}}],["opt",{"_index":988,"title":{},"content":{"57":{"position":[[4479,3]]}},"keywords":{}}],["optim",{"_index":317,"title":{},"content":{"16":{"position":[[112,9]]},"37":{"position":[[1004,13]]},"48":{"position":[[842,12]]},"57":{"position":[[6299,9]]}},"keywords":{}}],["optio",{"_index":594,"title":{},"content":{"26":{"position":[[505,5]]}},"keywords":{}}],["option",{"_index":632,"title":{},"content":{"29":{"position":[[158,9],[218,7]]},"31":{"position":[[5,6],[265,8]]},"32":{"position":[[398,8]]},"57":{"position":[[464,7]]},"58":{"position":[[326,7]]}},"keywords":{}}],["orchestr",{"_index":210,"title":{},"content":{"11":{"position":[[304,14],[370,14]]},"23":{"position":[[711,13]]},"39":{"position":[[702,14]]}},"keywords":{}}],["order",{"_index":1173,"title":{},"content":{"63":{"position":[[1674,5]]}},"keywords":{}}],["organiz",{"_index":494,"title":{"24":{"position":[[3,14]]}},"content":{"24":{"position":[[106,14],[764,14]]}},"keywords":{}}],["other",{"_index":683,"title":{},"content":{"36":{"position":[[378,7]]},"58":{"position":[[3974,6]]}},"keywords":{}}],["out",{"_index":348,"title":{},"content":{"17":{"position":[[224,3]]},"20":{"position":[[29,3]]},"27":{"position":[[371,3],[516,3]]},"39":{"position":[[1695,3]]},"58":{"position":[[2523,4]]},"59":{"position":[[3501,3]]}},"keywords":{}}],["outlin",{"_index":663,"title":{},"content":{"35":{"position":[[248,8]]}},"keywords":{}}],["output",{"_index":242,"title":{},"content":{"11":{"position":[[1213,6]]}},"keywords":{}}],["over",{"_index":248,"title":{},"content":{"12":{"position":[[87,4]]},"16":{"position":[[906,4]]}},"keywords":{}}],["overal",{"_index":265,"title":{},"content":{"12":{"position":[[427,7]]},"13":{"position":[[359,7]]},"16":{"position":[[372,7]]},"39":{"position":[[435,7]]}},"keywords":{}}],["overview",{"_index":568,"title":{},"content":{"25":{"position":[[1323,8]]}},"keywords":{}}],["ownership",{"_index":509,"title":{},"content":{"24":{"position":[[324,9],[419,9]]}},"keywords":{}}],["p",{"_index":151,"title":{},"content":{"8":{"position":[[455,1],[468,1]]}},"keywords":{}}],["pair",{"_index":676,"title":{},"content":{"36":{"position":[[150,6]]}},"keywords":{}}],["paradigm",{"_index":540,"title":{},"content":{"24":{"position":[[930,10]]}},"keywords":{}}],["paramet",{"_index":669,"title":{},"content":{"35":{"position":[[471,11]]},"46":{"position":[[338,10],[466,9]]},"48":{"position":[[470,9]]},"59":{"position":[[1592,10],[1693,11],[1711,10],[2452,9],[3411,9]]}},"keywords":{}}],["parent",{"_index":857,"title":{"53":{"position":[[0,7]]}},"content":{"48":{"position":[[283,6]]},"50":{"position":[[320,7]]},"53":{"position":[[32,6]]},"59":{"position":[[3864,6]]}},"keywords":{}}],["part",{"_index":446,"title":{},"content":{"21":{"position":[[504,4]]},"38":{"position":[[76,4]]},"63":{"position":[[1519,4],[1548,4]]}},"keywords":{}}],["particular",{"_index":258,"title":{},"content":{"12":{"position":[[320,10]]}},"keywords":{}}],["particularli",{"_index":948,"title":{},"content":{"57":{"position":[[2343,12]]}},"keywords":{}}],["pass",{"_index":878,"title":{},"content":{"51":{"position":[[24,6],[260,6]]},"59":{"position":[[1629,4],[2013,4],[3367,6]]}},"keywords":{}}],["past",{"_index":549,"title":{},"content":{"25":{"position":[[385,5]]}},"keywords":{}}],["path",{"_index":132,"title":{},"content":{"7":{"position":[[342,4]]},"25":{"position":[[590,4],[883,4]]},"27":{"position":[[72,4]]},"31":{"position":[[227,5]]},"32":{"position":[[360,5]]},"33":{"position":[[119,5]]},"47":{"position":[[412,5]]},"54":{"position":[[179,5]]},"57":{"position":[[1409,4],[1596,5]]},"58":{"position":[[4644,6],[4708,4]]},"59":{"position":[[326,4],[363,4],[403,4],[817,5],[1150,4],[1530,5],[2216,5]]},"61":{"position":[[724,4],[1237,4],[1483,4]]},"63":{"position":[[1136,4]]}},"keywords":{}}],["path/to/file1.graphql",{"_index":646,"title":{},"content":{"31":{"position":[[301,23]]},"32":{"position":[[425,23]]}},"keywords":{}}],["path/to/file2.graphql",{"_index":647,"title":{},"content":{"31":{"position":[[325,23]]},"32":{"position":[[449,23]]}},"keywords":{}}],["path=$path:~/.tailcall/bin",{"_index":138,"title":{},"content":{"7":{"position":[[417,26]]}},"keywords":{}}],["pattern",{"_index":496,"title":{},"content":{"24":{"position":[[32,8]]}},"keywords":{}}],["pellentesqu",{"_index":22,"title":{},"content":{"0":{"position":[[183,12],[362,12],[541,12],[720,12],[899,12],[1078,12],[1257,12],[1436,12],[1615,12],[1794,12],[1973,12],[2152,12],[2331,12],[2510,12],[2689,12],[2868,12]]},"1":{"position":[[57,12]]}},"keywords":{}}],["per",{"_index":1032,"title":{},"content":{"58":{"position":[[694,3]]}},"keywords":{}}],["perceiv",{"_index":525,"title":{},"content":{"24":{"position":[[704,8]]}},"keywords":{}}],["perform",{"_index":112,"title":{"14":{"position":[[11,12]]},"19":{"position":[[15,12]]}},"content":{"6":{"position":[[326,9]]},"10":{"position":[[402,7]]},"12":{"position":[[463,11]]},"14":{"position":[[91,11]]},"15":{"position":[[480,7]]},"16":{"position":[[184,7],[263,11],[639,11],[807,11]]},"18":{"position":[[272,11],[360,11],[454,8]]},"19":{"position":[[102,11],[337,7]]},"21":{"position":[[249,11]]},"37":{"position":[[289,11],[694,11]]},"57":{"position":[[4537,11],[4988,12],[5235,7],[5470,11]]},"58":{"position":[[5018,11]]},"61":{"position":[[1807,11]]}},"keywords":{}}],["permit",{"_index":972,"title":{},"content":{"57":{"position":[[3443,9]]},"58":{"position":[[3400,9]]}},"keywords":{}}],["perspect",{"_index":505,"title":{},"content":{"24":{"position":[[226,11]]}},"keywords":{}}],["pertin",{"_index":668,"title":{},"content":{"35":{"position":[[437,9]]}},"keywords":{}}],["phase",{"_index":992,"title":{},"content":{"57":{"position":[[4785,5]]}},"keywords":{}}],["phone",{"_index":829,"title":{},"content":{"45":{"position":[[277,6]]}},"keywords":{}}],["place",{"_index":476,"title":{},"content":{"23":{"position":[[309,5],[329,5]]},"57":{"position":[[3174,5]]}},"keywords":{}}],["placehold",{"_index":775,"title":{},"content":{"41":{"position":[[79,11]]},"43":{"position":[[365,11]]},"57":{"position":[[2838,11]]},"63":{"position":[[1190,11]]}},"keywords":{}}],["platform",{"_index":102,"title":{},"content":{"5":{"position":[[320,8]]},"11":{"position":[[542,9]]}},"keywords":{}}],["playground",{"_index":615,"title":{},"content":{"27":{"position":[[285,11],[461,10]]}},"keywords":{}}],["pleas",{"_index":764,"title":{},"content":{"39":{"position":[[1669,6]]},"44":{"position":[[414,6]]},"59":{"position":[[3488,6]]}},"keywords":{}}],["plu",{"_index":638,"title":{"30":{"position":[[4,4]]}},"content":{"30":{"position":[[89,4]]},"46":{"position":[[321,4],[392,4]]},"48":{"position":[[770,4]]}},"keywords":{}}],["plugin",{"_index":51,"title":{},"content":{"3":{"position":[[53,7]]}},"keywords":{}}],["point",{"_index":179,"title":{},"content":{"10":{"position":[[196,5]]},"18":{"position":[[691,5]]}},"keywords":{}}],["polici",{"_index":1044,"title":{},"content":{"58":{"position":[[1833,9]]}},"keywords":{}}],["pool",{"_index":1024,"title":{},"content":{"58":{"position":[[430,4]]}},"keywords":{}}],["poolidletimeout",{"_index":1023,"title":{},"content":{"58":{"position":[[373,16]]}},"keywords":{}}],["poolmaxidleperhost",{"_index":1031,"title":{},"content":{"58":{"position":[[611,19]]}},"keywords":{}}],["poor",{"_index":269,"title":{},"content":{"12":{"position":[[555,4]]},"37":{"position":[[689,4]]}},"keywords":{}}],["port",{"_index":158,"title":{},"content":{"8":{"position":[[657,4]]},"57":{"position":[[511,5],[536,4],[610,4],[709,4],[841,6],[915,4]]}},"keywords":{}}],["pose",{"_index":1005,"title":{},"content":{"57":{"position":[[5789,4]]}},"keywords":{}}],["post",{"_index":2,"title":{"0":{"position":[[10,4]]},"1":{"position":[[11,4]]},"2":{"position":[[9,4]]},"42":{"position":[[9,6]]}},"content":{"0":{"position":[[40,5],[98,4]]},"2":{"position":[[5,5],[116,6]]},"3":{"position":[[182,4],[290,4],[338,4]]},"11":{"position":[[476,5],[678,6],[704,6],[745,4],[874,4],[1246,4]]},"25":{"position":[[268,5],[826,5],[888,6],[895,6],[966,4],[1008,5],[1023,4]]},"26":{"position":[[184,5],[547,5],[822,5]]},"38":{"position":[[262,5]]},"41":{"position":[[126,5],[172,6]]},"42":{"position":[[41,6],[133,5],[220,5]]},"43":{"position":[[15,5],[180,5],[499,5],[652,5]]},"45":{"position":[[161,6],[168,6],[314,4],[481,6],[498,4],[608,4]]},"46":{"position":[[443,5],[563,5],[676,5],[694,4]]},"47":{"position":[[336,4]]},"48":{"position":[[290,5],[311,6],[764,5],[803,4]]},"52":{"position":[[66,4],[256,4]]},"53":{"position":[[58,6],[65,6],[111,4],[452,4],[551,4],[621,4]]},"59":{"position":[[1364,5],[1794,6],[1963,4],[2333,4],[3523,4],[3871,5],[3892,6]]},"61":{"position":[[332,4],[532,5],[791,4],[824,4],[947,5],[1548,4]]},"63":{"position":[[247,5],[299,4],[387,4],[1367,4],[1493,6]]}},"keywords":{}}],["post'",{"_index":783,"title":{},"content":{"43":{"position":[[259,6],[546,6]]}},"keywords":{}}],["post.us",{"_index":850,"title":{},"content":{"47":{"position":[[286,9]]}},"keywords":{}}],["postuserstreet",{"_index":1136,"title":{},"content":{"61":{"position":[[670,14],[1013,14]]}},"keywords":{}}],["postuserstreet(id",{"_index":1131,"title":{},"content":{"61":{"position":[[507,18],[899,18]]}},"keywords":{}}],["potent",{"_index":811,"title":{},"content":{"44":{"position":[[22,6]]}},"keywords":{}}],["potenti",{"_index":514,"title":{},"content":{"24":{"position":[[452,9]]},"29":{"position":[[81,9]]},"44":{"position":[[218,9]]},"46":{"position":[[67,9],[236,9]]},"57":{"position":[[4051,9],[5507,9],[6374,9]]}},"keywords":{}}],["power",{"_index":40,"title":{},"content":{"2":{"position":[[74,5]]},"3":{"position":[[33,7]]},"15":{"position":[[300,8]]},"16":{"position":[[750,8]]},"57":{"position":[[1977,8]]},"63":{"position":[[1769,8]]}},"keywords":{}}],["practic",{"_index":361,"title":{},"content":{"18":{"position":[[158,9]]},"37":{"position":[[907,9]]}},"keywords":{}}],["precis",{"_index":1175,"title":{},"content":{"63":{"position":[[1837,8]]}},"keywords":{}}],["predict",{"_index":386,"title":{},"content":{"19":{"position":[[90,7]]}},"keywords":{}}],["prepend",{"_index":1073,"title":{},"content":{"58":{"position":[[4607,7]]}},"keywords":{}}],["present",{"_index":486,"title":{},"content":{"23":{"position":[[655,12]]},"24":{"position":[[605,10],[818,8]]},"55":{"position":[[251,7]]},"60":{"position":[[611,9]]},"61":{"position":[[259,10]]}},"keywords":{}}],["prevent",{"_index":979,"title":{},"content":{"57":{"position":[[4040,10],[4380,10]]}},"keywords":{}}],["print",{"_index":161,"title":{},"content":{"8":{"position":[[747,7]]},"27":{"position":[[364,6]]}},"keywords":{}}],["proactiv",{"_index":812,"title":{},"content":{"44":{"position":[[188,9]]}},"keywords":{}}],["problem",{"_index":164,"title":{"9":{"position":[[0,7]]}},"content":{"12":{"position":[[76,7]]},"15":{"position":[[371,7]]},"21":{"position":[[316,7]]},"22":{"position":[[293,7]]},"37":{"position":[[360,8],[384,7],[741,7]]},"43":{"position":[[328,8],[674,7],[1054,7]]},"45":{"position":[[594,8]]},"46":{"position":[[527,8],[636,8]]},"48":{"position":[[883,8]]}},"keywords":{}}],["process",{"_index":199,"title":{},"content":{"11":{"position":[[30,7]]},"13":{"position":[[266,7]]},"16":{"position":[[927,8]]},"37":{"position":[[115,7],[1268,8]]},"44":{"position":[[492,7]]},"61":{"position":[[58,9],[193,8],[1138,8]]}},"keywords":{}}],["produc",{"_index":721,"title":{},"content":{"38":{"position":[[126,8]]}},"keywords":{}}],["product",{"_index":372,"title":{},"content":{"18":{"position":[[471,11]]},"22":{"position":[[265,11]]},"24":{"position":[[364,13]]},"39":{"position":[[945,11],[1315,11],[1403,7],[1515,10]]},"44":{"position":[[171,11]]},"57":{"position":[[2042,10],[3945,10],[4927,10],[6260,10]]}},"keywords":{}}],["profil",{"_index":219,"title":{},"content":{"11":{"position":[[491,7],[937,7]]}},"keywords":{}}],["project",{"_index":652,"title":{},"content":{"33":{"position":[[43,8]]}},"keywords":{}}],["project'",{"_index":912,"title":{},"content":{"57":{"position":[[373,9]]}},"keywords":{}}],["promot",{"_index":1150,"title":{},"content":{"61":{"position":[[1790,9]]}},"keywords":{}}],["prompt",{"_index":654,"title":{},"content":{"33":{"position":[[165,7]]}},"keywords":{}}],["prone",{"_index":364,"title":{},"content":{"18":{"position":[[254,5],[616,5]]}},"keywords":{}}],["propel",{"_index":535,"title":{},"content":{"24":{"position":[[862,7]]}},"keywords":{}}],["properli",{"_index":300,"title":{},"content":{"15":{"position":[[248,8]]},"18":{"position":[[561,8]]}},"keywords":{}}],["properti",{"_index":1169,"title":{},"content":{"63":{"position":[[774,9]]}},"keywords":{}}],["protect",{"_index":965,"title":{},"content":{"57":{"position":[[3258,9]]}},"keywords":{}}],["protocol",{"_index":325,"title":{},"content":{"16":{"position":[[550,10]]},"36":{"position":[[166,8]]}},"keywords":{}}],["provid",{"_index":316,"title":{},"content":{"16":{"position":[[67,9],[868,7]]},"26":{"position":[[475,9]]},"27":{"position":[[351,8]]},"33":{"position":[[105,8]]},"37":{"position":[[245,8],[1152,8]]},"39":{"position":[[332,8]]},"47":{"position":[[148,8]]},"57":{"position":[[1725,9],[2782,8],[3154,9]]},"58":{"position":[[2011,8],[3578,7],[4318,8]]},"59":{"position":[[2943,7],[3017,8]]},"60":{"position":[[32,8]]},"62":{"position":[[261,8],[360,8]]}},"keywords":{}}],["proxi",{"_index":648,"title":{},"content":{"32":{"position":[[69,5]]},"35":{"position":[[175,6],[524,6]]},"39":{"position":[[1120,6]]},"58":{"position":[[1586,6],[1597,5],[1750,5],[2203,6]]}},"keywords":{}}],["proxy'",{"_index":1048,"title":{},"content":{"58":{"position":[[2043,7]]}},"keywords":{}}],["publicli",{"_index":967,"title":{},"content":{"57":{"position":[[3346,8]]}},"keywords":{}}],["publish",{"_index":649,"title":{"37":{"position":[[0,8]]}},"content":{"32":{"position":[[120,7]]},"37":{"position":[[48,7],[104,10],[1085,10],[1257,10]]},"38":{"position":[[142,10]]},"44":{"position":[[158,9]]}},"keywords":{}}],["pull",{"_index":144,"title":{},"content":{"8":{"position":[[168,4],[242,4]]}},"keywords":{}}],["purpos",{"_index":471,"title":{},"content":{"23":{"position":[[161,7]]},"39":{"position":[[244,7],[455,7]]}},"keywords":{}}],["put",{"_index":1098,"title":{},"content":{"59":{"position":[[1370,4],[1971,3]]}},"keywords":{}}],["queri",{"_index":557,"title":{"30":{"position":[[13,8]]}},"content":{"25":{"position":[[543,6],[550,5],[563,5],[609,5]]},"26":{"position":[[108,5],[154,5],[160,5],[222,5],[954,7]]},"30":{"position":[[98,7]]},"45":{"position":[[133,6],[140,5],[153,5]]},"46":{"position":[[330,7],[401,7],[435,5],[497,5],[555,5],[604,5],[682,6]]},"47":{"position":[[437,6]]},"48":{"position":[[113,6]]},"51":{"position":[[46,6],[101,6],[126,5],[279,6]]},"53":{"position":[[50,5],[212,6],[626,6]]},"54":{"position":[[107,5]]},"55":{"position":[[84,5]]},"57":{"position":[[232,6],[239,5],[653,6],[660,5],[1326,6],[1333,5],[1548,5],[1904,6],[1911,5],[2574,6],[2581,5],[2613,5],[3431,7],[3790,6],[3797,5],[4284,7],[4336,5],[4424,8],[4664,6],[4671,5],[4804,8],[4876,7],[5391,6],[5398,5],[5631,5],[5750,7],[5950,6],[5957,5],[6092,5],[6446,7]]},"58":{"position":[[263,6],[270,5],[576,6],[583,5],[805,6],[812,5],[1044,6],[1051,5],[1287,6],[1294,5],[1551,6],[1558,5],[1969,6],[1976,5],[2625,6],[2632,5],[2833,6],[2840,5],[3066,6],[3073,5],[3283,6],[3290,5],[3740,6],[3747,5],[4450,6],[4457,5],[5164,6],[5171,5],[5538,6],[5545,5]]},"59":{"position":[[116,5],[249,5],[547,8],[695,5],[940,5],[1198,5],[1559,6],[1586,5],[1766,5],[1833,6],[3596,6],[3695,6]]},"61":{"position":[[312,6],[319,5],[499,5],[698,5],[871,6],[878,5],[891,5],[1777,5]]},"62":{"position":[[93,6],[100,5],[113,5]]}},"keywords":{}}],["question",{"_index":763,"title":{},"content":{"39":{"position":[[1658,10]]}},"keywords":{}}],["quia",{"_index":602,"title":{},"content":{"26":{"position":[[704,4]]}},"keywords":{}}],["quibusdam",{"_index":606,"title":{},"content":{"26":{"position":[[765,9]]}},"keywords":{}}],["quick",{"_index":567,"title":{},"content":{"25":{"position":[[1317,5]]}},"keywords":{}}],["quit",{"_index":472,"title":{},"content":{"23":{"position":[[169,5]]}},"keywords":{}}],["quot",{"_index":725,"title":{},"content":{"38":{"position":[[254,7],[305,9]]}},"keywords":{}}],["quot;/extern",{"_index":955,"title":{},"content":{"57":{"position":[[2652,15]]}},"keywords":{}}],["quot;/graphiql"",{"_index":939,"title":{},"content":{"57":{"position":[[1879,22]]}},"keywords":{}}],["quot;/posts"",{"_index":828,"title":{},"content":{"45":{"position":[[187,19]]},"53":{"position":[[84,19]]},"59":{"position":[[1813,19]]}},"keywords":{}}],["quot;/posts/{{value.id}}/comments"",{"_index":883,"title":{},"content":{"52":{"position":[[142,41]]}},"keywords":{}}],["quot;/users"",{"_index":559,"title":{},"content":{"25":{"position":[[641,19]]},"47":{"position":[[418,18]]},"53":{"position":[[192,19]]},"54":{"position":[[185,19]]},"59":{"position":[[156,19],[735,19],[980,19],[1536,19],[2222,19],[2699,19],[3109,19],[3576,19]]},"61":{"position":[[1651,19]]}},"keywords":{}}],["quot;/users/{{args.id}}"",{"_index":880,"title":{},"content":{"51":{"position":[[166,31]]},"59":{"position":[[1238,31]]}},"keywords":{}}],["quot;/users/{{headers.userid}}/comments"",{"_index":901,"title":{},"content":{"55":{"position":[[131,47]]}},"keywords":{}}],["quot;/users/{{userid}}"",{"_index":1164,"title":{},"content":{"63":{"position":[[487,30],[999,30]]}},"keywords":{}}],["quot;/users/{{value.id}}/posts"",{"_index":564,"title":{},"content":{"25":{"position":[[914,38]]}},"keywords":{}}],["quot;/users/{{value.userid}}"",{"_index":831,"title":{},"content":{"45":{"position":[[395,36]]}},"keywords":{}}],["quot;0"",{"_index":1146,"title":{},"content":{"61":{"position":[[1605,14]]}},"keywords":{}}],["quot;address"",{"_index":1134,"title":{},"content":{"61":{"position":[[571,20]]}},"keywords":{}}],["quot;apikey"",{"_index":952,"title":{},"content":{"57":{"position":[[2513,19]]}},"keywords":{}}],["quot;array"",{"_index":892,"title":{},"content":{"53":{"position":[[502,17]]}},"keywords":{}}],["quot;authorization"",{"_index":957,"title":{},"content":{"57":{"position":[[2700,26]]},"58":{"position":[[3686,27],[5507,28]]}},"keywords":{}}],["quot;batching"",{"_index":699,"title":{},"content":{"37":{"position":[[820,20]]}},"keywords":{}}],["quot;bear",{"_index":958,"title":{},"content":{"57":{"position":[[2734,12]]}},"keywords":{}}],["quot;data"",{"_index":580,"title":{},"content":{"26":{"position":[[295,17]]}},"keywords":{}}],["quot;eag",{"_index":697,"title":{},"content":{"37":{"position":[[791,11]]}},"keywords":{}}],["quot;ervin",{"_index":597,"title":{},"content":{"26":{"position":[[619,11]]}},"keywords":{}}],["quot;et",{"_index":599,"title":{},"content":{"26":{"position":[[687,8]]}},"keywords":{}}],["quot;front",{"_index":194,"title":{},"content":{"10":{"position":[[597,11]]}},"keywords":{}}],["quot;http://jsonplaceholder.typicode.com"",{"_index":556,"title":{},"content":{"25":{"position":[[492,48]]},"45":{"position":[[82,48]]},"58":{"position":[[525,48],[754,48],[993,48],[1236,48],[1500,48],[1918,48],[2243,48],[2574,48],[2782,48],[3015,48],[3232,48],[4399,48]]}},"keywords":{}}],["quot;http://localhost:3000"",{"_index":1046,"title":{},"content":{"58":{"position":[[1873,35],[2058,34],[2344,33]]}},"keywords":{}}],["quot;https://jsonplaceholder.typicode.com"",{"_index":1093,"title":{},"content":{"59":{"position":[[764,49]]}},"keywords":{}}],["quot;id"",{"_index":582,"title":{},"content":{"26":{"position":[[338,15],[582,15]]},"47":{"position":[[451,15],[514,16]]},"48":{"position":[[127,15],[447,17]]},"53":{"position":[[226,15],[292,17]]},"59":{"position":[[3610,15],[3674,17],[3708,15]]}},"keywords":{}}],["quot;in",{"_index":605,"title":{},"content":{"26":{"position":[[756,8]]}},"keywords":{}}],["quot;john"",{"_index":1156,"title":{},"content":{"62":{"position":[[152,17]]}},"keywords":{}}],["quot;leann",{"_index":584,"title":{},"content":{"26":{"position":[[375,12]]}},"keywords":{}}],["quot;name"",{"_index":583,"title":{},"content":{"26":{"position":[[357,17],[601,17]]},"61":{"position":[[1620,18]]},"63":{"position":[[419,19],[617,19]]}},"keywords":{}}],["quot;operators"",{"_index":1162,"title":{},"content":{"63":{"position":[[122,22]]}},"keywords":{}}],["quot;parent"",{"_index":890,"title":{},"content":{"53":{"position":[[418,18]]}},"keywords":{}}],["quot;post"",{"_index":1102,"title":{},"content":{"59":{"position":[[1512,17],[2198,17]]}},"keywords":{}}],["quot;posts"",{"_index":586,"title":{},"content":{"26":{"position":[[402,18],[645,18]]}},"keywords":{}}],["quot;query"",{"_index":724,"title":{},"content":{"38":{"position":[[233,20]]}},"keywords":{}}],["quot;street"",{"_index":1135,"title":{},"content":{"61":{"position":[[592,20]]}},"keywords":{}}],["quot;sunt",{"_index":588,"title":{},"content":{"26":{"position":[[444,10]]}},"keywords":{}}],["quot;tailcall"",{"_index":1108,"title":{},"content":{"59":{"position":[[2764,23],[3174,22]]}},"keywords":{}}],["quot;tailcall/1.0"",{"_index":1062,"title":{},"content":{"58":{"position":[[3197,25]]}},"keywords":{}}],["quot;title"",{"_index":587,"title":{},"content":{"26":{"position":[[425,18],[668,18],[737,18]]}},"keywords":{}}],["quot;us",{"_index":1110,"title":{},"content":{"59":{"position":[[3203,10]]}},"keywords":{}}],["quot;user"",{"_index":1133,"title":{},"content":{"61":{"position":[[552,18]]}},"keywords":{}}],["quot;userid"",{"_index":888,"title":{},"content":{"53":{"position":[[320,19]]},"59":{"position":[[1847,19]]},"60":{"position":[[452,19],[489,19]]}},"keywords":{}}],["quot;username"",{"_index":1163,"title":{},"content":{"63":{"position":[[453,21],[802,21]]}},"keywords":{}}],["quot;users"",{"_index":581,"title":{},"content":{"26":{"position":[[315,18]]},"61":{"position":[[1585,19]]}},"keywords":{}}],["quot;users","0","name"",{"_index":1144,"title":{},"content":{"61":{"position":[[1491,51]]}},"keywords":{}}],["quot;x",{"_index":1068,"title":{},"content":{"58":{"position":[[3714,7],[5484,8]]},"59":{"position":[[2735,7],[3145,7]]}},"keywords":{}}],["quot;your_api_key_here"",{"_index":953,"title":{},"content":{"57":{"position":[[2540,31],[2859,30]]}},"keywords":{}}],["quot;{{args.id}}"",{"_index":1105,"title":{},"content":{"59":{"position":[[1874,26]]}},"keywords":{}}],["quot;{{args.input}}"",{"_index":1106,"title":{},"content":{"59":{"position":[[2248,27]]}},"keywords":{}}],["quot;{{args.name}}"",{"_index":1112,"title":{},"content":{"59":{"position":[[3233,28]]}},"keywords":{}}],["quot;{{env.api_endpoint}}"",{"_index":897,"title":{},"content":{"54":{"position":[[145,33]]}},"keywords":{}}],["quot;{{value.userid}}"",{"_index":852,"title":{},"content":{"47":{"position":[[474,30]]},"48":{"position":[[150,31]]},"53":{"position":[[249,31]]},"59":{"position":[[3633,31],[3731,31]]}},"keywords":{}}],["rang",{"_index":665,"title":{},"content":{"35":{"position":[[314,5]]}},"keywords":{}}],["rate",{"_index":190,"title":{},"content":{"10":{"position":[[440,4]]},"23":{"position":[[98,4]]}},"keywords":{}}],["raw",{"_index":723,"title":{},"content":{"38":{"position":[[229,3]]}},"keywords":{}}],["reach",{"_index":766,"title":{},"content":{"39":{"position":[[1689,5]]},"58":{"position":[[1700,8]]}},"keywords":{}}],["react",{"_index":41,"title":{},"content":{"2":{"position":[[83,5]]}},"keywords":{}}],["readi",{"_index":687,"title":{},"content":{"37":{"position":[[38,6]]},"57":{"position":[[1771,5]]}},"keywords":{}}],["real",{"_index":791,"title":{},"content":{"43":{"position":[[610,4]]}},"keywords":{}}],["receipt",{"_index":670,"title":{},"content":{"35":{"position":[[488,7]]}},"keywords":{}}],["receiv",{"_index":782,"title":{},"content":{"43":{"position":[[167,8]]},"55":{"position":[[46,8]]},"57":{"position":[[1169,8],[5162,8]]}},"keywords":{}}],["recent",{"_index":229,"title":{},"content":{"11":{"position":[[697,6]]}},"keywords":{}}],["recommend",{"_index":701,"title":{},"content":{"37":{"position":[[883,9]]},"57":{"position":[[2013,11]]}},"keywords":{}}],["redirect",{"_index":1051,"title":{},"content":{"58":{"position":[[2391,10]]}},"keywords":{}}],["reduc",{"_index":285,"title":{"14":{"position":[[3,7]]}},"content":{"14":{"position":[[83,7]]},"37":{"position":[[844,6]]},"47":{"position":[[94,8]]},"48":{"position":[[716,6]]},"57":{"position":[[2177,7]]},"58":{"position":[[5033,8]]},"61":{"position":[[1768,8]]}},"keywords":{}}],["refer",{"_index":198,"title":{},"content":{"11":{"position":[[16,6],[803,9],[1304,9]]},"37":{"position":[[411,6]]},"43":{"position":[[382,6]]},"44":{"position":[[421,5]]},"54":{"position":[[247,6]]},"55":{"position":[[203,6]]},"57":{"position":[[522,6]]},"58":{"position":[[4128,6]]},"59":{"position":[[570,6],[828,6],[1286,6],[3495,5]]},"60":{"position":[[550,8]]}},"keywords":{}}],["registri",{"_index":149,"title":{},"content":{"8":{"position":[[371,9]]},"35":{"position":[[148,9],[194,8],[600,9]]},"37":{"position":[[90,9]]},"38":{"position":[[160,9]]}},"keywords":{}}],["regular",{"_index":57,"title":{},"content":{"3":{"position":[[123,7]]}},"keywords":{}}],["releas",{"_index":444,"title":{"22":{"position":[[11,8]]}},"content":{"21":{"position":[[463,8]]},"39":{"position":[[1068,9]]}},"keywords":{}}],["relev",{"_index":257,"title":{},"content":{"12":{"position":[[300,8]]}},"keywords":{}}],["reli",{"_index":448,"title":{},"content":{"21":{"position":[[556,4]]}},"keywords":{}}],["reliabl",{"_index":303,"title":{},"content":{"15":{"position":[[319,8]]},"16":{"position":[[279,11],[623,11],[823,11]]},"18":{"position":[[441,8]]},"21":{"position":[[233,11]]},"39":{"position":[[666,8]]}},"keywords":{}}],["remain",{"_index":246,"title":{},"content":{"12":{"position":[[35,7]]},"35":{"position":[[29,6]]},"39":{"position":[[519,7]]},"58":{"position":[[4681,7]]}},"keywords":{}}],["renam",{"_index":1115,"title":{},"content":{"60":{"position":[[182,6]]}},"keywords":{}}],["repellat",{"_index":591,"title":{},"content":{"26":{"position":[[466,8]]}},"keywords":{}}],["replac",{"_index":910,"title":{},"content":{"57":{"position":[[296,7]]},"63":{"position":[[1216,8]]}},"keywords":{}}],["repositori",{"_index":106,"title":{},"content":{"6":{"position":[[99,10]]},"35":{"position":[[215,10]]}},"keywords":{}}],["reprehenderit"",{"_index":595,"title":{},"content":{"26":{"position":[[511,19]]}},"keywords":{}}],["repres",{"_index":842,"title":{},"content":{"46":{"position":[[581,10]]},"52":{"position":[[5,10]]},"54":{"position":[[5,10]]},"59":{"position":[[1571,10]]},"61":{"position":[[1058,12]]}},"keywords":{}}],["represent",{"_index":731,"title":{},"content":{"39":{"position":[[89,14]]},"58":{"position":[[4493,15]]}},"keywords":{}}],["request",{"_index":173,"title":{},"content":{"10":{"position":[[93,8],[227,8]]},"11":{"position":[[137,8],[599,8],[896,7]]},"12":{"position":[[126,7]]},"13":{"position":[[285,8]]},"14":{"position":[[176,8]]},"19":{"position":[[232,8]]},"25":{"position":[[457,8]]},"35":{"position":[[508,7],[750,7]]},"36":{"position":[[133,7]]},"37":{"position":[[448,7],[497,8],[647,7],[865,8]]},"38":{"position":[[24,7],[88,8]]},"42":{"position":[[17,7],[107,7]]},"43":{"position":[[60,7],[201,8],[238,8],[310,9],[423,7],[461,9],[529,7],[592,9],[705,7],[766,9],[969,9],[1135,9]]},"44":{"position":[[118,8]]},"45":{"position":[[640,7]]},"46":{"position":[[727,7]]},"47":{"position":[[61,8]]},"48":{"position":[[419,8],[737,8],[787,7]]},"55":{"position":[[29,7]]},"57":{"position":[[3048,8]]},"58":{"position":[[1669,8],[2129,8],[2296,7],[3159,9],[3459,9],[3890,8]]},"59":{"position":[[470,7],[2338,7],[2417,7],[2510,7],[2810,7],[3033,8],[3381,8],[3442,8],[4000,8]]},"63":{"position":[[1088,7],[1264,8],[1627,8]]}},"keywords":{}}],["requir",{"_index":241,"title":{},"content":{"11":{"position":[[1148,8]]},"12":{"position":[[200,8]]},"17":{"position":[[94,8],[308,12]]},"18":{"position":[[492,7]]},"20":{"position":[[289,8]]},"21":{"position":[[41,8],[128,8],[363,8]]},"36":{"position":[[68,8]]},"37":{"position":[[581,7]]},"41":{"position":[[108,8]]},"57":{"position":[[1805,9],[2477,8]]}},"keywords":{}}],["resili",{"_index":383,"title":{},"content":{"18":{"position":[[820,9]]},"35":{"position":[[460,10]]},"36":{"position":[[208,10]]}},"keywords":{}}],["resolv",{"_index":524,"title":{},"content":{"24":{"position":[[679,9]]},"25":{"position":[[1227,7]]},"63":{"position":[[1063,8]]}},"keywords":{}}],["resourc",{"_index":798,"title":{},"content":{"43":{"position":[[793,10]]},"57":{"position":[[5776,9],[6309,8],[6472,10]]}},"keywords":{}}],["respect",{"_index":1074,"title":{},"content":{"58":{"position":[[4633,10]]}},"keywords":{}}],["respons",{"_index":182,"title":{},"content":{"10":{"position":[[242,11],[329,8]]},"11":{"position":[[730,9],[879,9],[977,9],[1117,8],[1179,8]]},"14":{"position":[[252,8]]},"26":{"position":[[262,8]]},"36":{"position":[[141,8]]},"43":{"position":[[826,8]]},"48":{"position":[[524,9],[669,8]]},"57":{"position":[[1081,10],[1159,9],[5143,9],[6228,8]]},"58":{"position":[[2500,8],[2733,9]]},"62":{"position":[[51,8]]}},"keywords":{}}],["rest",{"_index":326,"title":{},"content":{"16":{"position":[[569,4]]},"25":{"position":[[87,4],[152,4]]},"59":{"position":[[88,4],[312,4],[375,4]]}},"keywords":{}}],["restrict",{"_index":1065,"title":{},"content":{"58":{"position":[[3623,8]]}},"keywords":{}}],["result",{"_index":205,"title":{},"content":{"11":{"position":[[181,8],[1070,7]]},"12":{"position":[[544,7]]},"13":{"position":[[329,8]]},"14":{"position":[[73,6],[233,6]]},"19":{"position":[[416,7]]},"37":{"position":[[466,7],[623,9]]},"43":{"position":[[282,9]]},"53":{"position":[[608,7]]},"58":{"position":[[4341,7]]},"61":{"position":[[1259,9]]},"63":{"position":[[1717,9]]}},"keywords":{}}],["retriev",{"_index":228,"title":{},"content":{"11":{"position":[[688,8],[917,8]]},"35":{"position":[[554,9]]},"42":{"position":[[28,8]]}},"keywords":{}}],["return",{"_index":187,"title":{},"content":{"10":{"position":[[315,9]]},"25":{"position":[[700,8],[992,8]]},"37":{"position":[[545,7]]},"61":{"position":[[1041,7]]}},"keywords":{}}],["reusabl",{"_index":353,"title":{},"content":{"17":{"position":[[378,11]]}},"keywords":{}}],["revert",{"_index":460,"title":{},"content":{"22":{"position":[[366,9],[407,9]]}},"keywords":{}}],["rfc",{"_index":1081,"title":{},"content":{"58":{"position":[[4989,4]]}},"keywords":{}}],["rhoncu",{"_index":27,"title":{},"content":{"0":{"position":[[233,7],[412,7],[591,7],[770,7],[949,7],[1128,7],[1307,7],[1486,7],[1665,7],[1844,7],[2023,7],[2202,7],[2381,7],[2560,7],[2739,7],[2918,7]]},"1":{"position":[[107,7]]}},"keywords":{}}],["rich",{"_index":274,"title":{},"content":{"13":{"position":[[11,4]]}},"keywords":{}}],["right",{"_index":814,"title":{},"content":{"44":{"position":[[251,5]]}},"keywords":{}}],["risk",{"_index":292,"title":{"15":{"position":[[13,5]]}},"content":{"15":{"position":[[84,6]]}},"keywords":{}}],["rivet",{"_index":534,"title":{},"content":{"24":{"position":[[838,8]]}},"keywords":{}}],["robust",{"_index":382,"title":{},"content":{"18":{"position":[[809,6]]},"36":{"position":[[515,6]]}},"keywords":{}}],["rollbacks.break",{"_index":757,"title":{},"content":{"39":{"position":[[1411,18]]}},"keywords":{}}],["rout",{"_index":183,"title":{},"content":{"10":{"position":[[258,7]]},"21":{"position":[[410,7]]},"58":{"position":[[1686,6],[1812,7]]}},"keywords":{}}],["run",{"_index":88,"title":{"46":{"position":[[0,7]]}},"content":{"5":{"position":[[100,7],[224,8]]},"6":{"position":[[125,7],[271,8]]},"8":{"position":[[381,3],[450,3],[758,7]]},"22":{"position":[[254,7]]},"26":{"position":[[210,7]]},"27":{"position":[[12,3]]},"37":{"position":[[146,3]]},"39":{"position":[[882,3]]},"57":{"position":[[571,8],[5651,3],[5742,7],[6434,3]]}},"keywords":{}}],["runtim",{"_index":754,"title":{},"content":{"39":{"position":[[1351,8]]}},"keywords":{}}],["s",{"_index":125,"title":{},"content":{"7":{"position":[[157,1]]}},"keywords":{}}],["safeguard",{"_index":1003,"title":{},"content":{"57":{"position":[[5719,9]]}},"keywords":{}}],["safeti",{"_index":756,"title":{},"content":{"39":{"position":[[1393,6]]}},"keywords":{}}],["same",{"_index":491,"title":{},"content":{"23":{"position":[[791,4]]},"25":{"position":[[1262,4]]},"35":{"position":[[40,4]]},"38":{"position":[[109,4]]},"39":{"position":[[932,4]]},"63":{"position":[[1753,5]]}},"keywords":{}}],["sampl",{"_index":825,"title":{},"content":{"45":{"position":[[10,6]]}},"keywords":{}}],["scenario",{"_index":215,"title":{"41":{"position":[[0,9]]}},"content":{"11":{"position":[[409,8]]},"18":{"position":[[189,10]]},"59":{"position":[[3273,9]]}},"keywords":{}}],["schema",{"_index":542,"title":{"31":{"position":[[2,7]]}},"content":{"25":{"position":[[71,6],[328,7],[466,6],[1209,6],[1248,6],[1350,6]]},"27":{"position":[[344,6]]},"29":{"position":[[312,6]]},"31":{"position":[[39,6],[110,6],[294,6]]},"33":{"position":[[85,6]]},"35":{"position":[[141,6],[187,6],[392,6]]},"36":{"position":[[117,6]]},"45":{"position":[[56,6],[440,6]]},"47":{"position":[[312,6]]},"57":{"position":[[43,6],[192,6],[624,6],[1277,6],[1836,6],[2486,6],[3566,6],[3745,6],[4098,6],[4312,7],[4372,7],[4617,6],[5064,6],[5342,6],[5904,6]]},"58":{"position":[[220,6],[478,6],[704,6],[944,6],[1188,6],[1447,6],[1843,6],[2528,6],[2743,6],[2971,6],[3169,6],[3653,6],[4373,6],[5121,6],[5424,6]]},"60":{"position":[[122,7],[223,6],[395,7],[639,7],[705,6],[977,7]]},"61":{"position":[[124,7],[158,6],[295,7],[303,6],[846,6],[862,6],[1001,7],[1729,6]]},"62":{"position":[[68,7],[84,6],[346,6]]},"63":{"position":[[202,6],[1277,6],[1727,6],[1825,6]]}},"keywords":{}}],["screen",{"_index":254,"title":{},"content":{"12":{"position":[[216,7],[331,7]]}},"keywords":{}}],["script",{"_index":128,"title":{},"content":{"7":{"position":[[223,7]]}},"keywords":{}}],["seamless",{"_index":717,"title":{},"content":{"37":{"position":[[1333,8]]}},"keywords":{}}],["second",{"_index":236,"title":{},"content":{"11":{"position":[[835,7]]},"57":{"position":[[6068,8]]},"58":{"position":[[402,7],[871,7],[1109,7],[2456,7],[2689,7],[2894,7]]}},"keywords":{}}],["secret",{"_index":950,"title":{},"content":{"57":{"position":[[2410,8]]}},"keywords":{}}],["section",{"_index":713,"title":{},"content":{"37":{"position":[[1223,9]]},"43":{"position":[[1201,9]]},"45":{"position":[[765,8]]}},"keywords":{}}],["secur",{"_index":294,"title":{},"content":{"15":{"position":[[75,8],[257,8]]},"35":{"position":[[447,8],[743,6]]},"36":{"position":[[301,8],[526,6]]},"57":{"position":[[2164,8],[3114,8],[4028,8],[5794,8],[6349,8]]},"58":{"position":[[1824,8],[3604,8],[4088,8]]}},"keywords":{}}],["see",{"_index":577,"title":{},"content":{"26":{"position":[[251,3]]},"27":{"position":[[208,3]]}},"keywords":{}}],["seek",{"_index":989,"title":{},"content":{"57":{"position":[[4511,7]]}},"keywords":{}}],["seen",{"_index":1139,"title":{},"content":{"61":{"position":[[937,5]]}},"keywords":{}}],["segment",{"_index":1075,"title":{},"content":{"58":{"position":[[4713,9]]},"59":{"position":[[1041,9]]}},"keywords":{}}],["semant",{"_index":733,"title":{},"content":{"39":{"position":[[158,8],[586,8]]}},"keywords":{}}],["send",{"_index":204,"title":{},"content":{"11":{"position":[[129,7],[581,4]]},"12":{"position":[[175,7]]},"13":{"position":[[277,7]]},"42":{"position":[[10,4]]},"59":{"position":[[1980,4],[2325,5]]}},"keywords":{}}],["sens",{"_index":508,"title":{},"content":{"24":{"position":[[315,5]]},"39":{"position":[[1635,6]]}},"keywords":{}}],["sensit",{"_index":295,"title":{},"content":{"15":{"position":[[134,9]]},"57":{"position":[[3212,9]]}},"keywords":{}}],["sent",{"_index":719,"title":{},"content":{"38":{"position":[[66,4]]},"57":{"position":[[4884,4]]},"58":{"position":[[911,4],[1412,4],[2336,4],[2938,4]]}},"keywords":{}}],["separ",{"_index":226,"title":{},"content":{"11":{"position":[[590,8]]},"16":{"position":[[79,8],[346,8]]},"31":{"position":[[233,9]]},"32":{"position":[[366,9]]},"37":{"position":[[638,8]]}},"keywords":{}}],["seri",{"_index":1165,"title":{},"content":{"63":{"position":[[553,6]]}},"keywords":{}}],["serv",{"_index":661,"title":{},"content":{"35":{"position":[[203,6]]},"39":{"position":[[640,6]]},"59":{"position":[[20,6]]}},"keywords":{}}],["server",{"_index":147,"title":{"57":{"position":[[0,8]]}},"content":{"8":{"position":[[278,7],[511,7],[552,6]]},"10":{"position":[[167,6]]},"12":{"position":[[160,6]]},"15":{"position":[[511,6]]},"25":{"position":[[1143,7]]},"27":{"position":[[51,6],[321,6]]},"32":{"position":[[40,7],[109,6],[206,7]]},"43":{"position":[[759,6],[786,6],[849,6],[927,6]]},"47":{"position":[[117,6]]},"54":{"position":[[53,7],[87,6],[334,6]]},"55":{"position":[[71,7],[279,6]]},"57":{"position":[[4,7],[87,6],[130,6],[3460,7],[4244,6],[4530,6],[5685,7],[6181,7],[6465,6]]},"58":{"position":[[77,6],[1635,6],[4300,7]]},"59":{"position":[[447,6],[672,7],[1997,7],[2869,6]]}},"keywords":{}}],["server"",{"_index":1090,"title":{},"content":{"58":{"position":[[5493,13]]},"59":{"position":[[2743,13],[3153,13]]}},"keywords":{}}],["server'",{"_index":947,"title":{},"content":{"57":{"position":[[2302,8]]}},"keywords":{}}],["server(...[serverset",{"_index":907,"title":{},"content":{"57":{"position":[[199,32]]}},"keywords":{}}],["server(enablecachecontrolhead",{"_index":933,"title":{},"content":{"57":{"position":[[1284,33]]}},"keywords":{}}],["server(enableintrospect",{"_index":974,"title":{},"content":{"57":{"position":[[3752,28]]}},"keywords":{}}],["server(enablequeryvalid",{"_index":990,"title":{},"content":{"57":{"position":[[4624,30]]}},"keywords":{}}],["server(enableresponsevalid",{"_index":997,"title":{},"content":{"57":{"position":[[5349,33]]}},"keywords":{}}],["server(globalresponsetimeout",{"_index":1007,"title":{},"content":{"57":{"position":[[5911,30]]}},"keywords":{}}],["server(port",{"_index":917,"title":{},"content":{"57":{"position":[[631,13],[1843,13]]}},"keywords":{}}],["server(var",{"_index":951,"title":{},"content":{"57":{"position":[[2493,13]]}},"keywords":{}}],["serverset",{"_index":911,"title":{},"content":{"57":{"position":[[304,22],[449,14]]}},"keywords":{}}],["servic",{"_index":186,"title":{},"content":{"10":{"position":[[298,7],[355,7],[545,7],[646,9]]},"16":{"position":[[96,7]]},"20":{"position":[[69,7]]},"22":{"position":[[98,9],[123,8]]},"23":{"position":[[401,7]]},"35":{"position":[[20,8],[364,7]]},"43":{"position":[[989,7]]},"57":{"position":[[1208,9],[3142,8],[5189,9],[6394,7]]},"58":{"position":[[3438,8],[3558,9],[3954,9],[4066,9]]}},"keywords":{}}],["set",{"_index":504,"title":{},"content":{"24":{"position":[[217,4],[544,4]]},"29":{"position":[[249,9]]},"54":{"position":[[69,3],[341,9]]},"57":{"position":[[80,3],[414,8],[717,3],[1238,3],[1272,4],[2827,3],[3393,7],[3718,7],[4746,3],[5213,7],[5295,7],[5445,7],[6037,3],[6209,3]]},"58":{"position":[[110,8],[1603,7],[2035,3],[3819,3],[4524,3],[5241,9]]}},"keywords":{}}],["setup",{"_index":822,"title":{},"content":{"44":{"position":[[486,5]]},"57":{"position":[[1829,6]]}},"keywords":{}}],["sha",{"_index":726,"title":{},"content":{"39":{"position":[[4,3]]}},"keywords":{}}],["sha256",{"_index":709,"title":{},"content":{"37":{"position":[[1105,6]]}},"keywords":{}}],["shape",{"_index":672,"title":{},"content":{"35":{"position":[[643,5]]}},"keywords":{}}],["share",{"_index":869,"title":{},"content":{"50":{"position":[[161,6]]},"57":{"position":[[2428,6]]}},"keywords":{}}],["shift",{"_index":517,"title":{},"content":{"24":{"position":[[503,5]]}},"keywords":{}}],["show",{"_index":1159,"title":{},"content":{"62":{"position":[[443,4]]}},"keywords":{}}],["side",{"_index":245,"title":{},"content":{"12":{"position":[[30,4],[539,4]]},"13":{"position":[[75,5],[143,4]]},"14":{"position":[[53,4]]},"15":{"position":[[43,4],[518,4]]},"61":{"position":[[1122,4]]}},"keywords":{}}],["signific",{"_index":341,"title":{},"content":{"17":{"position":[[105,11]]},"18":{"position":[[500,11]]},"48":{"position":[[32,11],[830,11]]}},"keywords":{}}],["similar",{"_index":154,"title":{},"content":{"8":{"position":[[582,7]]},"47":{"position":[[53,7]]}},"keywords":{}}],["simpli",{"_index":52,"title":{},"content":{"3":{"position":[[61,6]]}},"keywords":{}}],["simplic",{"_index":1152,"title":{},"content":{"61":{"position":[[1823,11]]}},"keywords":{}}],["simplifi",{"_index":936,"title":{},"content":{"57":{"position":[[1537,10]]},"61":{"position":[[21,10],[1099,11]]}},"keywords":{}}],["singl",{"_index":178,"title":{},"content":{"10":{"position":[[189,6]]},"11":{"position":[[1110,6]]},"25":{"position":[[313,6]]},"37":{"position":[[441,6]]},"48":{"position":[[337,6]]},"59":{"position":[[3458,6],[3918,6]]}},"keywords":{}}],["sit",{"_index":17,"title":{},"content":{"0":{"position":[[144,3],[296,3],[323,3],[475,3],[502,3],[654,3],[681,3],[833,3],[860,3],[1012,3],[1039,3],[1191,3],[1218,3],[1370,3],[1397,3],[1549,3],[1576,3],[1728,3],[1755,3],[1907,3],[1934,3],[2086,3],[2113,3],[2265,3],[2292,3],[2444,3],[2471,3],[2623,3],[2650,3],[2802,3],[2829,3],[2981,3]]},"1":{"position":[[18,3],[170,3]]},"16":{"position":[[336,4]]}},"keywords":{}}],["situat",{"_index":693,"title":{},"content":{"37":{"position":[[423,9]]},"43":{"position":[[900,9]]},"57":{"position":[[4452,10]]}},"keywords":{}}],["size",{"_index":11,"title":{},"content":{"0":{"position":[[103,4]]},"13":{"position":[[367,4]]},"58":{"position":[[5282,4]]}},"keywords":{}}],["skill",{"_index":503,"title":{},"content":{"24":{"position":[[211,5],[538,5]]}},"keywords":{}}],["slower",{"_index":290,"title":{},"content":{"14":{"position":[[245,6]]},"43":{"position":[[819,6]]}},"keywords":{}}],["small",{"_index":387,"title":{},"content":{"19":{"position":[[126,5]]}},"keywords":{}}],["social",{"_index":222,"title":{},"content":{"11":{"position":[[529,6]]}},"keywords":{}}],["softwar",{"_index":539,"title":{},"content":{"24":{"position":[[909,8]]}},"keywords":{}}],["solut",{"_index":266,"title":{},"content":{"12":{"position":[[435,8]]},"17":{"position":[[80,8],[194,8],[407,8]]},"18":{"position":[[103,8],[238,8],[314,8],[588,8]]},"24":{"position":[[462,9]]},"43":{"position":[[1145,9]]}},"keywords":{}}],["solv",{"_index":315,"title":{"47":{"position":[[0,7]]}},"content":{"16":{"position":[[24,5]]},"21":{"position":[[305,5]]},"37":{"position":[[756,6]]}},"keywords":{}}],["sourc",{"_index":747,"title":{},"content":{"39":{"position":[[990,6]]},"60":{"position":[[343,6],[590,7]]}},"keywords":{}}],["space",{"_index":645,"title":{},"content":{"31":{"position":[[248,6]]},"32":{"position":[[381,6]]}},"keywords":{}}],["spaghetti",{"_index":416,"title":{},"content":{"20":{"position":[[134,9]]}},"keywords":{}}],["spec",{"_index":627,"title":{},"content":{"29":{"position":[[42,5],[338,5]]},"31":{"position":[[65,5]]},"32":{"position":[[186,6]]},"35":{"position":[[103,4]]},"36":{"position":[[30,6]]},"39":{"position":[[1139,4]]}},"keywords":{}}],["special",{"_index":340,"title":{"17":{"position":[[10,12]]}},"content":{"17":{"position":[[68,11]]}},"keywords":{}}],["specif",{"_index":103,"title":{"36":{"position":[[12,13]]}},"content":{"5":{"position":[[329,8]]},"16":{"position":[[131,8]]},"17":{"position":[[299,8]]},"32":{"position":[[80,8]]},"36":{"position":[[16,13],[175,10]]},"37":{"position":[[21,13],[60,13],[231,13],[1138,13]]},"39":{"position":[[37,13],[111,14],[182,13],[911,13],[1241,13],[1447,13]]},"43":{"position":[[74,8]]},"53":{"position":[[655,8]]},"57":{"position":[[332,8],[1658,8],[5864,8]]},"58":{"position":[[4699,8]]},"59":{"position":[[1131,8]]},"63":{"position":[[690,12],[1510,8],[1894,8]]}},"keywords":{}}],["specifi",{"_index":551,"title":{},"content":{"25":{"position":[[425,7],[573,7],[1189,7]]},"31":{"position":[[209,7]]},"32":{"position":[[342,7]]},"55":{"position":[[332,9]]},"57":{"position":[[587,10],[4222,9],[4606,10],[5272,10]]},"58":{"position":[[184,10],[1737,10],[3367,9],[3493,10],[4264,7],[5221,9]]},"59":{"position":[[351,7],[612,10],[655,9],[1395,10],[2560,10]]},"61":{"position":[[1349,7],[1471,7]]},"63":{"position":[[1126,9]]}},"keywords":{}}],["specification'",{"_index":743,"title":{},"content":{"39":{"position":[[570,15]]}},"keywords":{}}],["specul",{"_index":385,"title":{"19":{"position":[[3,11]]}},"content":{},"keywords":{}}],["ssl",{"_index":121,"title":{},"content":{"7":{"position":[[73,3]]}},"keywords":{}}],["stabil",{"_index":753,"title":{},"content":{"39":{"position":[[1301,10],[1581,9]]}},"keywords":{}}],["stabl",{"_index":739,"title":{},"content":{"39":{"position":[[348,6]]}},"keywords":{}}],["stage",{"_index":815,"title":{},"content":{"44":{"position":[[278,6]]},"57":{"position":[[3899,7]]}},"keywords":{}}],["standard",{"_index":346,"title":{},"content":{"17":{"position":[[181,8],[358,15]]},"23":{"position":[[494,8]]},"25":{"position":[[1090,8]]},"36":{"position":[[488,10]]},"37":{"position":[[893,8]]},"57":{"position":[[832,8]]}},"keywords":{}}],["start",{"_index":141,"title":{"32":{"position":[[0,6]]}},"content":{"8":{"position":[[76,9],[532,6]]},"27":{"position":[[41,5],[140,5],[328,6]]},"32":{"position":[[4,5],[196,5],[244,5],[301,5],[419,5]]},"54":{"position":[[94,7]]}},"keywords":{}}],["state",{"_index":689,"title":{},"content":{"37":{"position":[[205,6]]},"61":{"position":[[477,6]]}},"keywords":{}}],["statement",{"_index":165,"title":{"9":{"position":[[8,9]]}},"content":{},"keywords":{}}],["static",{"_index":1103,"title":{},"content":{"59":{"position":[[1642,6],[2026,6]]}},"keywords":{}}],["steer",{"_index":923,"title":{},"content":{"57":{"position":[[848,8]]}},"keywords":{}}],["step",{"_index":116,"title":{},"content":{"7":{"position":[[11,5]]},"8":{"position":[[56,5]]},"18":{"position":[[213,5],[547,5]]},"37":{"position":[[136,6],[1244,4]]}},"keywords":{}}],["store",{"_index":868,"title":{},"content":{"50":{"position":[[122,5]]},"57":{"position":[[2379,5],[3234,6]]}},"keywords":{}}],["strain",{"_index":1004,"title":{},"content":{"57":{"position":[[5769,6]]}},"keywords":{}}],["streamlin",{"_index":1127,"title":{},"content":{"61":{"position":[[214,12],[1740,10]]}},"keywords":{}}],["street",{"_index":1129,"title":{},"content":{"61":{"position":[[447,7],[1083,7]]}},"keywords":{}}],["stress",{"_index":797,"title":{},"content":{"43":{"position":[[776,9]]}},"keywords":{}}],["string",{"_index":232,"title":{},"content":{"11":{"position":[[767,7],[781,7],[1013,7],[1028,7],[1268,7],[1282,7]]},"25":{"position":[[753,7],[771,7],[786,7],[1046,7],[1060,7]]},"45":{"position":[[236,7],[254,7],[269,7],[284,6],[300,6],[350,7],[364,7]]},"47":{"position":[[372,7],[386,7]]},"52":{"position":[[88,7],[102,7]]},"53":{"position":[[147,7],[161,7]]},"59":{"position":[[3083,8],[3545,7]]},"61":{"position":[[389,7],[404,7],[455,7],[469,7],[484,7],[924,6],[1051,6]]},"62":{"position":[[200,6]]},"63":{"position":[[373,6],[975,7],[1353,6],[1384,6]]}},"keywords":{}}],["string>",{"_index":875,"title":{},"content":{"50":{"position":[[356,10],[391,10]]}},"keywords":{}}],["structur",{"_index":579,"title":{},"content":{"26":{"position":[[271,10]]},"35":{"position":[[274,11]]},"39":{"position":[[229,10]]},"57":{"position":[[285,10],[4147,11]]},"61":{"position":[[37,10]]}},"keywords":{}}],["subject",{"_index":478,"title":{},"content":{"23":{"position":[[425,10]]}},"keywords":{}}],["subsequ",{"_index":810,"title":{},"content":{"43":{"position":[[1190,10]]}},"keywords":{}}],["substanti",{"_index":846,"title":{},"content":{"47":{"position":[[80,13]]}},"keywords":{}}],["substitut",{"_index":1095,"title":{},"content":{"59":{"position":[[1085,10],[2070,10]]}},"keywords":{}}],["succe",{"_index":612,"title":{},"content":{"27":{"position":[[187,9]]}},"keywords":{}}],["such",{"_index":38,"title":{},"content":{"2":{"position":[[49,4]]},"3":{"position":[[225,4]]},"10":{"position":[[416,4]]},"15":{"position":[[157,4]]},"16":{"position":[[561,4]]},"19":{"position":[[152,4]]},"21":{"position":[[163,4]]},"23":{"position":[[90,4]]},"25":{"position":[[1135,4]]},"29":{"position":[[259,4]]},"36":{"position":[[219,4]]},"37":{"position":[[783,4]]},"48":{"position":[[349,4]]},"57":{"position":[[1602,4],[4564,4]]},"59":{"position":[[3930,4]]}},"keywords":{}}],["suffer",{"_index":832,"title":{},"content":{"45":{"position":[[573,7]]}},"keywords":{}}],["suggest",{"_index":512,"title":{},"content":{"24":{"position":[[394,7]]}},"keywords":{}}],["suitabl",{"_index":1177,"title":{},"content":{"63":{"position":[[1877,8]]}},"keywords":{}}],["summari",{"_index":3,"title":{},"content":{"0":{"position":[[12,7]]}},"keywords":{}}],["support",{"_index":34,"title":{"21":{"position":[[10,7]]}},"content":{"2":{"position":[[11,7]]},"3":{"position":[[360,8]]},"21":{"position":[[442,7],[579,8]]},"61":{"position":[[1314,8]]}},"keywords":{}}],["sure",{"_index":456,"title":{},"content":{"22":{"position":[[177,4]]},"38":{"position":[[49,4]]},"57":{"position":[[4867,4]]},"62":{"position":[[300,4]]}},"keywords":{}}],["suscept",{"_index":357,"title":{},"content":{"18":{"position":[[71,11]]}},"keywords":{}}],["syntax",{"_index":737,"title":{},"content":{"39":{"position":[[312,7],[403,7]]}},"keywords":{}}],["system",{"_index":120,"title":{},"content":{"7":{"position":[[59,7]]},"8":{"position":[[121,7]]},"16":{"position":[[658,7]]},"21":{"position":[[269,6]]},"35":{"position":[[535,6]]},"36":{"position":[[533,7]]},"39":{"position":[[778,6]]},"48":{"position":[[494,6],[622,6]]},"57":{"position":[[5857,6]]}},"keywords":{}}],["tab",{"_index":622,"title":{},"content":{"27":{"position":[[485,3]]}},"keywords":{}}],["tackl",{"_index":771,"title":{"40":{"position":[[0,8]]}},"content":{},"keywords":{}}],["tag",{"_index":73,"title":{},"content":{"3":{"position":[[369,4]]}},"keywords":{}}],["tailcal",{"_index":87,"title":{"46":{"position":[[12,8]]},"50":{"position":[[11,9]]}},"content":{"5":{"position":[[88,8],[189,8]]},"6":{"position":[[90,8],[215,8],[236,8],[366,8]]},"7":{"position":[[201,8],[270,11]]},"8":{"position":[[23,8],[184,8],[333,8],[389,8],[543,8]]},"24":{"position":[[639,9]]},"27":{"position":[[246,8]]},"32":{"position":[[31,8]]},"33":{"position":[[34,8]]},"35":{"position":[[166,8]]},"37":{"position":[[81,8]]},"44":{"position":[[4,8],[376,8]]},"45":{"position":[[740,8]]},"46":{"position":[[24,8],[206,8]]},"47":{"position":[[135,8]]},"48":{"position":[[188,8]]},"50":{"position":[[3,9]]},"55":{"position":[[62,8]]},"57":{"position":[[160,8],[554,8],[750,8],[1031,8],[1181,8],[1463,9],[1795,9],[2931,8],[3320,8],[5027,8]]},"58":{"position":[[4890,8]]},"59":{"position":[[2891,9],[3769,8]]}},"keywords":{}}],["tailcall/bin",{"_index":136,"title":{},"content":{"7":{"position":[[383,15]]}},"keywords":{}}],["tailcallhq/tailcal",{"_index":93,"title":{},"content":{"5":{"position":[[157,19]]},"6":{"position":[[182,19]]}},"keywords":{}}],["tailcallrc.graphql",{"_index":656,"title":{},"content":{"33":{"position":[[232,19]]}},"keywords":{}}],["tailor",{"_index":351,"title":{},"content":{"17":{"position":[[283,8]]},"57":{"position":[[356,8]]}},"keywords":{}}],["take",{"_index":288,"title":{},"content":{"14":{"position":[[214,4]]},"16":{"position":[[730,4]]},"57":{"position":[[6108,6]]},"61":{"position":[[1169,4]]},"63":{"position":[[1450,4]]}},"keywords":{}}],["taken",{"_index":363,"title":{},"content":{"18":{"position":[[227,6]]}},"keywords":{}}],["tap",{"_index":108,"title":{},"content":{"6":{"position":[[178,3]]},"47":{"position":[[233,3]]}},"keywords":{}}],["target",{"_index":1050,"title":{},"content":{"58":{"position":[[2304,9]]},"63":{"position":[[703,9]]}},"keywords":{}}],["task",{"_index":188,"title":{},"content":{"10":{"position":[[410,5]]}},"keywords":{}}],["tc",{"_index":96,"title":{},"content":{"5":{"position":[[233,2]]},"6":{"position":[[280,2]]},"8":{"position":[[766,2]]},"27":{"position":[[137,2]]},"29":{"position":[[149,2]]},"30":{"position":[[76,2]]},"31":{"position":[[99,2],[283,2]]},"32":{"position":[[241,2],[416,2]]},"33":{"position":[[125,2]]},"46":{"position":[[107,2],[349,2]]}},"keywords":{}}],["tcp",{"_index":1057,"title":{},"content":{"58":{"position":[[2915,3]]}},"keywords":{}}],["tcpkeepal",{"_index":1056,"title":{},"content":{"58":{"position":[[2868,13]]}},"keywords":{}}],["team",{"_index":511,"title":{},"content":{"24":{"position":[[357,6],[441,5],[564,5]]}},"keywords":{}}],["technic",{"_index":531,"title":{},"content":{"24":{"position":[[792,9]]}},"keywords":{}}],["techniqu",{"_index":696,"title":{},"content":{"37":{"position":[[772,10]]},"47":{"position":[[25,9]]}},"keywords":{}}],["tell",{"_index":837,"title":{},"content":{"46":{"position":[[187,5]]},"60":{"position":[[509,5],[915,5]]}},"keywords":{}}],["templat",{"_index":909,"title":{},"content":{"57":{"position":[[275,9]]},"59":{"position":[[1072,9],[1672,8],[2058,8],[2930,9]]}},"keywords":{}}],["tempor",{"_index":28,"title":{},"content":{"0":{"position":[[247,6],[426,6],[605,6],[784,6],[963,6],[1142,6],[1321,6],[1500,6],[1679,6],[1858,6],[2037,6],[2216,6],[2395,6],[2574,6],[2753,6],[2932,6]]},"1":{"position":[[121,6]]},"26":{"position":[[775,7]]}},"keywords":{}}],["termin",{"_index":91,"title":{},"content":{"5":{"position":[[138,9]]},"6":{"position":[[163,9]]},"57":{"position":[[5667,10],[6163,10]]}},"keywords":{}}],["test",{"_index":369,"title":{},"content":{"18":{"position":[[342,7],[372,8],[386,8],[411,8]]},"19":{"position":[[376,7]]},"57":{"position":[[1570,8]]}},"keywords":{}}],["text",{"_index":736,"title":{},"content":{"39":{"position":[[304,4]]}},"keywords":{}}],["textual",{"_index":730,"title":{},"content":{"39":{"position":[[81,7]]}},"keywords":{}}],["that'",{"_index":417,"title":{},"content":{"20":{"position":[[149,6]]},"23":{"position":[[593,6]]}},"keywords":{}}],["that’",{"_index":720,"title":{},"content":{"38":{"position":[[119,6]]}},"keywords":{}}],["therebi",{"_index":865,"title":{},"content":{"48":{"position":[[892,7]]},"61":{"position":[[1091,7]]}},"keywords":{}}],["therefor",{"_index":307,"title":{},"content":{"15":{"position":[[432,9]]},"39":{"position":[[508,10]]},"43":{"position":[[1011,10]]}},"keywords":{}}],["thereof",{"_index":432,"title":{"21":{"position":[[24,9]]}},"content":{},"keywords":{}}],["thing",{"_index":492,"title":{},"content":{"23":{"position":[[796,6]]}},"keywords":{}}],["think",{"_index":893,"title":{},"content":{"53":{"position":[[563,5]]}},"keywords":{}}],["thorough",{"_index":399,"title":{},"content":{"19":{"position":[[345,8]]}},"keywords":{}}],["thoroughli",{"_index":368,"title":{},"content":{"18":{"position":[[331,10]]}},"keywords":{}}],["those",{"_index":619,"title":{},"content":{"27":{"position":[[417,5]]}},"keywords":{}}],["thousand",{"_index":793,"title":{},"content":{"43":{"position":[[639,9],[735,9]]}},"keywords":{}}],["three",{"_index":659,"title":{},"content":{"35":{"position":[[65,5]]}},"keywords":{}}],["throttl",{"_index":469,"title":{},"content":{"23":{"position":[[129,11]]},"36":{"position":[[227,10]]}},"keywords":{}}],["through",{"_index":174,"title":{},"content":{"10":{"position":[[123,7]]},"44":{"position":[[474,7]]},"58":{"position":[[1642,7],[2190,7]]}},"keywords":{}}],["thu",{"_index":686,"title":{},"content":{"36":{"position":[[499,4]]},"58":{"position":[[4568,5]]},"60":{"position":[[985,4]]}},"keywords":{}}],["tidi",{"_index":1148,"title":{},"content":{"61":{"position":[[1716,4]]}},"keywords":{}}],["time",{"_index":289,"title":{},"content":{"14":{"position":[[224,4]]},"19":{"position":[[439,4]]},"39":{"position":[[937,4]]},"43":{"position":[[835,6]]},"58":{"position":[[394,4],[863,4],[1101,4],[2448,4],[2516,6],[2681,4],[2886,4]]},"62":{"position":[[287,4]]}},"keywords":{}}],["timelin",{"_index":218,"title":{},"content":{"11":{"position":[[464,8]]}},"keywords":{}}],["timeout",{"_index":1012,"title":{},"content":{"57":{"position":[[6237,8]]},"58":{"position":[[135,9],[2660,8]]}},"keywords":{}}],["tini",{"_index":426,"title":{},"content":{"20":{"position":[[277,4]]}},"keywords":{}}],["tip",{"_index":39,"title":{},"content":{"2":{"position":[[62,3]]},"57":{"position":[[804,3],[1939,3],[3057,3],[3825,3],[4813,3],[5426,3],[6189,3]]},"58":{"position":[[4651,3]]}},"keywords":{}}],["titl",{"_index":231,"title":{},"content":{"11":{"position":[[760,6],[1261,6]]},"25":{"position":[[1039,6]]},"26":{"position":[[192,5]]},"38":{"position":[[270,5]]},"45":{"position":[[343,6]]},"47":{"position":[[365,6]]},"52":{"position":[[81,6]]},"53":{"position":[[140,6]]}},"keywords":{}}],["togeth",{"_index":227,"title":{},"content":{"11":{"position":[[648,8]]},"26":{"position":[[962,9]]}},"keywords":{}}],["tool",{"_index":336,"title":{},"content":{"16":{"position":[[962,4]]},"44":{"position":[[29,4]]},"57":{"position":[[1986,4],[3612,5]]}},"keywords":{}}],["total",{"_index":784,"title":{},"content":{"43":{"position":[[297,5],[586,5]]}},"keywords":{}}],["touch",{"_index":413,"title":{},"content":{"20":{"position":[[54,8]]}},"keywords":{}}],["toward",{"_index":922,"title":{},"content":{"57":{"position":[[820,7]]}},"keywords":{}}],["transfer",{"_index":513,"title":{},"content":{"24":{"position":[[402,12]]}},"keywords":{}}],["transform",{"_index":1126,"title":{},"content":{"61":{"position":[[178,14]]},"63":{"position":[[167,15],[1295,14]]}},"keywords":{}}],["transmit",{"_index":929,"title":{},"content":{"57":{"position":[[1043,8]]}},"keywords":{}}],["travers",{"_index":1138,"title":{},"content":{"61":{"position":[[776,9]]}},"keywords":{}}],["tri",{"_index":623,"title":{},"content":{"27":{"position":[[509,3]]}},"keywords":{}}],["trigger",{"_index":639,"title":{},"content":{"30":{"position":[[10,8]]},"45":{"position":[[618,7]]},"46":{"position":[[512,7],[702,10]]}},"keywords":{}}],["true",{"_index":934,"title":{},"content":{"57":{"position":[[1318,5],[3737,7],[4594,4],[5383,5]]},"60":{"position":[[886,5],[909,5]]}},"keywords":{}}],["truncat",{"_index":7,"title":{},"content":{"0":{"position":[[60,8]]},"26":{"position":[[553,9],[828,9],[874,9]]}},"keywords":{}}],["tune",{"_index":906,"title":{},"content":{"57":{"position":[[155,4]]}},"keywords":{}}],["turn",{"_index":411,"title":{},"content":{"20":{"position":[[23,5]]},"57":{"position":[[3970,7]]}},"keywords":{}}],["tweak",{"_index":855,"title":{},"content":{"48":{"position":[[44,6]]}},"keywords":{}}],["two",{"_index":225,"title":{},"content":{"11":{"position":[[586,3],[611,3],[1089,3]]},"63":{"position":[[221,3]]}},"keywords":{}}],["type",{"_index":181,"title":{},"content":{"10":{"position":[[219,4]]},"11":{"position":[[740,4],[987,4],[1241,4]]},"25":{"position":[[558,4],[679,4],[726,4],[812,4],[971,4],[1018,4]]},"30":{"position":[[48,5]]},"31":{"position":[[71,5]]},"45":{"position":[[148,4],[209,4],[309,4]]},"47":{"position":[[331,4]]},"51":{"position":[[121,4]]},"52":{"position":[[61,4],[261,5]]},"53":{"position":[[45,4],[106,4],[457,5],[556,6]]},"54":{"position":[[102,4]]},"55":{"position":[[79,4]]},"57":{"position":[[2608,4],[3660,6]]},"59":{"position":[[111,4],[255,5],[690,4],[935,4],[1193,4],[1446,4],[1761,4],[2132,4],[2635,4],[3055,4],[3518,4]]},"60":{"position":[[417,4],[851,4]]},"61":{"position":[[327,4],[362,4],[432,4],[494,4],[704,5],[886,4],[971,5],[1269,4],[1411,4],[1543,4]]},"62":{"position":[[108,4],[182,4],[393,4]]},"63":{"position":[[230,5],[262,4],[304,4],[347,4],[382,4],[1327,4],[1362,4]]}},"keywords":{}}],["typescript",{"_index":870,"title":{},"content":{"50":{"position":[[236,10]]}},"keywords":{}}],["typic",{"_index":168,"title":{},"content":{"10":{"position":[[15,7]]},"16":{"position":[[326,9]]},"19":{"position":[[23,9],[317,9]]},"41":{"position":[[220,9]]},"47":{"position":[[188,7]]},"57":{"position":[[866,7]]}},"keywords":{}}],["ultrici",{"_index":25,"title":{},"content":{"0":{"position":[[216,10],[395,10],[574,10],[753,10],[932,10],[1111,10],[1290,10],[1469,10],[1648,10],[1827,10],[2006,10],[2185,10],[2364,10],[2543,10],[2722,10],[2901,10]]},"1":{"position":[[90,10]]}},"keywords":{}}],["uncov",{"_index":840,"title":{},"content":{"46":{"position":[[476,8]]}},"keywords":{}}],["undeni",{"_index":499,"title":{},"content":{"24":{"position":[[95,10]]}},"keywords":{}}],["under",{"_index":255,"title":{},"content":{"12":{"position":[[228,5]]}},"keywords":{}}],["underli",{"_index":207,"title":{},"content":{"11":{"position":[[245,10]]},"16":{"position":[[1053,10]]},"39":{"position":[[211,10]]},"60":{"position":[[327,10],[574,10]]}},"keywords":{}}],["underpin",{"_index":1091,"title":{},"content":{"59":{"position":[[71,11],[295,11]]}},"keywords":{}}],["understand",{"_index":823,"title":{"48":{"position":[[0,13]]}},"content":{"44":{"position":[[513,10]]},"46":{"position":[[270,13]]},"57":{"position":[[3645,10]]},"63":{"position":[[1856,11]]}},"keywords":{}}],["unifi",{"_index":715,"title":{},"content":{"37":{"position":[[1279,7]]},"57":{"position":[[3166,7]]}},"keywords":{}}],["unintention",{"_index":966,"title":{},"content":{"57":{"position":[[3284,16]]}},"keywords":{}}],["uniqu",{"_index":533,"title":{},"content":{"24":{"position":[[829,8]]},"37":{"position":[[1098,6]]},"39":{"position":[[695,6]]},"48":{"position":[[584,6]]}},"keywords":{}}],["unit",{"_index":370,"title":{},"content":{"18":{"position":[[381,4]]}},"keywords":{}}],["unknown",{"_index":437,"title":{},"content":{"21":{"position":[[280,8]]}},"keywords":{}}],["unless",{"_index":742,"title":{},"content":{"39":{"position":[[538,6]]}},"keywords":{}}],["unlik",{"_index":345,"title":{},"content":{"17":{"position":[[146,6]]}},"keywords":{}}],["unnecessari",{"_index":392,"title":{},"content":{"19":{"position":[[209,11]]},"57":{"position":[[2185,11]]},"58":{"position":[[5042,11]]}},"keywords":{}}],["unnot",{"_index":394,"title":{},"content":{"19":{"position":[[248,9]]}},"keywords":{}}],["unoccupi",{"_index":926,"title":{},"content":{"57":{"position":[[923,11]]}},"keywords":{}}],["unoptim",{"_index":389,"title":{},"content":{"19":{"position":[[160,11]]}},"keywords":{}}],["unreli",{"_index":267,"title":{},"content":{"12":{"position":[[444,10]]}},"keywords":{}}],["unspecifi",{"_index":1083,"title":{},"content":{"58":{"position":[[5076,12]]}},"keywords":{}}],["unstandardis",{"_index":247,"title":{},"content":{"12":{"position":[[43,15]]}},"keywords":{}}],["up",{"_index":251,"title":{},"content":{"12":{"position":[[172,2],[264,2]]},"23":{"position":[[21,2],[469,2]]},"61":{"position":[[1721,2]]}},"keywords":{}}],["updat",{"_index":114,"title":{"48":{"position":[[18,7]]}},"content":{"6":{"position":[[346,6]]}},"keywords":{}}],["upgrad",{"_index":111,"title":{},"content":{"6":{"position":[[310,8],[358,7]]},"20":{"position":[[222,9]]}},"keywords":{}}],["upon",{"_index":129,"title":{},"content":{"7":{"position":[[293,4]]},"35":{"position":[[483,4]]}},"keywords":{}}],["upstream",{"_index":932,"title":{"58":{"position":[[0,10]]}},"content":{"57":{"position":[[1199,8],[5180,8]]},"58":{"position":[[4,8],[68,8],[1660,8],[3429,8],[3549,8],[3945,8],[4214,9]]}},"keywords":{}}],["upstream(...[upstreamset",{"_index":1021,"title":{},"content":{"58":{"position":[[227,35]]}},"keywords":{}}],["upstream(allowedhead",{"_index":1067,"title":{},"content":{"58":{"position":[[3660,25]]}},"keywords":{}}],["upstream(baseurl",{"_index":555,"title":{},"content":{"25":{"position":[[473,18]]},"45":{"position":[[63,18]]},"58":{"position":[[4380,18],[4729,18],[4789,18]]}},"keywords":{}}],["upstream(batch",{"_index":1087,"title":{},"content":{"58":{"position":[[5431,16]]}},"keywords":{}}],["upstream(connecttimeout",{"_index":1054,"title":{},"content":{"58":{"position":[[2535,25]]}},"keywords":{}}],["upstream(enablehttpcach",{"_index":1084,"title":{},"content":{"58":{"position":[[5128,26]]}},"keywords":{}}],["upstream(keepaliveinterv",{"_index":1036,"title":{},"content":{"58":{"position":[[951,28]]}},"keywords":{}}],["upstream(keepalivetimeout",{"_index":1038,"title":{},"content":{"58":{"position":[[1195,27]]}},"keywords":{}}],["upstream(keepalivewhileidl",{"_index":1041,"title":{},"content":{"58":{"position":[[1454,29]]}},"keywords":{}}],["upstream(poolidletimeout",{"_index":1028,"title":{},"content":{"58":{"position":[[485,26]]}},"keywords":{}}],["upstream(poolmaxidleperhost",{"_index":1033,"title":{},"content":{"58":{"position":[[711,29]]}},"keywords":{}}],["upstream(proxi",{"_index":1045,"title":{},"content":{"58":{"position":[[1850,16]]}},"keywords":{}}],["upstream(tcpkeepal",{"_index":1058,"title":{},"content":{"58":{"position":[[2978,23]]}},"keywords":{}}],["upstream(timeout",{"_index":1055,"title":{},"content":{"58":{"position":[[2750,18]]}},"keywords":{}}],["upstream(userag",{"_index":1061,"title":{},"content":{"58":{"position":[[3176,20]]}},"keywords":{}}],["upstreamset",{"_index":1022,"title":{},"content":{"58":{"position":[[310,15]]}},"keywords":{}}],["url",{"_index":553,"title":{},"content":{"25":{"position":[[440,3]]},"27":{"position":[[472,3]]},"48":{"position":[[229,3],[344,4]]},"57":{"position":[[1667,3]]},"58":{"position":[[1756,4],[1867,5],[2051,3],[4155,3],[4620,3],[4677,3]]},"59":{"position":[[589,3],[640,3],[1743,4],[3810,3],[3925,4]]}},"keywords":{}}],["us",{"_index":5,"title":{"44":{"position":[[0,5]]},"47":{"position":[[8,5]]}},"content":{"0":{"position":[[46,3]]},"2":{"position":[[66,3]]},"3":{"position":[[445,3]]},"5":{"position":[[248,3]]},"8":{"position":[[206,5]]},"10":{"position":[[484,6]]},"16":{"position":[[516,5],[955,6]]},"17":{"position":[[27,5]]},"18":{"position":[[23,5]]},"19":{"position":[[57,3]]},"21":{"position":[[330,3]]},"23":{"position":[[256,3],[778,4]]},"25":{"position":[[190,3],[840,3]]},"29":{"position":[[106,3]]},"32":{"position":[[214,3]]},"35":{"position":[[618,4]]},"37":{"position":[[766,5]]},"39":{"position":[[1025,5]]},"43":{"position":[[350,5]]},"45":{"position":[[730,5]]},"46":{"position":[[309,3]]},"48":{"position":[[557,5],[687,5]]},"50":{"position":[[114,4],[216,5]]},"51":{"position":[[65,4],[229,4]]},"52":{"position":[[221,4]]},"55":{"position":[[290,3]]},"57":{"position":[[181,3],[1780,3],[5126,4]]},"58":{"position":[[214,5],[3146,4]]},"59":{"position":[[343,4],[1059,3],[1338,4],[1659,3],[1941,4],[2043,3],[2552,4],[2914,3]]},"60":{"position":[[149,3],[230,5],[712,5],[773,6]]},"63":{"position":[[546,4],[649,4],[836,4],[1042,4],[1417,4],[1613,5]]}},"keywords":{}}],["usag",{"_index":817,"title":{},"content":{"44":{"position":[[308,6]]}},"keywords":{}}],["user",{"_index":221,"title":{"43":{"position":[[9,6]]}},"content":{"11":{"position":[[519,4],[816,4],[907,6],[992,4],[1290,5],[1296,5],[1330,4]]},"12":{"position":[[560,4]]},"13":{"position":[[16,4]]},"16":{"position":[[701,4]]},"18":{"position":[[778,4]]},"21":{"position":[[215,5]]},"24":{"position":[[67,4]]},"25":{"position":[[205,6],[229,6],[283,5],[603,5],[615,6],[622,6],[674,4],[716,5],[731,4],[807,4]]},"26":{"position":[[168,5],[868,5]]},"38":{"position":[[281,4]]},"43":{"position":[[83,4],[662,6],[700,4],[878,4]]},"45":{"position":[[214,4],[372,5],[378,4],[528,4],[672,4]]},"46":{"position":[[451,4],[571,4],[759,4]]},"47":{"position":[[394,5],[400,4]]},"48":{"position":[[243,4],[651,4],[944,4]]},"51":{"position":[[149,4],[274,4]]},"53":{"position":[[169,5],[175,4]]},"54":{"position":[[115,6],[122,7]]},"55":{"position":[[342,5]]},"57":{"position":[[2126,6]]},"58":{"position":[[3116,4]]},"59":{"position":[[139,4],[231,4],[281,4],[411,7],[533,4],[718,4],[963,4],[1140,5],[1221,4],[1493,4],[2179,4],[2349,7],[2682,4],[2821,6],[3092,4],[3287,4],[3553,5],[3559,4],[3824,4]]},"60":{"position":[[422,4],[856,4]]},"61":{"position":[[348,5],[354,5],[367,4],[953,5],[1399,5],[1416,7],[1457,5],[1566,4]]},"62":{"position":[[121,5],[127,4],[187,4]]},"63":{"position":[[238,4],[257,4],[330,4],[352,4],[394,5],[400,4],[587,4],[677,4],[902,4],[923,4],[1109,4],[1332,4],[1477,4]]}},"keywords":{}}],["user'",{"_index":238,"title":{},"content":{"11":{"position":[[930,6]]},"25":{"position":[[856,6]]},"48":{"position":[[567,6]]}},"keywords":{}}],["user(id",{"_index":879,"title":{},"content":{"51":{"position":[[134,8]]},"59":{"position":[[124,8],[703,8],[948,8],[1206,8]]}},"keywords":{}}],["user.nam",{"_index":1168,"title":{},"content":{"63":{"position":[[764,9]]}},"keywords":{}}],["userag",{"_index":1059,"title":{},"content":{"58":{"position":[[3101,10]]}},"keywords":{}}],["userid",{"_index":234,"title":{},"content":{"11":{"position":[[789,7],[852,6]]},"42":{"position":[[178,6]]},"45":{"position":[[330,7]]},"47":{"position":[[352,7]]},"48":{"position":[[267,6]]},"53":{"position":[[127,7],[390,6],[523,6],[638,6]]},"55":{"position":[[229,6],[299,6]]},"59":{"position":[[3848,6]]},"60":{"position":[[624,6]]},"63":{"position":[[339,7],[518,7],[1174,10],[1241,6],[1391,7]]}},"keywords":{}}],["userinput",{"_index":1100,"title":{},"content":{"59":{"position":[[1480,12],[2166,12],[2669,12]]}},"keywords":{}}],["usernam",{"_index":562,"title":{},"content":{"25":{"position":[[761,9]]},"45":{"position":[[244,9]]},"63":{"position":[[875,9],[950,8],[1374,9],[1553,11]]}},"keywords":{}}],["userposts(id",{"_index":1104,"title":{},"content":{"59":{"position":[[1774,13]]}},"keywords":{}}],["users(nam",{"_index":1109,"title":{},"content":{"59":{"position":[[3071,11]]}},"keywords":{}}],["users/:id/post",{"_index":547,"title":{},"content":{"25":{"position":[[240,16]]}},"keywords":{}}],["users/{{args.id",{"_index":1096,"title":{},"content":{"59":{"position":[[1173,19]]}},"keywords":{}}],["users/{{userid",{"_index":1171,"title":{},"content":{"63":{"position":[[1148,19]]}},"keywords":{}}],["users?id=1&id=2&id=3...id=10",{"_index":859,"title":{},"content":{"48":{"position":[[357,38]]},"59":{"position":[[3938,38]]}},"keywords":{}}],["util",{"_index":1013,"title":{},"content":{"57":{"position":[[6318,11]]},"58":{"position":[[4902,7]]}},"keywords":{}}],["valid",{"_index":626,"title":{},"content":{"29":{"position":[[18,9]]},"36":{"position":[[127,5]]},"37":{"position":[[158,11]]},"57":{"position":[[4258,8],[4320,10],[4774,10],[4905,10],[5134,8]]},"62":{"position":[[248,8]]}},"keywords":{}}],["valu",{"_index":851,"title":{"52":{"position":[[0,6]]}},"content":{"47":{"position":[[467,6]]},"48":{"position":[[143,6],[656,5]]},"50":{"position":[[308,6]]},"52":{"position":[[20,5]]},"53":{"position":[[242,6],[572,5]]},"57":{"position":[[1104,5],[1145,6],[2533,6],[2727,6],[2850,5],[5884,5]]},"58":{"position":[[203,6],[1352,5],[3134,5]]},"59":{"position":[[1867,6],[2577,5],[2613,7],[2757,6],[2885,5],[2959,6],[3167,6],[3226,6],[3306,5],[3626,6],[3724,6]]},"62":{"position":[[270,5],[369,5]]}},"keywords":{}}],["value.id",{"_index":884,"title":{},"content":{"52":{"position":[[209,8]]}},"keywords":{}}],["value.userid",{"_index":889,"title":{},"content":{"53":{"position":[[357,12]]}},"keywords":{}}],["var",{"_index":944,"title":{},"content":{"57":{"position":[[2207,5]]}},"keywords":{}}],["variabl",{"_index":134,"title":{},"content":{"7":{"position":[[359,8]]},"50":{"position":[[61,8]]},"54":{"position":[[35,9],[272,8]]},"57":{"position":[[2259,9],[2329,9],[2802,8],[3067,10]]},"59":{"position":[[1096,10],[2081,9],[2108,10]]}},"keywords":{}}],["variou",{"_index":635,"title":{},"content":{"29":{"position":[[210,7]]},"32":{"position":[[128,7]]},"57":{"position":[[173,7],[441,7],[2452,7]]},"58":{"position":[[45,7],[302,7]]}},"keywords":{}}],["vars.apikey}}"",{"_index":959,"title":{},"content":{"57":{"position":[[2747,24]]}},"keywords":{}}],["vastli",{"_index":211,"title":{},"content":{"11":{"position":[[335,6]]}},"keywords":{}}],["veri",{"_index":4,"title":{},"content":{"0":{"position":[[25,4]]},"19":{"position":[[281,4],[429,4]]},"21":{"position":[[475,4]]},"22":{"position":[[462,4]]},"23":{"position":[[239,4]]}},"keywords":{}}],["verifi",{"_index":94,"title":{},"content":{"5":{"position":[[177,6]]},"6":{"position":[[224,6]]},"8":{"position":[[721,6]]}},"keywords":{}}],["vero",{"_index":601,"title":{},"content":{"26":{"position":[[699,4]]}},"keywords":{}}],["version",{"_index":148,"title":{},"content":{"8":{"position":[[318,7],[739,7],[804,9]]},"22":{"position":[[229,7]]},"39":{"position":[[827,11],[854,7],[895,8],[1147,9]]}},"keywords":{}}],["via",{"_index":113,"title":{},"content":{"6":{"position":[[336,4]]},"35":{"position":[[516,3]]}},"keywords":{}}],["view",{"_index":13,"title":{},"content":{"0":{"position":[[120,5]]}},"keywords":{}}],["viz",{"_index":660,"title":{},"content":{"35":{"position":[[82,4]]}},"keywords":{}}],["volum",{"_index":804,"title":{},"content":{"43":{"position":[[959,6]]}},"keywords":{}}],["vulner",{"_index":298,"title":{},"content":{"15":{"position":[[219,10]]}},"keywords":{}}],["wait",{"_index":1025,"title":{},"content":{"58":{"position":[[440,4],[1142,4],[2489,4],[2722,4]]}},"keywords":{}}],["walk",{"_index":821,"title":{},"content":{"44":{"position":[[465,4]]}},"keywords":{}}],["want",{"_index":76,"title":{},"content":{"3":{"position":[[400,4]]},"8":{"position":[[7,4]]},"16":{"position":[[986,4]]},"53":{"position":[[672,4]]},"60":{"position":[[787,4]]},"61":{"position":[[1432,4]]}},"keywords":{}}],["way",{"_index":439,"title":{},"content":{"21":{"position":[[298,3]]},"23":{"position":[[503,3]]},"37":{"position":[[320,3]]},"53":{"position":[[375,3]]},"57":{"position":[[3246,3]]}},"keywords":{}}],["we'll",{"_index":826,"title":{},"content":{"45":{"position":[[36,5]]}},"keywords":{}}],["we'r",{"_index":772,"title":{},"content":{"41":{"position":[[9,5]]}},"keywords":{}}],["we'v",{"_index":1047,"title":{},"content":{"58":{"position":[[2029,5]]},"63":{"position":[[1411,5]]}},"keywords":{}}],["web",{"_index":570,"title":{},"content":{"26":{"position":[[15,3]]}},"keywords":{}}],["websit",{"_index":830,"title":{},"content":{"45":{"position":[[291,8]]}},"keywords":{}}],["welcom",{"_index":50,"title":{"3":{"position":[[0,7]]}},"content":{},"keywords":{}}],["welcome.md2019",{"_index":67,"title":{},"content":{"3":{"position":[[245,14]]}},"keywords":{}}],["welcome/index.md",{"_index":68,"title":{},"content":{"3":{"position":[[266,16]]}},"keywords":{}}],["well",{"_index":74,"title":{},"content":{"3":{"position":[[377,5]]},"16":{"position":[[522,4]]},"18":{"position":[[463,4]]},"57":{"position":[[3253,4]]}},"keywords":{}}],["what’",{"_index":253,"title":{},"content":{"12":{"position":[[193,6]]}},"keywords":{}}],["whenev",{"_index":962,"title":{},"content":{"57":{"position":[[2922,8]]}},"keywords":{}}],["whether",{"_index":970,"title":{},"content":{"57":{"position":[[3409,7],[4232,7]]},"58":{"position":[[1374,7]]}},"keywords":{}}],["wise",{"_index":978,"title":{},"content":{"57":{"position":[[3912,4]]}},"keywords":{}}],["within",{"_index":843,"title":{},"content":{"46":{"position":[[665,6]]},"57":{"position":[[1456,6]]},"60":{"position":[[102,6]]},"61":{"position":[[112,6]]}},"keywords":{}}],["without",{"_index":565,"title":{},"content":{"25":{"position":[[1273,7]]},"39":{"position":[[957,7]]}},"keywords":{}}],["won't",{"_index":760,"title":{},"content":{"39":{"position":[[1526,5]]},"57":{"position":[[1744,5]]},"60":{"position":[[993,5]]}},"keywords":{}}],["work",{"_index":1125,"title":{},"content":{"61":{"position":[[135,5]]}},"keywords":{}}],["world",{"_index":792,"title":{},"content":{"43":{"position":[[615,5]]}},"keywords":{}}],["worth",{"_index":375,"title":{},"content":{"18":{"position":[[645,5]]},"23":{"position":[[536,5]]}},"keywords":{}}],["write",{"_index":566,"title":{},"content":{"25":{"position":[[1291,5]]}},"keywords":{}}],["written",{"_index":344,"title":{},"content":{"17":{"position":[[132,7]]},"19":{"position":[[40,7]]},"59":{"position":[[1162,7]]}},"keywords":{}}],["x",{"_index":1070,"title":{},"content":{"58":{"position":[[3855,1]]},"59":{"position":[[2867,1]]}},"keywords":{}}],["yield",{"_index":795,"title":{},"content":{"43":{"position":[[717,5]]}},"keywords":{}}],["you'r",{"_index":942,"title":{},"content":{"57":{"position":[[2081,6]]},"59":{"position":[[855,6]]}},"keywords":{}}],["yourself",{"_index":624,"title":{},"content":{"27":{"position":[[524,9]]},"44":{"position":[[344,8]]}},"keywords":{}}]],"pipeline":["stemmer"]} \ No newline at end of file diff --git a/search-doc-1699099639045.json b/search-doc-1699099639045.json deleted file mode 100644 index e1230f8db6..0000000000 --- a/search-doc-1699099639045.json +++ /dev/null @@ -1 +0,0 @@ -{"searchDocs":[{"title":"First Blog Post","type":0,"sectionRef":"#","url":"/blog/first-blog-post/","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"MDX Blog Post","type":0,"sectionRef":"#","url":"/blog/mdx-blog-post/","content":"Blog posts support Docusaurus Markdown features, such as MDX. tip Use the power of React to create interactive blog posts. <button onClick={() => alert("button clicked!")}>Click me!</button> Click me!","keywords":"","version":null},{"title":"Long Blog Post","type":0,"sectionRef":"#","url":"/blog/long-blog-post/","content":"This is the summary of a very long blog post, Use a <!-- truncate --> comment to limit blog post size in the list view. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"Welcome","type":0,"sectionRef":"#","url":"/blog/welcome/","content":"Docusaurus blogging features are powered by the blog plugin. Simply add Markdown files (or folders) to the blog directory. Regular blog authors can be added to authors.yml. The blog post date can be extracted from filenames, such as: 2019-05-30-welcome.md2019-05-30-welcome/index.md A blog post folder can be convenient to co-locate blog post images: The blog supports tags as well! And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.","keywords":"","version":null},{"title":"Installation","type":0,"sectionRef":"#","url":"/docs/getting_started/","content":"","keywords":"","version":"Next"},{"title":"NPM","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#npm","content":"If you don't already have nodejs installed, you can find the instructions here. Install Tailcall by running the following command in your terminal: npm i -g tailcallhq/tailcall Verify that Tailcall is installed correctly by running: tc note Avoid using the --force flag during npm installations, as it may skip the installation of platform-specific builds. ","version":"Next","tagName":"h2"},{"title":"Homebrew","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#homebrew","content":"If you don't already have Homebrew installed, you can find the instructions here. Add the Tailcall repository to Homebrew by running the following command in your terminal: brew tap tailcallhq/tailcall brew install tailcall Verify that Tailcall is installed correctly by running: tc Once installation is done, upgrades can be performed via: brew update brew upgrade tailcall ","version":"Next","tagName":"h2"},{"title":"Curl","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#curl","content":"Follow the steps below to manually install the cli on your system: curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- This command fetches and executes the Tailcall installation script. The installed files are located in the ~/.tailcall directory. Upon completion of the installation, extend your PATH environment variable to include the ~/.tailcall/bin directory: export PATH=$PATH:~/.tailcall/bin ","version":"Next","tagName":"h2"},{"title":"Docker","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#docker","content":"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from here. Pull the latest Tailcall Docker image using the following command: docker pull ghcr.io/tailcallhq/tailcall/tc-server: This command fetches the latest version of the Tailcall Docker image from the Docker registry. Run the Tailcall Docker container with the following command: docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server: This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080. note Once the installation is compeleted, you should verify the if the version printed on running tc command match the actual installed versions. ","version":"Next","tagName":"h2"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/docs/getting_started/configuration/","content":"Configuration For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data. We will use the API at /users to get a list of users, and /users/:id/posts to get the posts for each user, and compose them into a single GraphQL schema. Create a file called jsonplaceholder.graphql and paste the following contents into it. # Specify a base url for all http requests schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { # Specify the http path for the users query users: [User] @http(path: "/users") } # Create a user type with the fields returned by the users api type User { id: Int! name: String! username: String! email: String! # Extend the user type with the posts field # Use the current user's id to construct the path posts: [Post] @http(path: "/users/{{value.id}}/posts") } # Create a post type with the fields returned by the posts api type Post { id: Int! title: String! body: String! } The above file is a standard .graphQL file, with a few additions such as @server and @http directives. So basically we specify the GraphQL schema and how to resolve that GraphQL schema in the same file, without having to write any code! Here is a quick overview of what the above schema does:","keywords":"","version":"Next"},{"title":"Problem Statement","type":0,"sectionRef":"#","url":"/docs/","content":"","keywords":"","version":"Next"},{"title":"Microservice Architecture","type":1,"pageTitle":"Problem Statement","url":"/docs/#microservice-architecture","content":"This is what a typical microservices architecture looks like: The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services. ","version":"Next","tagName":"h2"},{"title":"API Composition","type":1,"pageTitle":"Problem Statement","url":"/docs/#api-composition","content":"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs. info API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration. For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows: First to /posts to retrieve recent posts, with the following response: type Post { id: ID! title: String! body: String! userId: ID! # Reference to user by it's id. } Second, with the userId from the above post response, make a request to /users to retrieve the user's profile information, with the following response: type User { id: ID! name: String! email: String! } The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API. type Post { id: ID! title: String! body: String! user: User! # Reference to the complete user object } ","version":"Next","tagName":"h2"},{"title":"Composition on Clients","type":1,"pageTitle":"Problem Statement","url":"/docs/#composition-on-clients","content":"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant. info Modest hardware and flaky network conditions on the client side results in poor user-experience. ","version":"Next","tagName":"h2"},{"title":"1. Increased Complexity","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-increased-complexity","content":"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code. ","version":"Next","tagName":"h3"},{"title":"2. Reduced Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-reduced-performance","content":"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API. ","version":"Next","tagName":"h3"},{"title":"3. Increased Risk","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-increased-risk","content":"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead. ","version":"Next","tagName":"h3"},{"title":"Backend For Frontend (BFF)","type":1,"pageTitle":"Problem Statement","url":"/docs/#backend-for-frontend-bff","content":"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC. info BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience. The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer: ","version":"Next","tagName":"h2"},{"title":"1. Highly Specialized","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-highly-specialized","content":"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain. ","version":"Next","tagName":"h3"},{"title":"2. Fragile","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-fragile","content":"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions. ","version":"Next","tagName":"h3"},{"title":"3. Speculative Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-speculative-performance","content":"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes. ","version":"Next","tagName":"h3"},{"title":"4. Monolith","type":1,"pageTitle":"Problem Statement","url":"/docs/#4-monolith","content":"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure. ","version":"Next","tagName":"h3"},{"title":"5. Canary Support (Lack thereof)","type":1,"pageTitle":"Problem Statement","url":"/docs/#5-canary-support-lack-thereof","content":"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use Blue-Green deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support. ","version":"Next","tagName":"h3"},{"title":"6. Coupled Release","type":1,"pageTitle":"Problem Statement","url":"/docs/#6-coupled-release","content":"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage. ","version":"Next","tagName":"h3"},{"title":"7. Legacy Gateway","type":1,"pageTitle":"Problem Statement","url":"/docs/#7-legacy-gateway","content":"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer. info BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing. ","version":"Next","tagName":"h3"},{"title":"8. Organizational Friction","type":1,"pageTitle":"Problem Statement","url":"/docs/#8-organizational-friction","content":"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges. At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms. ","version":"Next","tagName":"h3"},{"title":"Launch","type":0,"sectionRef":"#","url":"/docs/getting_started/launch/","content":"Launch Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above. tc start ./jsonplaceholder.graphql If the command succeeds, you should see logs like the following below. 🚀 Tailcall launched at [0.0.0.0:8000] 🌍 Playground: http://0.0.0.0:8000 The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the playground URL in a new tab in your browser and try it out for yourself!","keywords":"","version":"Next"},{"title":"Tackling N + 1","type":0,"sectionRef":"#","url":"/docs/guides/n+1/","content":"","keywords":"","version":"Next"},{"title":"Scenario","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#scenario","content":"Consider we're developing a feature that involves consuming data from the JSON Placeholder API. The feature requires fetching posts and the details of the authors of these posts. Here's an illustration of how this might typically be implemented: ","version":"Next","tagName":"h2"},{"title":"Fetching Posts","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-posts","content":"First, we send a request to retrieve all posts: curl https://jsonplaceholder.typicode.com/posts The above request fetches a list of posts from the API, each of which includes a userId field indicating the author of the post. ","version":"Next","tagName":"h3"},{"title":"Fetching Users","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-users","content":"Then, for each post, we need to get the author's details. A request for a specific user might look like this: curl https://jsonplaceholder.typicode.com/users/1 If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests. The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests. info In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections. ","version":"Next","tagName":"h3"},{"title":"Using the CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#using-the-cli","content":"The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage. Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the Installation guide, which will walk you through the setup process and help you understand the key commands. ","version":"Next","tagName":"h2"},{"title":"Jsonplaceholder Example","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#jsonplaceholder-example","content":"Here is a sample .graphql file that we'll be examining: schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { posts: [Post] @http(path: "/posts") } type User { id: Int! name: String! username: String! email: String! phone: String website: String } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users/{{value.userId}}") } This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data. We will demonstrate how to identify this issue using the TailCall CLI in the next section. ","version":"Next","tagName":"h3"},{"title":"Running the TailCall CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#running-the-tailcall-cli","content":"With the check command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file: tc check ./jsonplaceholder.graphql No errors found. N + 1: 1 The N + 1: 1 line tells you that the TailCall CLI has detected one potential N+1 issue. For a deeper understanding of these issues, you can use the --n-plus-one-queries parameter: tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries No errors found. N + 1: 1 query { posts { user } } This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, query { posts { user } }, represents the minimal query that could lead to an N+1 problem. It illustrates that within the posts query, each post is triggering an additional request to fetch its associated user data. ","version":"Next","tagName":"h3"},{"title":"Solving Using Batching","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#solving-using-batching","content":"Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL. To tap into this feature, modify the @http directive on Post.user in your GraphQL schema as follows: type Post { id: Int! userId: Int! title: String! body: String! user: User @http( path: "/users" query: [{key: "id", value: "{{value.userId}}"}] groupBy: ["id"] ) } ","version":"Next","tagName":"h2"},{"title":"Understanding the Update","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#understanding-the-update","content":"The described changes introduce significant tweaks to the @http directive and incorporate the @groupBy operator: query: [{key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. groupBy: ["id"]: This parameter instructs the system to convert the list of responses into a map internally, using the user's id as the unique key. In essence, it allows the system to differentiate each user value in the response list. By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience. ","version":"Next","tagName":"h3"},{"title":"Test","type":0,"sectionRef":"#","url":"/docs/getting_started/test/","content":"Test Let's try the following query, to get all the users and the title of each post of each user. query { users { id name posts { title } } } You should see output like the following: { "data": { "users": [ { "id": 1, "name": "Leanne Graham", "posts": [ { "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit" }, ... ] }, { "id": 2, "name": "Ervin Howell", "posts": [ { "title": "et ea vero quia laudantium autem" }, { "title": "in quibusdam tempore odit est dolorem" }, ... ] } ] } } You can now add additional fields, and compose more queries together!","keywords":"","version":"Next"},{"title":"CLI","type":0,"sectionRef":"#","url":"/docs/intro/cli/","content":"","keywords":"","version":"Next"},{"title":"check","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#check","content":"The check command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the check command, follow this format: tc check [options] <file>... The check command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec. ","version":"Next","tagName":"h2"},{"title":"--n-plus-one-queries","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--n-plus-one-queries","content":"This flag triggers the detection of N+1 issues. Type: BooleanDefault: false tc check --n-plus-one-queries <file>... ","version":"Next","tagName":"h3"},{"title":"--schema","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--schema","content":"This option enables the display of the schema of the composition spec. Type: BooleanDefault: false tc check --schema <file1> <file2> ... <fileN> The check command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h3"},{"title":"start","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#start","content":"The start command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as composition specs. To start the server, use the following command: tc start <file1> <file2> ... <fileN> The start command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc start ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h2"},{"title":"init","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#init","content":"The init command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path. tc init <file_path> This command prompts for additional file creation and configuration, creating a .tailcallrc.graphql file by default. ","version":"Next","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/docs/intro/architecture/","content":"","keywords":"","version":"Next"},{"title":"High-Level Architecture","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#high-level-architecture","content":"The clients and the services remain the same with an addition of three components viz. The Composition Spec (also known as the “Blueprint”), Schema Registry, and the Tailcall Proxy. The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling. ","version":"Next","tagName":"h2"},{"title":"Composition Specification (Blueprint)","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#composition-specification-blueprint","content":"The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system. ","version":"Next","tagName":"h2"},{"title":"Publish","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#publish","content":"Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps. We run all the validations and check if there are any invalid states in the composition specification provided by the developer. We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem. info The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made. We recommend standard best practices for API composition so that developers can integrate it on day one. We also apply many optimizations eg: including constant folding, inlining, data-loader, etc. Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections) As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration. ","version":"Next","tagName":"h2"},{"title":"Client Consumption","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#client-consumption","content":"When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry. curl 'https://cloud.tailcall.com/graphql/d5fb012' \\ --data-raw '{"query": "{ posts { title body user { name email } } } }"}' ","version":"Next","tagName":"h2"},{"title":"Hash Code","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#hash-code","content":"The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax. This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following: Versioning: Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.Canary Releases: This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.Immutability: Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.Breaking Changes: As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity. Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our discord channel, we would love to hear from you. ","version":"Next","tagName":"h2"},{"title":"Context","type":0,"sectionRef":"#","url":"/docs/intro/context/","content":"","keywords":"","version":"Next"},{"title":"Context in Tailcall","type":1,"pageTitle":"Context","url":"/docs/intro/context/#context-in-tailcall","content":"In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every Operator. It is used to store and access data that needs to be shared between operators. The Context can be described using the following Typescript interface: interface Context { args: Map<string, Json> value: Json parent: Context env: Map<string, string> headers: Map<string, string> } ","version":"Next","tagName":"h2"},{"title":"args","type":1,"pageTitle":"Context","url":"/docs/intro/context/#args","content":"These are the arguments passed to the current query. They can be used to access the arguments of the query. For example, type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } In this example, args.id is used to access the id argument passed to the user query. ","version":"Next","tagName":"h3"},{"title":"value","type":1,"pageTitle":"Context","url":"/docs/intro/context/#value","content":"This represents the value of the current node. For instance, type Post { id: ID! title: String! body: String! comments: [Comment] @http(path: "/posts/{{value.id}}/comments") } In the example above, value.id is used to access the id field of the Post type. ","version":"Next","tagName":"h3"},{"title":"parent","type":1,"pageTitle":"Context","url":"/docs/intro/context/#parent","content":"This denotes the context of the parent node. type Query { posts: [Post] @http(path: "/posts") } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], matchPath: ["id"], matchKey: "userId") } In this case, value.userId is a way to get the userId information from the "parent" context of the Post type. Essentially, it's extracting a list or "array" of userId fields from multiple Post types. Think of value as a container that holds the results of a post query, with userId being the specific key you want to fetch from that container. ","version":"Next","tagName":"h3"},{"title":"env","type":1,"pageTitle":"Context","url":"/docs/intro/context/#env","content":"This represents global environment variables for the server. This is set once when the server starts. type Query { users: [User]! @http(baseUrl: "{{env.API_ENDPOINT}}", path: "/users") } In the above example, env.API_ENDPOINT refers to an environment variable called API_ENDPOINT, which should be defined in your server settings. ","version":"Next","tagName":"h3"},{"title":"headers","type":1,"pageTitle":"Context","url":"/docs/intro/context/#headers","content":"These are the headers of the request that was received by the Tailcall server. type Query { commentsForUser: [Comment] @http(path: "/users/{{headers.userId}}/comments") } Here, headers.userId refers to a header called userId that should be present in the context. The server can use this userId to fetch comments for the specified user. ","version":"Next","tagName":"h3"},{"title":"Operators","type":0,"sectionRef":"#","url":"/docs/intro/operators/","content":"","keywords":"","version":"Next"},{"title":"@server","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#server","content":"The @server directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases. schema @server(...[ServerSettings]...){ query: Query mutation: Mutation } In this templated structure, replace ...[ServerSettings]... with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary. The various ServerSettings options and their details are explained below. port This refers to the port on which the Tailcall will be running. If not specified, the default port is 8000. schema @server(port: 8090) { query: Query mutation: Mutation } In this example, the port is set to 8090. This means that the Tailcall will be accessible at http://localhost:8090. tip Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied. enableCacheControlHeader The enableCacheControlHeader configuration, when activated, instructs Tailcall to transmit Cache-Control headers in its responses. The max-age value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to false meaning no header is set. schema @server(enableCacheControlHeader: true) { query: Query mutation: Mutation } enableGraphiql This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. GraphiQL is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as /graphiql, you grant access to this IDE at that specific URL endpoint, like http://localhost:8000/graphiql. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup. schema @server(port: 8000, enableGraphiql: "/graphiql") { query: Query mutation: Mutation } tip While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure. vars This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require. schema @server(vars: {key: "apiKey", value: "YOUR_API_KEY_HERE"}) { query: Query mutation: Mutation } type Query { externalData: Data @http(path: "/external-api/data", headers: [{key: "Authorization", value: "Bearer {{vars.apiKey}}"}]) } In the provided example, a variable named apiKey is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the externalData endpoint, it includes the apiKey in the Authorization header of the HTTP request. tip Local variables, like apiKey, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible. enableIntrospection This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (true). schema @server(enableIntrospection: false) { query: Query mutation: Mutation } tip Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures. enableQueryValidation The enableQueryValidation configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to enhance server performance at the cost of such checks. This defaults to true if not specified. schema @server(enableQueryValidation: false) { query: Query mutation: Mutation } In the example above, enableQueryValidation is set to false, bypassing the validation phase for incoming queries. tip This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance. enableResponseValidation Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for enableResponseValidation is false. schema @server(enableResponseValidation: true) { query: Query mutation: Mutation } tip Disabling this setting will offer major performance improvements, but at the potential expense of data. globalResponseTimeout The globalResponseTimeout configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns. If not explicitly defined, there might be a system-specific or default value that applies. schema @server(globalResponseTimeout: 5000) { query: Query mutation: Mutation } In this given example, the globalResponseTimeout is set to 5000 milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server. tip It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources. ","version":"Next","tagName":"h2"},{"title":"@upstream","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#upstream","content":"The upstream directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used. schema @upstream(...[UpstreamSetting]...){ query: Query mutation: Mutation } The various UpstreamSetting options and their details are explained below. poolIdleTimeout The time in seconds that the connection pool will wait before closing idle connections. schema @upstream(poolIdleTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } poolMaxIdlePerHost The maximum number of idle connections that will be maintained per host. schema @upstream(poolMaxIdlePerHost: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveInterval The time in seconds between each keep-alive message sent to maintain the connection. schema @upstream(keepAliveInterval: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveTimeout The time in seconds that the connection will wait for a keep-alive message before closing. schema @upstream(keepAliveTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveWhileIdle A boolean value that determines whether keep-alive messages should be sent while the connection is idle. schema @upstream(keepAliveWhileIdle: false, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } proxy The proxy setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies. schema @upstream(proxy: {url: "http://localhost:3000"}, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In the provided example, we've set the proxy's url to "http://localhost:3000". This configuration ensures that all requests aimed at the designated baseURL are first channeled through this proxy. To illustrate, if the baseURL is "http://jsonplaceholder.typicode.com", any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination. connectTimeout The time in seconds that the connection will wait for a response before timing out. schema @upstream(connectTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } timeout The maximum time in seconds that the connection will wait for a response. schema @upstream(timeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } tcpKeepAlive The time in seconds between each TCP keep-alive message sent to maintain the connection. schema @upstream(tcpKeepAlive: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } userAgent The User-Agent header value to be used in HTTP requests. schema @upstream(userAgent: "Tailcall/1.0", baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } allowedHeaders The allowedHeaders configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. If allowedHeaders isn't specified, no incoming headers will be forwarded to the upstream services, which can provide an added layer of security but might restrict essential data flow. schema @upstream(allowedHeaders: ["Authorization", "X-Api-Key"]) { query: Query mutation: Mutation } In the example above, the allowedHeaders is set to allow only Authorization and X-Api-Key headers. This means that requests containing these headers will forward them to upstream services, while all others will be ignored. It ensures that only expected headers are communicated to dependent services, emphasizing security and consistency. baseURL This refers to the default base URL for your APIs. If it's not explicitly mentioned in the @upstream operator, then each @http operator must specify its own baseURL. If neither @server nor @http provides a baseURL, it results in a compilation error. schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In this representation, the baseURL is set as http://jsonplaceholder.typicode.com. Thus, all API calls made by @http will prepend this URL to their respective paths. tip Ensure that your base URL remains free from specific path segments. GOOD: @upstream(baseURL: http://jsonplaceholder.typicode.com)BAD: @upstream(baseURL: http://jsonplaceholder.typicode.com/api) enableHttpCache When activated, directs Tailcall to utilize HTTP caching mechanisms. These mechanisms, in accordance with the HTTP Caching RFC, are designed to improve performance by reducing unnecessary data fetches. If left unspecified, this feature defaults to false. schema @upstream(enableHttpCache: false) { query: Query mutation: Mutation } batch An object that specifies the batch settings, including maxSize (the maximum size of the batch), delay (the delay in milliseconds between each batch), and headers (an array of HTTP headers to be included in the batch). schema @upstream(batch: {maxSize: 1000, delay: 10, headers: ["X-Server", "Authorization"]}) { query: Query mutation: Mutation } ","version":"Next","tagName":"h2"},{"title":"@http","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#http","content":"This @http operator serves as an indication of a field or node that is underpinned by a REST API. For Example: type Query { user(id: ID!): User @http(path: "/users") } In this example, the @http operator is added to the user field of the Query type. This means that the user field is underpinned by a REST API. The path argument is used to specify the path of the REST API. In this case, the path is /users. This means that the GraphQL server will make a GET request to https://jsonplaceholder.typicode.com/users when the user field is queried. baseURL This refers to the base URL of the API. If not specified, the default base URL is the one specified in the @server operator. type Query { user(id: ID!): User @http(path: "/users", baseURL: "https://jsonplaceholder.typicode.com") } path This refers to the API endpoint you're going to call. For instance https://jsonplaceholder.typicode.com/users`. type Query { user(id: ID!): User @http(path: "/users") } If your API endpoint contains dynamic segments, you can use Mustache templates to substitute variables. For example, to fetch a specific user, the path can be written as /users/{{args.id}}. type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } method This refers to the HTTP method of the API call. Commonly used methods include GET, POST, PUT, DELETE, etc. If not specified, the default method is GET. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users") } query This represents the query parameters of your API call. You can pass it as a static object or use Mustache template for dynamic parameters. These parameters will be added to the URL. For example: type Query { userPosts(id: ID!): [Post] @http(path: "/posts", query: [{key: "userId", value: "{{args.id}}"}]) } body The body of the API call. It's used for methods like POST or PUT that send data to the server. You can pass it as a static object or use a Mustache template to substitute variables from the GraphQL variables. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users", body: "{{args.input}}") } In the example above, the createUser mutation sends a POST request to /users, with the input object converted to JSON and included in the request body. headers The headers parameter allows you to customize the headers of the HTTP request made by the @http operator. It is used by specifying a key-value map of header names and their values. For instance: type Mutation { createUser(input: UserInput!): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}]) } In this example, a request to /users will include an additional HTTP header X-Server with the value Tailcall. You can make use of mustache templates to provide dynamic values for headers, derived from the arguments or context provided in the request. For example: type Mutation { users(name: String): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}, {key: "User-Name", value: "{{args.name}}"}]) } In this scenario, the User-Name header's value will dynamically adjust according to the name argument passed in the request. groupBy The groupBy parameter groups multiple data requests into a single call. For more details please refer out n + 1 guide. type Post { id: Int! name: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], groupBy: ["id"]) } query: {key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. ","version":"Next","tagName":"h2"},{"title":"@modify","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#modify","content":"The @modify operator in GraphQL provides the flexibility to alter the attributes of a field or a node within your GraphQL schema. Here's how you can use this operator: name You can rename a field or a node in your GraphQL schema using the name argument in the @modify operator. This can be helpful when the field name in your underlying data source doesn't match the desired field name in your schema. For instance: type User { id: Int! @modify(name: "userId") } @modify(name: "userId") tells GraphQL that although the field is referred to as idin the underlying data source, it should be presented as userId in your schema. omit You can exclude a field or a node from your GraphQL schema using the omit argument in the @modify operator. This can be useful if you want to keep certain data hidden from the client. For instance: type User { id: Int! @modify(omit: true) } @modify(omit: true) tells GraphQL that the id field should not be included in the schema, thus it won't be accessible to the client. ","version":"Next","tagName":"h2"},{"title":"@inline","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#inline","content":"The @inline operator simplifies data structures and fetch processes by 'inlining' or flattening a field or node within your schema. It works by modifying the schema and the data transformation process, essentially streamlining how nested data is accessed and presented. For instance, consider a schema: schema { query: Query } type Post { id: Int! user: User! } type User { id: Int! name: String! email: String! address: Address! } type Address { street: String! city: String! state: String! } type Query { postUserStreet(id: Int): Post! @inline(path: ["user", "address", "street"]) } The @inline operator, in this case, is applied to the postUserStreet field of the Query type. It includes a path argument, indicating the chain of fields to be traversed from Post to the field to be inlined. Post application, the schema becomes: schema { query: Query } type Query { postUserStreet(id: Int): String } As seen, the Post, User, and Address types are eliminated from the schema. The postUserStreet now directly returns a String representing the address street, thereby simplifying the client-side data fetch process. @inline operator also take cares of nullablity of the fields. If any of the fields in the path is nullable, the resulting type will be nullable. Additionally, @inline supports indexing, meaning you can specify the array index to be inlined. If a field users is of type [User], and you want to inline the first user, you can specify the path as ["users","0","name"]. type Post { firstUser: User @inline(path: ["users", "0", "name"]) @http(path: "/users") } In conclusion, the @inline operator helps tidy up your schema and streamline data fetching by reducing query depth, promoting better performance and simplicity. ","version":"Next","tagName":"h2"},{"title":"@const","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#const","content":"The @const operators allows us to embed a constant response for the schema. For eg: schema { query: Query } type Query { user: User @const(data: {name: "John", age: 12}) } type User { name: String age: Int } The const operator will also validate the provided value at compile time to make sure that it matches the of the field. If the schema of the provided value doesn't match the type of the field, a descriptive error message is show on the console. ","version":"Next","tagName":"h2"},{"title":"Operator Composition","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#operator-composition","content":"This example illustrates the concept of composition in GraphQL, which allows you to combine multiple operations (known as "operators") to build more complex transformations of data. The given schema is defining two data types - User and Post. The User type has fields id and name, and the Post type initially has fields user and userId. type User { id: Int name: String } type Post { user: User @inline(path: ["name"]) @modify(name: "userName") @http(path: "/users/{{userId}}") userId: Int! } However, it uses a series of operators to modify the user field. The @inline(path: ["name"]) operator is used to drill down into the User object, specifically targeting the name field. This is equivalent to fetching the User.name property. The @modify(name: "userName") operator is used to name the inlined name field to userName. So, instead of a user field that is a User object, we now have a userName field that is a String. The @http(path: "/users/{{userId}}") operator is used to instruct the resolver to make an HTTP request to fetch the user data from a specified path (i.e., /users/{{userId}}), where {{userId}} is a placeholder that would be replaced with the actual userId when making the request. The schema after this transformation looks like this: type User { id: Int name: String } type Post { userName: String userId: Int! } So, we've used composition of operators to take a complex object (the User inside the Post), extract a specific part of it (name), name that part (userName), and then instruct GraphQL how to fetch the data using an HTTP request. info It is important to note that the order of the operators doesn't matter. The resulting schema will always be the same. This is a powerful mechanism that allows you to make your GraphQL schema more precise, easier to understand, and more suitable for the specific needs of your application. ","version":"Next","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/search-doc-1699100490517.json b/search-doc-1699100490517.json new file mode 100644 index 0000000000..e3c87354a0 --- /dev/null +++ b/search-doc-1699100490517.json @@ -0,0 +1 @@ +{"searchDocs":[{"title":"Long Blog Post","type":0,"sectionRef":"#","url":"/blog/long-blog-post/","content":"This is the summary of a very long blog post, Use a <!-- truncate --> comment to limit blog post size in the list view. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"First Blog Post","type":0,"sectionRef":"#","url":"/blog/first-blog-post/","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"MDX Blog Post","type":0,"sectionRef":"#","url":"/blog/mdx-blog-post/","content":"Blog posts support Docusaurus Markdown features, such as MDX. tip Use the power of React to create interactive blog posts. <button onClick={() => alert("button clicked!")}>Click me!</button> Click me!","keywords":"","version":null},{"title":"Welcome","type":0,"sectionRef":"#","url":"/blog/welcome/","content":"Docusaurus blogging features are powered by the blog plugin. Simply add Markdown files (or folders) to the blog directory. Regular blog authors can be added to authors.yml. The blog post date can be extracted from filenames, such as: 2019-05-30-welcome.md2019-05-30-welcome/index.md A blog post folder can be convenient to co-locate blog post images: The blog supports tags as well! And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.","keywords":"","version":null},{"title":"Installation","type":0,"sectionRef":"#","url":"/docs/getting_started/","content":"","keywords":"","version":"Next"},{"title":"NPM","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#npm","content":"If you don't already have nodejs installed, you can find the instructions here. Install Tailcall by running the following command in your terminal: npm i -g tailcallhq/tailcall Verify that Tailcall is installed correctly by running: tc note Do not use the --force flag during npm installations, as it ignores installing platform-specific builds. ","version":"Next","tagName":"h2"},{"title":"Homebrew","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#homebrew","content":"If you don't already have Homebrew installed, you can find the instructions here. Add the Tailcall repository to Homebrew by running the following command in your terminal: brew tap tailcallhq/tailcall brew install tailcall Verify that Tailcall is installed correctly by running: tc Once installation is done, upgrades can be performed via: brew update brew upgrade tailcall ","version":"Next","tagName":"h2"},{"title":"Curl","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#curl","content":"Follow the steps below to manually install the cli on your system: curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- This command fetches and executes the Tailcall installation script. The installed files are located in the ~/.tailcall directory. Upon completion of the installation, extend your PATH environment variable to include the ~/.tailcall/bin directory: export PATH=$PATH:~/.tailcall/bin ","version":"Next","tagName":"h2"},{"title":"Docker","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#docker","content":"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from here. Pull the latest Tailcall Docker image using the following command: docker pull ghcr.io/tailcallhq/tailcall/tc-server: This command fetches the latest version of the Tailcall Docker image from the Docker registry. Run the Tailcall Docker container with the following command: docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server: This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080. note Once the installation is compeleted, you should verify the if the version printed on running tc command match the actual installed versions. ","version":"Next","tagName":"h2"},{"title":"Problem Statement","type":0,"sectionRef":"#","url":"/docs/","content":"","keywords":"","version":"Next"},{"title":"Microservice Architecture","type":1,"pageTitle":"Problem Statement","url":"/docs/#microservice-architecture","content":"This is what a typical microservices architecture looks like: The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services. ","version":"Next","tagName":"h2"},{"title":"API Composition","type":1,"pageTitle":"Problem Statement","url":"/docs/#api-composition","content":"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs. info API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration. For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows: First to /posts to retrieve recent posts, with the following response: type Post { id: ID! title: String! body: String! userId: ID! # Reference to user by it's id. } Second, with the userId from the above post response, make a request to /users to retrieve the user's profile information, with the following response: type User { id: ID! name: String! email: String! } The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API. type Post { id: ID! title: String! body: String! user: User! # Reference to the complete user object } ","version":"Next","tagName":"h2"},{"title":"Composition on Clients","type":1,"pageTitle":"Problem Statement","url":"/docs/#composition-on-clients","content":"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant. info Modest hardware and flaky network conditions on the client side results in poor user-experience. ","version":"Next","tagName":"h2"},{"title":"1. Increased Complexity","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-increased-complexity","content":"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code. ","version":"Next","tagName":"h3"},{"title":"2. Reduced Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-reduced-performance","content":"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API. ","version":"Next","tagName":"h3"},{"title":"3. Increased Risk","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-increased-risk","content":"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead. ","version":"Next","tagName":"h3"},{"title":"Backend For Frontend (BFF)","type":1,"pageTitle":"Problem Statement","url":"/docs/#backend-for-frontend-bff","content":"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC. info BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience. The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer: ","version":"Next","tagName":"h2"},{"title":"1. Highly Specialized","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-highly-specialized","content":"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain. ","version":"Next","tagName":"h3"},{"title":"2. Fragile","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-fragile","content":"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions. ","version":"Next","tagName":"h3"},{"title":"3. Speculative Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-speculative-performance","content":"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes. ","version":"Next","tagName":"h3"},{"title":"4. Monolith","type":1,"pageTitle":"Problem Statement","url":"/docs/#4-monolith","content":"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure. ","version":"Next","tagName":"h3"},{"title":"5. Canary Support (Lack thereof)","type":1,"pageTitle":"Problem Statement","url":"/docs/#5-canary-support-lack-thereof","content":"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use Blue-Green deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support. ","version":"Next","tagName":"h3"},{"title":"6. Coupled Release","type":1,"pageTitle":"Problem Statement","url":"/docs/#6-coupled-release","content":"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage. ","version":"Next","tagName":"h3"},{"title":"7. Legacy Gateway","type":1,"pageTitle":"Problem Statement","url":"/docs/#7-legacy-gateway","content":"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer. info BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing. ","version":"Next","tagName":"h3"},{"title":"8. Organizational Friction","type":1,"pageTitle":"Problem Statement","url":"/docs/#8-organizational-friction","content":"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges. At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms. ","version":"Next","tagName":"h3"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/docs/getting_started/configuration/","content":"Configuration For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data. We will use the API at /users to get a list of users, and /users/:id/posts to get the posts for each user, and compose them into a single GraphQL schema. Create a file called jsonplaceholder.graphql and paste the following contents into it. # Specify a base url for all http requests schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { # Specify the http path for the users query users: [User] @http(path: "/users") } # Create a user type with the fields returned by the users api type User { id: Int! name: String! username: String! email: String! # Extend the user type with the posts field # Use the current user's id to construct the path posts: [Post] @http(path: "/users/{{value.id}}/posts") } # Create a post type with the fields returned by the posts api type Post { id: Int! title: String! body: String! } The above file is a standard .graphQL file, with a few additions such as @server and @http directives. So basically we specify the GraphQL schema and how to resolve that GraphQL schema in the same file, without having to write any code! Here is a quick overview of what the above schema does:","keywords":"","version":"Next"},{"title":"Execute","type":0,"sectionRef":"#","url":"/docs/getting_started/execute/","content":"Execute Open a web browser and go to http://localhost:8000. This should load the GraphiQL interface. In the query editor of GraphiQL, enter the following query query { users { id name posts { title } } } After running the query in GraphiQL, expect to see a JSON response structured like this: { "data": { "users": [ { "id": 1, "name": "Leanne Graham", "posts": [ { "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit" } // Additional posts truncated for brevity ] }, { "id": 2, "name": "Ervin Howell", "posts": [ { "title": "et ea vero quia laudantium autem" }, { "title": "in quibusdam tempore odit est dolorem" } // Additional posts truncated for brevity ] } // Additional users truncated for brevity ] } } You can now add additional fields, and compose more queries together!","keywords":"","version":"Next"},{"title":"Launch","type":0,"sectionRef":"#","url":"/docs/getting_started/launch/","content":"Launch Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above. tc start ./jsonplaceholder.graphql If the command succeeds, you should see logs like the following below. 🚀 Tailcall launched at [0.0.0.0:8000] 🌍 Playground: http://0.0.0.0:8000 The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the playground URL in a new tab in your browser and try it out for yourself!","keywords":"","version":"Next"},{"title":"CLI","type":0,"sectionRef":"#","url":"/docs/intro/cli/","content":"","keywords":"","version":"Next"},{"title":"check","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#check","content":"The check command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the check command, follow this format: tc check [options] <file>... The check command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec. ","version":"Next","tagName":"h2"},{"title":"--n-plus-one-queries","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--n-plus-one-queries","content":"This flag triggers the detection of N+1 issues. Type: BooleanDefault: false tc check --n-plus-one-queries <file>... ","version":"Next","tagName":"h3"},{"title":"--schema","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--schema","content":"This option enables the display of the schema of the composition spec. Type: BooleanDefault: false tc check --schema <file1> <file2> ... <fileN> The check command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h3"},{"title":"start","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#start","content":"The start command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as composition specs. To start the server, use the following command: tc start <file1> <file2> ... <fileN> The start command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc start ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h2"},{"title":"init","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#init","content":"The init command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path. tc init <file_path> This command prompts for additional file creation and configuration, creating a .tailcallrc.graphql file by default. ","version":"Next","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/docs/intro/architecture/","content":"","keywords":"","version":"Next"},{"title":"High-Level Architecture","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#high-level-architecture","content":"The clients and the services remain the same with an addition of three components viz. The Composition Spec (also known as the “Blueprint”), Schema Registry, and the Tailcall Proxy. The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling. ","version":"Next","tagName":"h2"},{"title":"Composition Specification (Blueprint)","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#composition-specification-blueprint","content":"The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system. ","version":"Next","tagName":"h2"},{"title":"Publish","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#publish","content":"Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps. We run all the validations and check if there are any invalid states in the composition specification provided by the developer. We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem. info The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made. We recommend standard best practices for API composition so that developers can integrate it on day one. We also apply many optimizations eg: including constant folding, inlining, data-loader, etc. Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections) As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration. ","version":"Next","tagName":"h2"},{"title":"Client Consumption","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#client-consumption","content":"When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry. curl 'https://cloud.tailcall.com/graphql/d5fb012' \\ --data-raw '{"query": "{ posts { title body user { name email } } } }"}' ","version":"Next","tagName":"h2"},{"title":"Hash Code","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#hash-code","content":"The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax. This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following: Versioning: Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.Canary Releases: This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.Immutability: Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.Breaking Changes: As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity. Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our discord channel, we would love to hear from you. ","version":"Next","tagName":"h2"},{"title":"Tackling N + 1","type":0,"sectionRef":"#","url":"/docs/guides/n+1/","content":"","keywords":"","version":"Next"},{"title":"Scenario","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#scenario","content":"Consider we're developing a feature that involves consuming data from the JSON Placeholder API. The feature requires fetching posts and the details of the authors of these posts. Here's an illustration of how this might typically be implemented: ","version":"Next","tagName":"h2"},{"title":"Fetching Posts","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-posts","content":"First, we send a request to retrieve all posts: curl https://jsonplaceholder.typicode.com/posts The above request fetches a list of posts from the API, each of which includes a userId field indicating the author of the post. ","version":"Next","tagName":"h3"},{"title":"Fetching Users","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-users","content":"Then, for each post, we need to get the author's details. A request for a specific user might look like this: curl https://jsonplaceholder.typicode.com/users/1 If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests. The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests. info In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections. ","version":"Next","tagName":"h3"},{"title":"Using the CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#using-the-cli","content":"The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage. Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the Installation guide, which will walk you through the setup process and help you understand the key commands. ","version":"Next","tagName":"h2"},{"title":"Jsonplaceholder Example","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#jsonplaceholder-example","content":"Here is a sample .graphql file that we'll be examining: schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { posts: [Post] @http(path: "/posts") } type User { id: Int! name: String! username: String! email: String! phone: String website: String } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users/{{value.userId}}") } This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data. We will demonstrate how to identify this issue using the TailCall CLI in the next section. ","version":"Next","tagName":"h3"},{"title":"Running the TailCall CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#running-the-tailcall-cli","content":"With the check command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file: tc check ./jsonplaceholder.graphql No errors found. N + 1: 1 The N + 1: 1 line tells you that the TailCall CLI has detected one potential N+1 issue. For a deeper understanding of these issues, you can use the --n-plus-one-queries parameter: tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries No errors found. N + 1: 1 query { posts { user } } This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, query { posts { user } }, represents the minimal query that could lead to an N+1 problem. It illustrates that within the posts query, each post is triggering an additional request to fetch its associated user data. ","version":"Next","tagName":"h3"},{"title":"Solving Using Batching","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#solving-using-batching","content":"Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL. To tap into this feature, modify the @http directive on Post.user in your GraphQL schema as follows: type Post { id: Int! userId: Int! title: String! body: String! user: User @http( path: "/users" query: [{key: "id", value: "{{value.userId}}"}] groupBy: ["id"] ) } ","version":"Next","tagName":"h2"},{"title":"Understanding the Update","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#understanding-the-update","content":"The described changes introduce significant tweaks to the @http directive and incorporate the @groupBy operator: query: [{key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. groupBy: ["id"]: This parameter instructs the system to convert the list of responses into a map internally, using the user's id as the unique key. In essence, it allows the system to differentiate each user value in the response list. By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience. ","version":"Next","tagName":"h3"},{"title":"Context","type":0,"sectionRef":"#","url":"/docs/intro/context/","content":"","keywords":"","version":"Next"},{"title":"Context in Tailcall","type":1,"pageTitle":"Context","url":"/docs/intro/context/#context-in-tailcall","content":"In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every Operator. It is used to store and access data that needs to be shared between operators. The Context can be described using the following Typescript interface: interface Context { args: Map<string, Json> value: Json parent: Context env: Map<string, string> headers: Map<string, string> } ","version":"Next","tagName":"h2"},{"title":"args","type":1,"pageTitle":"Context","url":"/docs/intro/context/#args","content":"These are the arguments passed to the current query. They can be used to access the arguments of the query. For example, type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } In this example, args.id is used to access the id argument passed to the user query. ","version":"Next","tagName":"h3"},{"title":"value","type":1,"pageTitle":"Context","url":"/docs/intro/context/#value","content":"This represents the value of the current node. For instance, type Post { id: ID! title: String! body: String! comments: [Comment] @http(path: "/posts/{{value.id}}/comments") } In the example above, value.id is used to access the id field of the Post type. ","version":"Next","tagName":"h3"},{"title":"parent","type":1,"pageTitle":"Context","url":"/docs/intro/context/#parent","content":"This denotes the context of the parent node. type Query { posts: [Post] @http(path: "/posts") } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], matchPath: ["id"], matchKey: "userId") } In this case, value.userId is a way to get the userId information from the "parent" context of the Post type. Essentially, it's extracting a list or "array" of userId fields from multiple Post types. Think of value as a container that holds the results of a post query, with userId being the specific key you want to fetch from that container. ","version":"Next","tagName":"h3"},{"title":"env","type":1,"pageTitle":"Context","url":"/docs/intro/context/#env","content":"This represents global environment variables for the server. This is set once when the server starts. type Query { users: [User]! @http(baseUrl: "{{env.API_ENDPOINT}}", path: "/users") } In the above example, env.API_ENDPOINT refers to an environment variable called API_ENDPOINT, which should be defined in your server settings. ","version":"Next","tagName":"h3"},{"title":"headers","type":1,"pageTitle":"Context","url":"/docs/intro/context/#headers","content":"These are the headers of the request that was received by the Tailcall server. type Query { commentsForUser: [Comment] @http(path: "/users/{{headers.userId}}/comments") } Here, headers.userId refers to a header called userId that should be present in the context. The server can use this userId to fetch comments for the specified user. ","version":"Next","tagName":"h3"},{"title":"Operators","type":0,"sectionRef":"#","url":"/docs/intro/operators/","content":"","keywords":"","version":"Next"},{"title":"@server","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#server","content":"The @server directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases. schema @server(...[ServerSettings]...){ query: Query mutation: Mutation } In this templated structure, replace ...[ServerSettings]... with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary. The various ServerSettings options and their details are explained below. port This refers to the port on which the Tailcall will be running. If not specified, the default port is 8000. schema @server(port: 8090) { query: Query mutation: Mutation } In this example, the port is set to 8090. This means that the Tailcall will be accessible at http://localhost:8090. tip Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied. enableCacheControlHeader The enableCacheControlHeader configuration, when activated, instructs Tailcall to transmit Cache-Control headers in its responses. The max-age value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to false meaning no header is set. schema @server(enableCacheControlHeader: true) { query: Query mutation: Mutation } enableGraphiql This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. GraphiQL is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as /graphiql, you grant access to this IDE at that specific URL endpoint, like http://localhost:8000/graphiql. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup. schema @server(port: 8000, enableGraphiql: "/graphiql") { query: Query mutation: Mutation } tip While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure. vars This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require. schema @server(vars: {key: "apiKey", value: "YOUR_API_KEY_HERE"}) { query: Query mutation: Mutation } type Query { externalData: Data @http(path: "/external-api/data", headers: [{key: "Authorization", value: "Bearer {{vars.apiKey}}"}]) } In the provided example, a variable named apiKey is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the externalData endpoint, it includes the apiKey in the Authorization header of the HTTP request. tip Local variables, like apiKey, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible. enableIntrospection This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (true). schema @server(enableIntrospection: false) { query: Query mutation: Mutation } tip Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures. enableQueryValidation The enableQueryValidation configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to enhance server performance at the cost of such checks. This defaults to true if not specified. schema @server(enableQueryValidation: false) { query: Query mutation: Mutation } In the example above, enableQueryValidation is set to false, bypassing the validation phase for incoming queries. tip This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance. enableResponseValidation Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for enableResponseValidation is false. schema @server(enableResponseValidation: true) { query: Query mutation: Mutation } tip Disabling this setting will offer major performance improvements, but at the potential expense of data. globalResponseTimeout The globalResponseTimeout configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns. If not explicitly defined, there might be a system-specific or default value that applies. schema @server(globalResponseTimeout: 5000) { query: Query mutation: Mutation } In this given example, the globalResponseTimeout is set to 5000 milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server. tip It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources. ","version":"Next","tagName":"h2"},{"title":"@upstream","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#upstream","content":"The upstream directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used. schema @upstream(...[UpstreamSetting]...){ query: Query mutation: Mutation } The various UpstreamSetting options and their details are explained below. poolIdleTimeout The time in seconds that the connection pool will wait before closing idle connections. schema @upstream(poolIdleTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } poolMaxIdlePerHost The maximum number of idle connections that will be maintained per host. schema @upstream(poolMaxIdlePerHost: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveInterval The time in seconds between each keep-alive message sent to maintain the connection. schema @upstream(keepAliveInterval: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveTimeout The time in seconds that the connection will wait for a keep-alive message before closing. schema @upstream(keepAliveTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveWhileIdle A boolean value that determines whether keep-alive messages should be sent while the connection is idle. schema @upstream(keepAliveWhileIdle: false, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } proxy The proxy setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies. schema @upstream(proxy: {url: "http://localhost:3000"}, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In the provided example, we've set the proxy's url to "http://localhost:3000". This configuration ensures that all requests aimed at the designated baseURL are first channeled through this proxy. To illustrate, if the baseURL is "http://jsonplaceholder.typicode.com", any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination. connectTimeout The time in seconds that the connection will wait for a response before timing out. schema @upstream(connectTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } timeout The maximum time in seconds that the connection will wait for a response. schema @upstream(timeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } tcpKeepAlive The time in seconds between each TCP keep-alive message sent to maintain the connection. schema @upstream(tcpKeepAlive: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } userAgent The User-Agent header value to be used in HTTP requests. schema @upstream(userAgent: "Tailcall/1.0", baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } allowedHeaders The allowedHeaders configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. If allowedHeaders isn't specified, no incoming headers will be forwarded to the upstream services, which can provide an added layer of security but might restrict essential data flow. schema @upstream(allowedHeaders: ["Authorization", "X-Api-Key"]) { query: Query mutation: Mutation } In the example above, the allowedHeaders is set to allow only Authorization and X-Api-Key headers. This means that requests containing these headers will forward them to upstream services, while all others will be ignored. It ensures that only expected headers are communicated to dependent services, emphasizing security and consistency. baseURL This refers to the default base URL for your APIs. If it's not explicitly mentioned in the @upstream operator, then each @http operator must specify its own baseURL. If neither @server nor @http provides a baseURL, it results in a compilation error. schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In this representation, the baseURL is set as http://jsonplaceholder.typicode.com. Thus, all API calls made by @http will prepend this URL to their respective paths. tip Ensure that your base URL remains free from specific path segments. GOOD: @upstream(baseURL: http://jsonplaceholder.typicode.com)BAD: @upstream(baseURL: http://jsonplaceholder.typicode.com/api) enableHttpCache When activated, directs Tailcall to utilize HTTP caching mechanisms. These mechanisms, in accordance with the HTTP Caching RFC, are designed to improve performance by reducing unnecessary data fetches. If left unspecified, this feature defaults to false. schema @upstream(enableHttpCache: false) { query: Query mutation: Mutation } batch An object that specifies the batch settings, including maxSize (the maximum size of the batch), delay (the delay in milliseconds between each batch), and headers (an array of HTTP headers to be included in the batch). schema @upstream(batch: {maxSize: 1000, delay: 10, headers: ["X-Server", "Authorization"]}) { query: Query mutation: Mutation } ","version":"Next","tagName":"h2"},{"title":"@http","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#http","content":"This @http operator serves as an indication of a field or node that is underpinned by a REST API. For Example: type Query { user(id: ID!): User @http(path: "/users") } In this example, the @http operator is added to the user field of the Query type. This means that the user field is underpinned by a REST API. The path argument is used to specify the path of the REST API. In this case, the path is /users. This means that the GraphQL server will make a GET request to https://jsonplaceholder.typicode.com/users when the user field is queried. baseURL This refers to the base URL of the API. If not specified, the default base URL is the one specified in the @server operator. type Query { user(id: ID!): User @http(path: "/users", baseURL: "https://jsonplaceholder.typicode.com") } path This refers to the API endpoint you're going to call. For instance https://jsonplaceholder.typicode.com/users`. type Query { user(id: ID!): User @http(path: "/users") } If your API endpoint contains dynamic segments, you can use Mustache templates to substitute variables. For example, to fetch a specific user, the path can be written as /users/{{args.id}}. type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } method This refers to the HTTP method of the API call. Commonly used methods include GET, POST, PUT, DELETE, etc. If not specified, the default method is GET. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users") } query This represents the query parameters of your API call. You can pass it as a static object or use Mustache template for dynamic parameters. These parameters will be added to the URL. For example: type Query { userPosts(id: ID!): [Post] @http(path: "/posts", query: [{key: "userId", value: "{{args.id}}"}]) } body The body of the API call. It's used for methods like POST or PUT that send data to the server. You can pass it as a static object or use a Mustache template to substitute variables from the GraphQL variables. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users", body: "{{args.input}}") } In the example above, the createUser mutation sends a POST request to /users, with the input object converted to JSON and included in the request body. headers The headers parameter allows you to customize the headers of the HTTP request made by the @http operator. It is used by specifying a key-value map of header names and their values. For instance: type Mutation { createUser(input: UserInput!): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}]) } In this example, a request to /users will include an additional HTTP header X-Server with the value Tailcall. You can make use of mustache templates to provide dynamic values for headers, derived from the arguments or context provided in the request. For example: type Mutation { users(name: String): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}, {key: "User-Name", value: "{{args.name}}"}]) } In this scenario, the User-Name header's value will dynamically adjust according to the name argument passed in the request. groupBy The groupBy parameter groups multiple data requests into a single call. For more details please refer out n + 1 guide. type Post { id: Int! name: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], groupBy: ["id"]) } query: {key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. ","version":"Next","tagName":"h2"},{"title":"@modify","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#modify","content":"The @modify operator in GraphQL provides the flexibility to alter the attributes of a field or a node within your GraphQL schema. Here's how you can use this operator: name You can rename a field or a node in your GraphQL schema using the name argument in the @modify operator. This can be helpful when the field name in your underlying data source doesn't match the desired field name in your schema. For instance: type User { id: Int! @modify(name: "userId") } @modify(name: "userId") tells GraphQL that although the field is referred to as idin the underlying data source, it should be presented as userId in your schema. omit You can exclude a field or a node from your GraphQL schema using the omit argument in the @modify operator. This can be useful if you want to keep certain data hidden from the client. For instance: type User { id: Int! @modify(omit: true) } @modify(omit: true) tells GraphQL that the id field should not be included in the schema, thus it won't be accessible to the client. ","version":"Next","tagName":"h2"},{"title":"@inline","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#inline","content":"The @inline operator simplifies data structures and fetch processes by 'inlining' or flattening a field or node within your schema. It works by modifying the schema and the data transformation process, essentially streamlining how nested data is accessed and presented. For instance, consider a schema: schema { query: Query } type Post { id: Int! user: User! } type User { id: Int! name: String! email: String! address: Address! } type Address { street: String! city: String! state: String! } type Query { postUserStreet(id: Int): Post! @inline(path: ["user", "address", "street"]) } The @inline operator, in this case, is applied to the postUserStreet field of the Query type. It includes a path argument, indicating the chain of fields to be traversed from Post to the field to be inlined. Post application, the schema becomes: schema { query: Query } type Query { postUserStreet(id: Int): String } As seen, the Post, User, and Address types are eliminated from the schema. The postUserStreet now directly returns a String representing the address street, thereby simplifying the client-side data fetch process. @inline operator also take cares of nullablity of the fields. If any of the fields in the path is nullable, the resulting type will be nullable. Additionally, @inline supports indexing, meaning you can specify the array index to be inlined. If a field users is of type [User], and you want to inline the first user, you can specify the path as ["users","0","name"]. type Post { firstUser: User @inline(path: ["users", "0", "name"]) @http(path: "/users") } In conclusion, the @inline operator helps tidy up your schema and streamline data fetching by reducing query depth, promoting better performance and simplicity. ","version":"Next","tagName":"h2"},{"title":"@const","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#const","content":"The @const operators allows us to embed a constant response for the schema. For eg: schema { query: Query } type Query { user: User @const(data: {name: "John", age: 12}) } type User { name: String age: Int } The const operator will also validate the provided value at compile time to make sure that it matches the of the field. If the schema of the provided value doesn't match the type of the field, a descriptive error message is show on the console. ","version":"Next","tagName":"h2"},{"title":"Operator Composition","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#operator-composition","content":"This example illustrates the concept of composition in GraphQL, which allows you to combine multiple operations (known as "operators") to build more complex transformations of data. The given schema is defining two data types - User and Post. The User type has fields id and name, and the Post type initially has fields user and userId. type User { id: Int name: String } type Post { user: User @inline(path: ["name"]) @modify(name: "userName") @http(path: "/users/{{userId}}") userId: Int! } However, it uses a series of operators to modify the user field. The @inline(path: ["name"]) operator is used to drill down into the User object, specifically targeting the name field. This is equivalent to fetching the User.name property. The @modify(name: "userName") operator is used to name the inlined name field to userName. So, instead of a user field that is a User object, we now have a userName field that is a String. The @http(path: "/users/{{userId}}") operator is used to instruct the resolver to make an HTTP request to fetch the user data from a specified path (i.e., /users/{{userId}}), where {{userId}} is a placeholder that would be replaced with the actual userId when making the request. The schema after this transformation looks like this: type User { id: Int name: String } type Post { userName: String userId: Int! } So, we've used composition of operators to take a complex object (the User inside the Post), extract a specific part of it (name), name that part (userName), and then instruct GraphQL how to fetch the data using an HTTP request. info It is important to note that the order of the operators doesn't matter. The resulting schema will always be the same. This is a powerful mechanism that allows you to make your GraphQL schema more precise, easier to understand, and more suitable for the specific needs of your application. ","version":"Next","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file diff --git a/search-doc.json b/search-doc.json index e1230f8db6..e3c87354a0 100644 --- a/search-doc.json +++ b/search-doc.json @@ -1 +1 @@ -{"searchDocs":[{"title":"First Blog Post","type":0,"sectionRef":"#","url":"/blog/first-blog-post/","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"MDX Blog Post","type":0,"sectionRef":"#","url":"/blog/mdx-blog-post/","content":"Blog posts support Docusaurus Markdown features, such as MDX. tip Use the power of React to create interactive blog posts. <button onClick={() => alert("button clicked!")}>Click me!</button> Click me!","keywords":"","version":null},{"title":"Long Blog Post","type":0,"sectionRef":"#","url":"/blog/long-blog-post/","content":"This is the summary of a very long blog post, Use a <!-- truncate --> comment to limit blog post size in the list view. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"Welcome","type":0,"sectionRef":"#","url":"/blog/welcome/","content":"Docusaurus blogging features are powered by the blog plugin. Simply add Markdown files (or folders) to the blog directory. Regular blog authors can be added to authors.yml. The blog post date can be extracted from filenames, such as: 2019-05-30-welcome.md2019-05-30-welcome/index.md A blog post folder can be convenient to co-locate blog post images: The blog supports tags as well! And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.","keywords":"","version":null},{"title":"Installation","type":0,"sectionRef":"#","url":"/docs/getting_started/","content":"","keywords":"","version":"Next"},{"title":"NPM","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#npm","content":"If you don't already have nodejs installed, you can find the instructions here. Install Tailcall by running the following command in your terminal: npm i -g tailcallhq/tailcall Verify that Tailcall is installed correctly by running: tc note Avoid using the --force flag during npm installations, as it may skip the installation of platform-specific builds. ","version":"Next","tagName":"h2"},{"title":"Homebrew","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#homebrew","content":"If you don't already have Homebrew installed, you can find the instructions here. Add the Tailcall repository to Homebrew by running the following command in your terminal: brew tap tailcallhq/tailcall brew install tailcall Verify that Tailcall is installed correctly by running: tc Once installation is done, upgrades can be performed via: brew update brew upgrade tailcall ","version":"Next","tagName":"h2"},{"title":"Curl","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#curl","content":"Follow the steps below to manually install the cli on your system: curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- This command fetches and executes the Tailcall installation script. The installed files are located in the ~/.tailcall directory. Upon completion of the installation, extend your PATH environment variable to include the ~/.tailcall/bin directory: export PATH=$PATH:~/.tailcall/bin ","version":"Next","tagName":"h2"},{"title":"Docker","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#docker","content":"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from here. Pull the latest Tailcall Docker image using the following command: docker pull ghcr.io/tailcallhq/tailcall/tc-server: This command fetches the latest version of the Tailcall Docker image from the Docker registry. Run the Tailcall Docker container with the following command: docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server: This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080. note Once the installation is compeleted, you should verify the if the version printed on running tc command match the actual installed versions. ","version":"Next","tagName":"h2"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/docs/getting_started/configuration/","content":"Configuration For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data. We will use the API at /users to get a list of users, and /users/:id/posts to get the posts for each user, and compose them into a single GraphQL schema. Create a file called jsonplaceholder.graphql and paste the following contents into it. # Specify a base url for all http requests schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { # Specify the http path for the users query users: [User] @http(path: "/users") } # Create a user type with the fields returned by the users api type User { id: Int! name: String! username: String! email: String! # Extend the user type with the posts field # Use the current user's id to construct the path posts: [Post] @http(path: "/users/{{value.id}}/posts") } # Create a post type with the fields returned by the posts api type Post { id: Int! title: String! body: String! } The above file is a standard .graphQL file, with a few additions such as @server and @http directives. So basically we specify the GraphQL schema and how to resolve that GraphQL schema in the same file, without having to write any code! Here is a quick overview of what the above schema does:","keywords":"","version":"Next"},{"title":"Problem Statement","type":0,"sectionRef":"#","url":"/docs/","content":"","keywords":"","version":"Next"},{"title":"Microservice Architecture","type":1,"pageTitle":"Problem Statement","url":"/docs/#microservice-architecture","content":"This is what a typical microservices architecture looks like: The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services. ","version":"Next","tagName":"h2"},{"title":"API Composition","type":1,"pageTitle":"Problem Statement","url":"/docs/#api-composition","content":"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs. info API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration. For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows: First to /posts to retrieve recent posts, with the following response: type Post { id: ID! title: String! body: String! userId: ID! # Reference to user by it's id. } Second, with the userId from the above post response, make a request to /users to retrieve the user's profile information, with the following response: type User { id: ID! name: String! email: String! } The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API. type Post { id: ID! title: String! body: String! user: User! # Reference to the complete user object } ","version":"Next","tagName":"h2"},{"title":"Composition on Clients","type":1,"pageTitle":"Problem Statement","url":"/docs/#composition-on-clients","content":"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant. info Modest hardware and flaky network conditions on the client side results in poor user-experience. ","version":"Next","tagName":"h2"},{"title":"1. Increased Complexity","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-increased-complexity","content":"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code. ","version":"Next","tagName":"h3"},{"title":"2. Reduced Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-reduced-performance","content":"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API. ","version":"Next","tagName":"h3"},{"title":"3. Increased Risk","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-increased-risk","content":"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead. ","version":"Next","tagName":"h3"},{"title":"Backend For Frontend (BFF)","type":1,"pageTitle":"Problem Statement","url":"/docs/#backend-for-frontend-bff","content":"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC. info BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience. The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer: ","version":"Next","tagName":"h2"},{"title":"1. Highly Specialized","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-highly-specialized","content":"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain. ","version":"Next","tagName":"h3"},{"title":"2. Fragile","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-fragile","content":"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions. ","version":"Next","tagName":"h3"},{"title":"3. Speculative Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-speculative-performance","content":"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes. ","version":"Next","tagName":"h3"},{"title":"4. Monolith","type":1,"pageTitle":"Problem Statement","url":"/docs/#4-monolith","content":"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure. ","version":"Next","tagName":"h3"},{"title":"5. Canary Support (Lack thereof)","type":1,"pageTitle":"Problem Statement","url":"/docs/#5-canary-support-lack-thereof","content":"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use Blue-Green deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support. ","version":"Next","tagName":"h3"},{"title":"6. Coupled Release","type":1,"pageTitle":"Problem Statement","url":"/docs/#6-coupled-release","content":"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage. ","version":"Next","tagName":"h3"},{"title":"7. Legacy Gateway","type":1,"pageTitle":"Problem Statement","url":"/docs/#7-legacy-gateway","content":"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer. info BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing. ","version":"Next","tagName":"h3"},{"title":"8. Organizational Friction","type":1,"pageTitle":"Problem Statement","url":"/docs/#8-organizational-friction","content":"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges. At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms. ","version":"Next","tagName":"h3"},{"title":"Launch","type":0,"sectionRef":"#","url":"/docs/getting_started/launch/","content":"Launch Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above. tc start ./jsonplaceholder.graphql If the command succeeds, you should see logs like the following below. 🚀 Tailcall launched at [0.0.0.0:8000] 🌍 Playground: http://0.0.0.0:8000 The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the playground URL in a new tab in your browser and try it out for yourself!","keywords":"","version":"Next"},{"title":"Tackling N + 1","type":0,"sectionRef":"#","url":"/docs/guides/n+1/","content":"","keywords":"","version":"Next"},{"title":"Scenario","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#scenario","content":"Consider we're developing a feature that involves consuming data from the JSON Placeholder API. The feature requires fetching posts and the details of the authors of these posts. Here's an illustration of how this might typically be implemented: ","version":"Next","tagName":"h2"},{"title":"Fetching Posts","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-posts","content":"First, we send a request to retrieve all posts: curl https://jsonplaceholder.typicode.com/posts The above request fetches a list of posts from the API, each of which includes a userId field indicating the author of the post. ","version":"Next","tagName":"h3"},{"title":"Fetching Users","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-users","content":"Then, for each post, we need to get the author's details. A request for a specific user might look like this: curl https://jsonplaceholder.typicode.com/users/1 If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests. The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests. info In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections. ","version":"Next","tagName":"h3"},{"title":"Using the CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#using-the-cli","content":"The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage. Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the Installation guide, which will walk you through the setup process and help you understand the key commands. ","version":"Next","tagName":"h2"},{"title":"Jsonplaceholder Example","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#jsonplaceholder-example","content":"Here is a sample .graphql file that we'll be examining: schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { posts: [Post] @http(path: "/posts") } type User { id: Int! name: String! username: String! email: String! phone: String website: String } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users/{{value.userId}}") } This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data. We will demonstrate how to identify this issue using the TailCall CLI in the next section. ","version":"Next","tagName":"h3"},{"title":"Running the TailCall CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#running-the-tailcall-cli","content":"With the check command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file: tc check ./jsonplaceholder.graphql No errors found. N + 1: 1 The N + 1: 1 line tells you that the TailCall CLI has detected one potential N+1 issue. For a deeper understanding of these issues, you can use the --n-plus-one-queries parameter: tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries No errors found. N + 1: 1 query { posts { user } } This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, query { posts { user } }, represents the minimal query that could lead to an N+1 problem. It illustrates that within the posts query, each post is triggering an additional request to fetch its associated user data. ","version":"Next","tagName":"h3"},{"title":"Solving Using Batching","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#solving-using-batching","content":"Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL. To tap into this feature, modify the @http directive on Post.user in your GraphQL schema as follows: type Post { id: Int! userId: Int! title: String! body: String! user: User @http( path: "/users" query: [{key: "id", value: "{{value.userId}}"}] groupBy: ["id"] ) } ","version":"Next","tagName":"h2"},{"title":"Understanding the Update","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#understanding-the-update","content":"The described changes introduce significant tweaks to the @http directive and incorporate the @groupBy operator: query: [{key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. groupBy: ["id"]: This parameter instructs the system to convert the list of responses into a map internally, using the user's id as the unique key. In essence, it allows the system to differentiate each user value in the response list. By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience. ","version":"Next","tagName":"h3"},{"title":"Test","type":0,"sectionRef":"#","url":"/docs/getting_started/test/","content":"Test Let's try the following query, to get all the users and the title of each post of each user. query { users { id name posts { title } } } You should see output like the following: { "data": { "users": [ { "id": 1, "name": "Leanne Graham", "posts": [ { "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit" }, ... ] }, { "id": 2, "name": "Ervin Howell", "posts": [ { "title": "et ea vero quia laudantium autem" }, { "title": "in quibusdam tempore odit est dolorem" }, ... ] } ] } } You can now add additional fields, and compose more queries together!","keywords":"","version":"Next"},{"title":"CLI","type":0,"sectionRef":"#","url":"/docs/intro/cli/","content":"","keywords":"","version":"Next"},{"title":"check","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#check","content":"The check command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the check command, follow this format: tc check [options] <file>... The check command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec. ","version":"Next","tagName":"h2"},{"title":"--n-plus-one-queries","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--n-plus-one-queries","content":"This flag triggers the detection of N+1 issues. Type: BooleanDefault: false tc check --n-plus-one-queries <file>... ","version":"Next","tagName":"h3"},{"title":"--schema","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--schema","content":"This option enables the display of the schema of the composition spec. Type: BooleanDefault: false tc check --schema <file1> <file2> ... <fileN> The check command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h3"},{"title":"start","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#start","content":"The start command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as composition specs. To start the server, use the following command: tc start <file1> <file2> ... <fileN> The start command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc start ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h2"},{"title":"init","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#init","content":"The init command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path. tc init <file_path> This command prompts for additional file creation and configuration, creating a .tailcallrc.graphql file by default. ","version":"Next","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/docs/intro/architecture/","content":"","keywords":"","version":"Next"},{"title":"High-Level Architecture","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#high-level-architecture","content":"The clients and the services remain the same with an addition of three components viz. The Composition Spec (also known as the “Blueprint”), Schema Registry, and the Tailcall Proxy. The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling. ","version":"Next","tagName":"h2"},{"title":"Composition Specification (Blueprint)","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#composition-specification-blueprint","content":"The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system. ","version":"Next","tagName":"h2"},{"title":"Publish","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#publish","content":"Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps. We run all the validations and check if there are any invalid states in the composition specification provided by the developer. We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem. info The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made. We recommend standard best practices for API composition so that developers can integrate it on day one. We also apply many optimizations eg: including constant folding, inlining, data-loader, etc. Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections) As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration. ","version":"Next","tagName":"h2"},{"title":"Client Consumption","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#client-consumption","content":"When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry. curl 'https://cloud.tailcall.com/graphql/d5fb012' \\ --data-raw '{"query": "{ posts { title body user { name email } } } }"}' ","version":"Next","tagName":"h2"},{"title":"Hash Code","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#hash-code","content":"The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax. This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following: Versioning: Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.Canary Releases: This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.Immutability: Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.Breaking Changes: As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity. Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our discord channel, we would love to hear from you. ","version":"Next","tagName":"h2"},{"title":"Context","type":0,"sectionRef":"#","url":"/docs/intro/context/","content":"","keywords":"","version":"Next"},{"title":"Context in Tailcall","type":1,"pageTitle":"Context","url":"/docs/intro/context/#context-in-tailcall","content":"In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every Operator. It is used to store and access data that needs to be shared between operators. The Context can be described using the following Typescript interface: interface Context { args: Map<string, Json> value: Json parent: Context env: Map<string, string> headers: Map<string, string> } ","version":"Next","tagName":"h2"},{"title":"args","type":1,"pageTitle":"Context","url":"/docs/intro/context/#args","content":"These are the arguments passed to the current query. They can be used to access the arguments of the query. For example, type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } In this example, args.id is used to access the id argument passed to the user query. ","version":"Next","tagName":"h3"},{"title":"value","type":1,"pageTitle":"Context","url":"/docs/intro/context/#value","content":"This represents the value of the current node. For instance, type Post { id: ID! title: String! body: String! comments: [Comment] @http(path: "/posts/{{value.id}}/comments") } In the example above, value.id is used to access the id field of the Post type. ","version":"Next","tagName":"h3"},{"title":"parent","type":1,"pageTitle":"Context","url":"/docs/intro/context/#parent","content":"This denotes the context of the parent node. type Query { posts: [Post] @http(path: "/posts") } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], matchPath: ["id"], matchKey: "userId") } In this case, value.userId is a way to get the userId information from the "parent" context of the Post type. Essentially, it's extracting a list or "array" of userId fields from multiple Post types. Think of value as a container that holds the results of a post query, with userId being the specific key you want to fetch from that container. ","version":"Next","tagName":"h3"},{"title":"env","type":1,"pageTitle":"Context","url":"/docs/intro/context/#env","content":"This represents global environment variables for the server. This is set once when the server starts. type Query { users: [User]! @http(baseUrl: "{{env.API_ENDPOINT}}", path: "/users") } In the above example, env.API_ENDPOINT refers to an environment variable called API_ENDPOINT, which should be defined in your server settings. ","version":"Next","tagName":"h3"},{"title":"headers","type":1,"pageTitle":"Context","url":"/docs/intro/context/#headers","content":"These are the headers of the request that was received by the Tailcall server. type Query { commentsForUser: [Comment] @http(path: "/users/{{headers.userId}}/comments") } Here, headers.userId refers to a header called userId that should be present in the context. The server can use this userId to fetch comments for the specified user. ","version":"Next","tagName":"h3"},{"title":"Operators","type":0,"sectionRef":"#","url":"/docs/intro/operators/","content":"","keywords":"","version":"Next"},{"title":"@server","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#server","content":"The @server directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases. schema @server(...[ServerSettings]...){ query: Query mutation: Mutation } In this templated structure, replace ...[ServerSettings]... with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary. The various ServerSettings options and their details are explained below. port This refers to the port on which the Tailcall will be running. If not specified, the default port is 8000. schema @server(port: 8090) { query: Query mutation: Mutation } In this example, the port is set to 8090. This means that the Tailcall will be accessible at http://localhost:8090. tip Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied. enableCacheControlHeader The enableCacheControlHeader configuration, when activated, instructs Tailcall to transmit Cache-Control headers in its responses. The max-age value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to false meaning no header is set. schema @server(enableCacheControlHeader: true) { query: Query mutation: Mutation } enableGraphiql This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. GraphiQL is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as /graphiql, you grant access to this IDE at that specific URL endpoint, like http://localhost:8000/graphiql. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup. schema @server(port: 8000, enableGraphiql: "/graphiql") { query: Query mutation: Mutation } tip While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure. vars This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require. schema @server(vars: {key: "apiKey", value: "YOUR_API_KEY_HERE"}) { query: Query mutation: Mutation } type Query { externalData: Data @http(path: "/external-api/data", headers: [{key: "Authorization", value: "Bearer {{vars.apiKey}}"}]) } In the provided example, a variable named apiKey is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the externalData endpoint, it includes the apiKey in the Authorization header of the HTTP request. tip Local variables, like apiKey, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible. enableIntrospection This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (true). schema @server(enableIntrospection: false) { query: Query mutation: Mutation } tip Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures. enableQueryValidation The enableQueryValidation configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to enhance server performance at the cost of such checks. This defaults to true if not specified. schema @server(enableQueryValidation: false) { query: Query mutation: Mutation } In the example above, enableQueryValidation is set to false, bypassing the validation phase for incoming queries. tip This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance. enableResponseValidation Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for enableResponseValidation is false. schema @server(enableResponseValidation: true) { query: Query mutation: Mutation } tip Disabling this setting will offer major performance improvements, but at the potential expense of data. globalResponseTimeout The globalResponseTimeout configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns. If not explicitly defined, there might be a system-specific or default value that applies. schema @server(globalResponseTimeout: 5000) { query: Query mutation: Mutation } In this given example, the globalResponseTimeout is set to 5000 milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server. tip It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources. ","version":"Next","tagName":"h2"},{"title":"@upstream","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#upstream","content":"The upstream directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used. schema @upstream(...[UpstreamSetting]...){ query: Query mutation: Mutation } The various UpstreamSetting options and their details are explained below. poolIdleTimeout The time in seconds that the connection pool will wait before closing idle connections. schema @upstream(poolIdleTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } poolMaxIdlePerHost The maximum number of idle connections that will be maintained per host. schema @upstream(poolMaxIdlePerHost: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveInterval The time in seconds between each keep-alive message sent to maintain the connection. schema @upstream(keepAliveInterval: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveTimeout The time in seconds that the connection will wait for a keep-alive message before closing. schema @upstream(keepAliveTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveWhileIdle A boolean value that determines whether keep-alive messages should be sent while the connection is idle. schema @upstream(keepAliveWhileIdle: false, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } proxy The proxy setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies. schema @upstream(proxy: {url: "http://localhost:3000"}, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In the provided example, we've set the proxy's url to "http://localhost:3000". This configuration ensures that all requests aimed at the designated baseURL are first channeled through this proxy. To illustrate, if the baseURL is "http://jsonplaceholder.typicode.com", any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination. connectTimeout The time in seconds that the connection will wait for a response before timing out. schema @upstream(connectTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } timeout The maximum time in seconds that the connection will wait for a response. schema @upstream(timeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } tcpKeepAlive The time in seconds between each TCP keep-alive message sent to maintain the connection. schema @upstream(tcpKeepAlive: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } userAgent The User-Agent header value to be used in HTTP requests. schema @upstream(userAgent: "Tailcall/1.0", baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } allowedHeaders The allowedHeaders configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. If allowedHeaders isn't specified, no incoming headers will be forwarded to the upstream services, which can provide an added layer of security but might restrict essential data flow. schema @upstream(allowedHeaders: ["Authorization", "X-Api-Key"]) { query: Query mutation: Mutation } In the example above, the allowedHeaders is set to allow only Authorization and X-Api-Key headers. This means that requests containing these headers will forward them to upstream services, while all others will be ignored. It ensures that only expected headers are communicated to dependent services, emphasizing security and consistency. baseURL This refers to the default base URL for your APIs. If it's not explicitly mentioned in the @upstream operator, then each @http operator must specify its own baseURL. If neither @server nor @http provides a baseURL, it results in a compilation error. schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In this representation, the baseURL is set as http://jsonplaceholder.typicode.com. Thus, all API calls made by @http will prepend this URL to their respective paths. tip Ensure that your base URL remains free from specific path segments. GOOD: @upstream(baseURL: http://jsonplaceholder.typicode.com)BAD: @upstream(baseURL: http://jsonplaceholder.typicode.com/api) enableHttpCache When activated, directs Tailcall to utilize HTTP caching mechanisms. These mechanisms, in accordance with the HTTP Caching RFC, are designed to improve performance by reducing unnecessary data fetches. If left unspecified, this feature defaults to false. schema @upstream(enableHttpCache: false) { query: Query mutation: Mutation } batch An object that specifies the batch settings, including maxSize (the maximum size of the batch), delay (the delay in milliseconds between each batch), and headers (an array of HTTP headers to be included in the batch). schema @upstream(batch: {maxSize: 1000, delay: 10, headers: ["X-Server", "Authorization"]}) { query: Query mutation: Mutation } ","version":"Next","tagName":"h2"},{"title":"@http","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#http","content":"This @http operator serves as an indication of a field or node that is underpinned by a REST API. For Example: type Query { user(id: ID!): User @http(path: "/users") } In this example, the @http operator is added to the user field of the Query type. This means that the user field is underpinned by a REST API. The path argument is used to specify the path of the REST API. In this case, the path is /users. This means that the GraphQL server will make a GET request to https://jsonplaceholder.typicode.com/users when the user field is queried. baseURL This refers to the base URL of the API. If not specified, the default base URL is the one specified in the @server operator. type Query { user(id: ID!): User @http(path: "/users", baseURL: "https://jsonplaceholder.typicode.com") } path This refers to the API endpoint you're going to call. For instance https://jsonplaceholder.typicode.com/users`. type Query { user(id: ID!): User @http(path: "/users") } If your API endpoint contains dynamic segments, you can use Mustache templates to substitute variables. For example, to fetch a specific user, the path can be written as /users/{{args.id}}. type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } method This refers to the HTTP method of the API call. Commonly used methods include GET, POST, PUT, DELETE, etc. If not specified, the default method is GET. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users") } query This represents the query parameters of your API call. You can pass it as a static object or use Mustache template for dynamic parameters. These parameters will be added to the URL. For example: type Query { userPosts(id: ID!): [Post] @http(path: "/posts", query: [{key: "userId", value: "{{args.id}}"}]) } body The body of the API call. It's used for methods like POST or PUT that send data to the server. You can pass it as a static object or use a Mustache template to substitute variables from the GraphQL variables. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users", body: "{{args.input}}") } In the example above, the createUser mutation sends a POST request to /users, with the input object converted to JSON and included in the request body. headers The headers parameter allows you to customize the headers of the HTTP request made by the @http operator. It is used by specifying a key-value map of header names and their values. For instance: type Mutation { createUser(input: UserInput!): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}]) } In this example, a request to /users will include an additional HTTP header X-Server with the value Tailcall. You can make use of mustache templates to provide dynamic values for headers, derived from the arguments or context provided in the request. For example: type Mutation { users(name: String): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}, {key: "User-Name", value: "{{args.name}}"}]) } In this scenario, the User-Name header's value will dynamically adjust according to the name argument passed in the request. groupBy The groupBy parameter groups multiple data requests into a single call. For more details please refer out n + 1 guide. type Post { id: Int! name: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], groupBy: ["id"]) } query: {key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. ","version":"Next","tagName":"h2"},{"title":"@modify","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#modify","content":"The @modify operator in GraphQL provides the flexibility to alter the attributes of a field or a node within your GraphQL schema. Here's how you can use this operator: name You can rename a field or a node in your GraphQL schema using the name argument in the @modify operator. This can be helpful when the field name in your underlying data source doesn't match the desired field name in your schema. For instance: type User { id: Int! @modify(name: "userId") } @modify(name: "userId") tells GraphQL that although the field is referred to as idin the underlying data source, it should be presented as userId in your schema. omit You can exclude a field or a node from your GraphQL schema using the omit argument in the @modify operator. This can be useful if you want to keep certain data hidden from the client. For instance: type User { id: Int! @modify(omit: true) } @modify(omit: true) tells GraphQL that the id field should not be included in the schema, thus it won't be accessible to the client. ","version":"Next","tagName":"h2"},{"title":"@inline","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#inline","content":"The @inline operator simplifies data structures and fetch processes by 'inlining' or flattening a field or node within your schema. It works by modifying the schema and the data transformation process, essentially streamlining how nested data is accessed and presented. For instance, consider a schema: schema { query: Query } type Post { id: Int! user: User! } type User { id: Int! name: String! email: String! address: Address! } type Address { street: String! city: String! state: String! } type Query { postUserStreet(id: Int): Post! @inline(path: ["user", "address", "street"]) } The @inline operator, in this case, is applied to the postUserStreet field of the Query type. It includes a path argument, indicating the chain of fields to be traversed from Post to the field to be inlined. Post application, the schema becomes: schema { query: Query } type Query { postUserStreet(id: Int): String } As seen, the Post, User, and Address types are eliminated from the schema. The postUserStreet now directly returns a String representing the address street, thereby simplifying the client-side data fetch process. @inline operator also take cares of nullablity of the fields. If any of the fields in the path is nullable, the resulting type will be nullable. Additionally, @inline supports indexing, meaning you can specify the array index to be inlined. If a field users is of type [User], and you want to inline the first user, you can specify the path as ["users","0","name"]. type Post { firstUser: User @inline(path: ["users", "0", "name"]) @http(path: "/users") } In conclusion, the @inline operator helps tidy up your schema and streamline data fetching by reducing query depth, promoting better performance and simplicity. ","version":"Next","tagName":"h2"},{"title":"@const","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#const","content":"The @const operators allows us to embed a constant response for the schema. For eg: schema { query: Query } type Query { user: User @const(data: {name: "John", age: 12}) } type User { name: String age: Int } The const operator will also validate the provided value at compile time to make sure that it matches the of the field. If the schema of the provided value doesn't match the type of the field, a descriptive error message is show on the console. ","version":"Next","tagName":"h2"},{"title":"Operator Composition","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#operator-composition","content":"This example illustrates the concept of composition in GraphQL, which allows you to combine multiple operations (known as "operators") to build more complex transformations of data. The given schema is defining two data types - User and Post. The User type has fields id and name, and the Post type initially has fields user and userId. type User { id: Int name: String } type Post { user: User @inline(path: ["name"]) @modify(name: "userName") @http(path: "/users/{{userId}}") userId: Int! } However, it uses a series of operators to modify the user field. The @inline(path: ["name"]) operator is used to drill down into the User object, specifically targeting the name field. This is equivalent to fetching the User.name property. The @modify(name: "userName") operator is used to name the inlined name field to userName. So, instead of a user field that is a User object, we now have a userName field that is a String. The @http(path: "/users/{{userId}}") operator is used to instruct the resolver to make an HTTP request to fetch the user data from a specified path (i.e., /users/{{userId}}), where {{userId}} is a placeholder that would be replaced with the actual userId when making the request. The schema after this transformation looks like this: type User { id: Int name: String } type Post { userName: String userId: Int! } So, we've used composition of operators to take a complex object (the User inside the Post), extract a specific part of it (name), name that part (userName), and then instruct GraphQL how to fetch the data using an HTTP request. info It is important to note that the order of the operators doesn't matter. The resulting schema will always be the same. This is a powerful mechanism that allows you to make your GraphQL schema more precise, easier to understand, and more suitable for the specific needs of your application. ","version":"Next","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file +{"searchDocs":[{"title":"Long Blog Post","type":0,"sectionRef":"#","url":"/blog/long-blog-post/","content":"This is the summary of a very long blog post, Use a <!-- truncate --> comment to limit blog post size in the list view. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"First Blog Post","type":0,"sectionRef":"#","url":"/blog/first-blog-post/","content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","keywords":"","version":null},{"title":"MDX Blog Post","type":0,"sectionRef":"#","url":"/blog/mdx-blog-post/","content":"Blog posts support Docusaurus Markdown features, such as MDX. tip Use the power of React to create interactive blog posts. <button onClick={() => alert("button clicked!")}>Click me!</button> Click me!","keywords":"","version":null},{"title":"Welcome","type":0,"sectionRef":"#","url":"/blog/welcome/","content":"Docusaurus blogging features are powered by the blog plugin. Simply add Markdown files (or folders) to the blog directory. Regular blog authors can be added to authors.yml. The blog post date can be extracted from filenames, such as: 2019-05-30-welcome.md2019-05-30-welcome/index.md A blog post folder can be convenient to co-locate blog post images: The blog supports tags as well! And if you don't want a blog: just delete this directory, and use blog: false in your Docusaurus config.","keywords":"","version":null},{"title":"Installation","type":0,"sectionRef":"#","url":"/docs/getting_started/","content":"","keywords":"","version":"Next"},{"title":"NPM","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#npm","content":"If you don't already have nodejs installed, you can find the instructions here. Install Tailcall by running the following command in your terminal: npm i -g tailcallhq/tailcall Verify that Tailcall is installed correctly by running: tc note Do not use the --force flag during npm installations, as it ignores installing platform-specific builds. ","version":"Next","tagName":"h2"},{"title":"Homebrew","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#homebrew","content":"If you don't already have Homebrew installed, you can find the instructions here. Add the Tailcall repository to Homebrew by running the following command in your terminal: brew tap tailcallhq/tailcall brew install tailcall Verify that Tailcall is installed correctly by running: tc Once installation is done, upgrades can be performed via: brew update brew upgrade tailcall ","version":"Next","tagName":"h2"},{"title":"Curl","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#curl","content":"Follow the steps below to manually install the cli on your system: curl -sSL https://raw.githubusercontent.com/tailcallhq/tailcall/master/install.sh | bash -s -- This command fetches and executes the Tailcall installation script. The installed files are located in the ~/.tailcall directory. Upon completion of the installation, extend your PATH environment variable to include the ~/.tailcall/bin directory: export PATH=$PATH:~/.tailcall/bin ","version":"Next","tagName":"h2"},{"title":"Docker","type":1,"pageTitle":"Installation","url":"/docs/getting_started/#docker","content":"If you want to install Tailcall with Docker, follow the steps below. Before starting, ensure Docker is installed on your system. If not, you can download it from here. Pull the latest Tailcall Docker image using the following command: docker pull ghcr.io/tailcallhq/tailcall/tc-server: This command fetches the latest version of the Tailcall Docker image from the Docker registry. Run the Tailcall Docker container with the following command: docker run -p 8080:8080 -p 8081:8081 ghcr.io/tailcallhq/tailcall/tc-server: This command starts the Tailcall server in a Docker container. Similar to the homebrew installation, it exposes a the graphQL endpoint on port 8080. note Once the installation is compeleted, you should verify the if the version printed on running tc command match the actual installed versions. ","version":"Next","tagName":"h2"},{"title":"Problem Statement","type":0,"sectionRef":"#","url":"/docs/","content":"","keywords":"","version":"Next"},{"title":"Microservice Architecture","type":1,"pageTitle":"Problem Statement","url":"/docs/#microservice-architecture","content":"This is what a typical microservices architecture looks like: The clients (Mobile/Web) make requests to the microservices through an API gateway. An API gateway is a server that acts as a single point of entry for any type of request. It is responsible for routing them to the appropriate backend service and then returning the response from the backend service to the client. An API gateway can also perform tasks such as authentication, rate limiting, and caching. This makes it a useful component in a microservices architecture, where each service has its API and the API gateway acts as the "front door" for clients to access the services. ","version":"Next","tagName":"h2"},{"title":"API Composition","type":1,"pageTitle":"Problem Statement","url":"/docs/#api-composition","content":"API composition refers to the process of combining multiple APIs to create a new API or a new functionality. This can be done by sending requests to multiple APIs and combining the results, or by creating a new API that acts as a façade for the underlying APIs. info API Composition is also known as API Orchestration. This is however vastly different from Microservice Orchestration. For example, consider a scenario where a client application wants to display a timeline of posts with the profile information of each user on a social media platform. In this case, the client can send two separate requests to two different APIs and combines them together as follows: First to /posts to retrieve recent posts, with the following response: type Post { id: ID! title: String! body: String! userId: ID! # Reference to user by it's id. } Second, with the userId from the above post response, make a request to /users to retrieve the user's profile information, with the following response: type User { id: ID! name: String! email: String! } The client can then combine the results from these two APIs to create a single response that contains all the required information. This new response can be considered as the output of the composed API. type Post { id: ID! title: String! body: String! user: User! # Reference to the complete user object } ","version":"Next","tagName":"h2"},{"title":"Composition on Clients","type":1,"pageTitle":"Problem Statement","url":"/docs/#composition-on-clients","content":"The composition on the client side remains unstandardised. There is often a problem of over fetching where the client makes a request to get some data, but the server ends up sending more than what’s required on the screen. And under fetching where the client end up making multiple API calls to get relevant data for a particular screen. This, with a modest hardware and in conjunction with flaky network conditions makes the overall solution unreliable and non-performant. info Modest hardware and flaky network conditions on the client side results in poor user-experience. ","version":"Next","tagName":"h2"},{"title":"1. Increased Complexity","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-increased-complexity","content":"To build a rich user interface, API composition is necessary on the client side. One of the main challenges with API composition on the client side is that it can lead to increased complexity in the client application. This is because the client needs to handle the process of sending requests to multiple APIs and combining the results, which can add to the overall size and complexity of the client code. ","version":"Next","tagName":"h3"},{"title":"2. Reduced Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-reduced-performance","content":"Another challenge with API composition on the client side is that it can result in reduced performance and increased latency. This is because the client needs to make multiple requests to different APIs, which can take more time and result in a slower response from the composed API. ","version":"Next","tagName":"h3"},{"title":"3. Increased Risk","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-increased-risk","content":"In addition, API composition on the client side can also lead to increased security risks. This is because the client needs to handle sensitive information, such as API keys and authentication credentials, which can be vulnerable to attacks if not properly secured. The client doesn't have access to powerful CPUs or a reliable network either. This makes the composition problem even more challenging to implement and manage. It is therefore often more efficient and effective to perform API composition on the server side instead. ","version":"Next","tagName":"h3"},{"title":"Backend For Frontend (BFF)","type":1,"pageTitle":"Problem Statement","url":"/docs/#backend-for-frontend-bff","content":"A BFF layer can help to solve the challenges of API composition by providing a separate backend service that is optimized for each specific frontend client. This can enable the BFF to perform API composition on behalf of the client, which can help to improve the performance and reliability of the composed API. The BFF layer typically sits as a separate component in the overall architecture, between the frontend client and the microservices. It can communicate with both the frontend client and the microservices using well-defined interfaces and protocols, such as REST or gRPC. info BFFs can dramatically improve the reliability and performance of the system, there by having a direct impact on user-experience. The BFF can take advantage of a powerful CPU and access to a fast network to improve the performance and reliability of the composed API. It can also provide added flexibility and control over the composition process. This can make it a useful tool for developers who want to create new APIs by combining the functionality of multiple underlying APIs. However, there are a few challenges with a BFF layer: ","version":"Next","tagName":"h2"},{"title":"1. Highly Specialized","type":1,"pageTitle":"Problem Statement","url":"/docs/#1-highly-specialized","content":"One of the challenges with using a BFF layer is that it is a highly specialized solution that requires a significant amount of hand-written code. Unlike an API gateway, there is no standard BFF solution that can be deployed out-of-the-box, and each BFF implementation must be custom-tailored to the specific requirements of the frontend client. This lack of standardization and reusability can make the BFF solution more complex and difficult to maintain. ","version":"Next","tagName":"h3"},{"title":"2. Fragile","type":1,"pageTitle":"Problem Statement","url":"/docs/#2-fragile","content":"Another challenge with using a BFF layer is that it can be fragile and susceptible to failure. The BFF solution is dependent on the developers to follow best practices and handle all error scenarios, and if these steps are not taken, the solution can be prone to bugs and performance issues. Additionally, the BFF solution must be thoroughly tested, including performance testing, unit testing, and integration testing, to ensure that it is reliable and performs well in production. This can require significant effort and expertise, and if these steps are not properly followed, the BFF solution can be fragile and prone to failure. Also, it's worth mentioning that a BFF layer is an entry point to all your backend, it going down basically means nothing is accessible for the user so this layer needs to be robust and resilient to exceptions. ","version":"Next","tagName":"h3"},{"title":"3. Speculative Performance","type":1,"pageTitle":"Problem Statement","url":"/docs/#3-speculative-performance","content":"Because BFF layers are typically custom-written for each use case, it can be difficult to predict the performance impact of a small code change. Issues such as unoptimized algorithms, inefficient caching, and unnecessary downstream requests can go unnoticed and only be discovered very late in the development cycle. Typically companies perform thorough benchmarking and load testing before anything goes live. This results in a very high time to market even for minor changes. ","version":"Next","tagName":"h3"},{"title":"4. Monolith","type":1,"pageTitle":"Problem Statement","url":"/docs/#4-monolith","content":"Eventually, this layer turns out to be a big monolith touching every service in your backend. The layer contains a lot of handwritten spaghetti code that's hard to maintain. Onboarding new engineers also become harder and upgrading libraries or architecture gets costlier. Any tiny change requires a full-fledged deployment on your infrastructure. ","version":"Next","tagName":"h3"},{"title":"5. Canary Support (Lack thereof)","type":1,"pageTitle":"Problem Statement","url":"/docs/#5-canary-support-lack-thereof","content":"Every change that happens in the backend requires the deployment of the BFF layer. Any feature that is built on the client also requires changes on the BFF layer. Such frequent changes can not be exposed to 100% of users because the reliability and performance of this system are unknown. A common way to solve this problem is to use Blue-Green deployments. This requires additional infrastructure and complex routing mechanisms. First-class support to do canary releases is very important and should be part of a modern BFF layer, however, most companies rely on DevOps for its support. ","version":"Next","tagName":"h3"},{"title":"6. Coupled Release","type":1,"pageTitle":"Problem Statement","url":"/docs/#6-coupled-release","content":"BFF layers can't be deployed independently since they act as a bridge between the clients and the services. Generally, the services need to go live first, and they need to make sure that the change is compatible with the current version of the BFF layer running in production. The interesting problem is in case there is a bug in the microservice and it needs to be reverted, even the BFF layer needs to be reverted. This kind of coupling makes it operationally very expensive to manage. ","version":"Next","tagName":"h3"},{"title":"7. Legacy Gateway","type":1,"pageTitle":"Problem Statement","url":"/docs/#7-legacy-gateway","content":"BFF layers often end up implementing some of the cross-cutting concerns of an API gateway such as rate limiting, authentication, throttling, etc. This makes its purpose quite confusing if we already have an API gateway. Moreover, it's not very clear if we use an API gateway with a BFF layer, where should we place it? Should we place it between the clients and the BFF layer or the BFF layer and the service mesh? These are subjective decisions that each company ends up making as there is no standard way of doing this. However, it's worth mentioning that legacy gateways do introduce a gap that's being attempted to be filled by a BFF layer. info BFF, Presentation Layer, Facade, Middleware, Frontend Layer, Orchestration Layer, API Adapter — Are all different nomenclatures used for the same thing. ","version":"Next","tagName":"h3"},{"title":"8. Organizational Friction","type":1,"pageTitle":"Problem Statement","url":"/docs/#8-organizational-friction","content":"The Backends for Frontend (BFF) pattern, while designed to enhance user experience, introduces undeniable organizational friction. These issues include communication delays that hinder development, incompatible skill-sets and perspective of what a BFF layer should be doing causing inefficiencies, and a diminished sense of ownership affecting the frontend teams' productivity. While one might suggest transferring BFF ownership to frontend teams as a potential solution, it's not a foolproof fix. This shift necessitates an expansion of skill-sets among frontend teams and demands enhanced coordination, presenting its own challenges. At Tailcall, we are fervently committed to resolving this issue. We perceive this intricate conundrum as a compelling fusion of organizational dynamics and technical intricacies. It presents a uniquely riveting challenge that propels us beyond the confines of conventional software development paradigms. ","version":"Next","tagName":"h3"},{"title":"Configuration","type":0,"sectionRef":"#","url":"/docs/getting_started/configuration/","content":"Configuration For our first example, we are going to compose a GraphQL schema from the REST APIs at https://jsonplaceholder.typicode.com, a free online REST API with some fake data. We will use the API at /users to get a list of users, and /users/:id/posts to get the posts for each user, and compose them into a single GraphQL schema. Create a file called jsonplaceholder.graphql and paste the following contents into it. # Specify a base url for all http requests schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { # Specify the http path for the users query users: [User] @http(path: "/users") } # Create a user type with the fields returned by the users api type User { id: Int! name: String! username: String! email: String! # Extend the user type with the posts field # Use the current user's id to construct the path posts: [Post] @http(path: "/users/{{value.id}}/posts") } # Create a post type with the fields returned by the posts api type Post { id: Int! title: String! body: String! } The above file is a standard .graphQL file, with a few additions such as @server and @http directives. So basically we specify the GraphQL schema and how to resolve that GraphQL schema in the same file, without having to write any code! Here is a quick overview of what the above schema does:","keywords":"","version":"Next"},{"title":"Execute","type":0,"sectionRef":"#","url":"/docs/getting_started/execute/","content":"Execute Open a web browser and go to http://localhost:8000. This should load the GraphiQL interface. In the query editor of GraphiQL, enter the following query query { users { id name posts { title } } } After running the query in GraphiQL, expect to see a JSON response structured like this: { "data": { "users": [ { "id": 1, "name": "Leanne Graham", "posts": [ { "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit" } // Additional posts truncated for brevity ] }, { "id": 2, "name": "Ervin Howell", "posts": [ { "title": "et ea vero quia laudantium autem" }, { "title": "in quibusdam tempore odit est dolorem" } // Additional posts truncated for brevity ] } // Additional users truncated for brevity ] } } You can now add additional fields, and compose more queries together!","keywords":"","version":"Next"},{"title":"Launch","type":0,"sectionRef":"#","url":"/docs/getting_started/launch/","content":"Launch Now, run the following command to start the server with the full path to the jsonplaceholder.graphql file that you created above. tc start ./jsonplaceholder.graphql If the command succeeds, you should see logs like the following below. 🚀 Tailcall launched at [0.0.0.0:8000] 🌍 Playground: http://0.0.0.0:8000 The server starts with the schema provided and prints out a load of meta information. We will cover those in detail in a bit. For now, open the playground URL in a new tab in your browser and try it out for yourself!","keywords":"","version":"Next"},{"title":"CLI","type":0,"sectionRef":"#","url":"/docs/intro/cli/","content":"","keywords":"","version":"Next"},{"title":"check","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#check","content":"The check command validates a composition spec. Notably, this command can detect potential N+1 issues. To use the check command, follow this format: tc check [options] <file>... The check command offers various options that control different settings, such as the display of the blueprint, endpoints, and schema of the composition spec. ","version":"Next","tagName":"h2"},{"title":"--n-plus-one-queries","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--n-plus-one-queries","content":"This flag triggers the detection of N+1 issues. Type: BooleanDefault: false tc check --n-plus-one-queries <file>... ","version":"Next","tagName":"h3"},{"title":"--schema","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#--schema","content":"This option enables the display of the schema of the composition spec. Type: BooleanDefault: false tc check --schema <file1> <file2> ... <fileN> The check command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc check --schema ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h3"},{"title":"start","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#start","content":"The start command launches the TailCall Server, acting as an GraphQL proxy with specific configurations. The server can publish various GraphQL configurations, also known as composition specs. To start the server, use the following command: tc start <file1> <file2> ... <fileN> The start command allows for multiple files. Specify each file path, separated by a space, after the options. Example: tc start ./path/to/file1.graphql ./path/to/file2.graphql ","version":"Next","tagName":"h2"},{"title":"init","type":1,"pageTitle":"CLI","url":"/docs/intro/cli/#init","content":"The init command bootstraps a new TailCall project. It creates the necessary GraphQL schema files in the provided file path. tc init <file_path> This command prompts for additional file creation and configuration, creating a .tailcallrc.graphql file by default. ","version":"Next","tagName":"h2"},{"title":"Architecture","type":0,"sectionRef":"#","url":"/docs/intro/architecture/","content":"","keywords":"","version":"Next"},{"title":"High-Level Architecture","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#high-level-architecture","content":"The clients and the services remain the same with an addition of three components viz. The Composition Spec (also known as the “Blueprint”), Schema Registry, and the Tailcall Proxy. The Schema Registry serves as a repository for the metadata that outlines how the APIs are structured. This metadata encompasses a range of information, including details about the service endpoint, the input schema associated with the endpoint, and any pertinent security and resilience parameters. Upon receipt of a client request via the proxy, the system dynamically retrieves the corresponding metadata from the registry. It then uses this information to shape its logic and effectively communicate with the client's microservices, ensuring efficient and secure request handling. ","version":"Next","tagName":"h2"},{"title":"Composition Specification (Blueprint)","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#composition-specification-blueprint","content":"The Composition Specification (Spec) encompasses all necessary data required for constructing APIs. It comprises the schema of valid request-response pairs, host and protocol specifics, and anticipations for resiliency such as throttling and caching mechanisms. Additionally, it encapsulates critical security aspects, including authentication and authorization measures, among others. This all-encompassing document ensures each component in the API architecture aligns with the defined standards, thus ensuring a robust and secure system. ","version":"Next","tagName":"h2"},{"title":"Publish","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#publish","content":"Once the composition specification is ready, we publish the specification on the tailcall registry. The publishing process has multiple steps. We run all the validations and check if there are any invalid states in the composition specification provided by the developer. We also identify performance bottlenecks in the way APIs are composed for eg: the N + 1 problem. info The N + 1 problem in API composition refers to a situation where a single request to an API results in multiple additional requests being made. This can occur when an API returns a list of objects that each require additional data from another API, resulting in a separate request for each object. This can lead to poor performance and increased load on the API. The problem can be solved by using techniques such as "eager loading" or "batching" to reduce the number of requests made. We recommend standard best practices for API composition so that developers can integrate it on day one. We also apply many optimizations eg: including constant folding, inlining, data-loader, etc. Before publishing a unique sha256 hash is generated for the specification provided by the developer (We will learn more about this in the coming sections) As a final step in this publishing process, a unified endpoint is automatically generated, ensuring seamless API integration. ","version":"Next","tagName":"h2"},{"title":"Client Consumption","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#client-consumption","content":"When the client makes a request it needs to make sure the hash is sent as a part of the request. This is the same hash that’s produced before publishing on the registry. curl 'https://cloud.tailcall.com/graphql/d5fb012' \\ --data-raw '{"query": "{ posts { title body user { name email } } } }"}' ","version":"Next","tagName":"h2"},{"title":"Hash Code","type":1,"pageTitle":"Architecture","url":"/docs/intro/architecture/#hash-code","content":"The SHA-256 hash for the composition specification isn't created merely from the textual representation of the specification. Instead, it is derived from the semantic meaning of the specification - that is, the underlying logic, structure, and purpose behind the API composition, rather than the literal text or syntax. This method provides a more stable hash because changes in comment, formatting, or syntax, which do not affect the overall function or purpose of the API, do not alter the hash. The hash, therefore, remains consistent unless there are changes to the specification's semantic meaning. This approach ensures that the hash serves as an accurate and reliable identifier for each unique orchestration. This is the most important and differentiated feature of the system because it allows us to do the following: Versioning: Each change is version controlled. You can run multiple versions of the specification at the same time in production, without actually maintaining the source code of each one of them or using the additional infrastructure.Canary Releases: This becomes a first-class feature of the proxy. Because the spec is versioned we can control the exposure of a newly developed feature easily.Immutability: Every specification is immutable, ensuring that once deployed and stabilized in production, it cannot be altered at runtime. This characteristic enhances the safety of product rollbacks.Breaking Changes: As each specification operates independently, deploying breaking changes in production won't affect existing clients, maintaining operational stability and integrity. Hope the architecture makes sense. If you have any questions, please feel free to reach out to us on our discord channel, we would love to hear from you. ","version":"Next","tagName":"h2"},{"title":"Tackling N + 1","type":0,"sectionRef":"#","url":"/docs/guides/n+1/","content":"","keywords":"","version":"Next"},{"title":"Scenario","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#scenario","content":"Consider we're developing a feature that involves consuming data from the JSON Placeholder API. The feature requires fetching posts and the details of the authors of these posts. Here's an illustration of how this might typically be implemented: ","version":"Next","tagName":"h2"},{"title":"Fetching Posts","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-posts","content":"First, we send a request to retrieve all posts: curl https://jsonplaceholder.typicode.com/posts The above request fetches a list of posts from the API, each of which includes a userId field indicating the author of the post. ","version":"Next","tagName":"h3"},{"title":"Fetching Users","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#fetching-users","content":"Then, for each post, we need to get the author's details. A request for a specific user might look like this: curl https://jsonplaceholder.typicode.com/users/1 If we received 100 posts from our first request, we would then make 100 more requests to get each post's author details, resulting in a total of 101 requests. The N+1 problem, demonstrated using the JSON Placeholder API, refers to the issue where an initial API request generates multiple additional requests. For instance, acquiring 100 posts and then making another request for each post's author details culminates in 101 total requests. info In real-world applications with thousands of posts and users, this problem intensifies. Each user request can yield hundreds or thousands of additional server requests, stressing server resources, and leading to slower response times, higher server costs, and a degraded user experience. This situation can even lead to server downtime due to the high volume of requests, impacting service availability. Therefore, it's crucial to address the N+1 problem during the design and development of applications involving numerous API requests. Solutions to this issue will be discussed in subsequent sections. ","version":"Next","tagName":"h3"},{"title":"Using the CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#using-the-cli","content":"The TailCall CLI is a potent tool for developers, helping identify N+1 issues in GraphQL applications even before any requests are made or configurations are published in production. This proactive approach allows for potential issues to be mitigated right from the development stage. Before diving into the usage, ensure you have familiarized yourself with the basics of the TailCall CLI. If you haven't already, please refer to the Installation guide, which will walk you through the setup process and help you understand the key commands. ","version":"Next","tagName":"h2"},{"title":"Jsonplaceholder Example","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#jsonplaceholder-example","content":"Here is a sample .graphql file that we'll be examining: schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query } type Query { posts: [Post] @http(path: "/posts") } type User { id: Int! name: String! username: String! email: String! phone: String website: String } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users/{{value.userId}}") } This schema allows clients to fetch a list of posts, with each post including its associated user data. However, as currently defined, it suffers from the N+1 problem: each post will trigger an additional request to fetch its associated user data. We will demonstrate how to identify this issue using the TailCall CLI in the next section. ","version":"Next","tagName":"h3"},{"title":"Running the TailCall CLI","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#running-the-tailcall-cli","content":"With the check command, TailCall CLI can assist you in identifying potential N+1 issues in a GraphQL file: tc check ./jsonplaceholder.graphql No errors found. N + 1: 1 The N + 1: 1 line tells you that the TailCall CLI has detected one potential N+1 issue. For a deeper understanding of these issues, you can use the --n-plus-one-queries parameter: tc-dev check ./jsonplaceholder.graphql --n-plus-one-queries No errors found. N + 1: 1 query { posts { user } } This parameter uncovers the minimal query that can trigger an N+1 problem. In the above case, query { posts { user } }, represents the minimal query that could lead to an N+1 problem. It illustrates that within the posts query, each post is triggering an additional request to fetch its associated user data. ","version":"Next","tagName":"h3"},{"title":"Solving Using Batching","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#solving-using-batching","content":"Batching is an effective technique to group multiple similar requests into one, substantially reducing the number of server calls. The TailCall CLI provides this capability to address the typical N+1 issue that arises in GraphQL. To tap into this feature, modify the @http directive on Post.user in your GraphQL schema as follows: type Post { id: Int! userId: Int! title: String! body: String! user: User @http( path: "/users" query: [{key: "id", value: "{{value.userId}}"}] groupBy: ["id"] ) } ","version":"Next","tagName":"h2"},{"title":"Understanding the Update","type":1,"pageTitle":"Tackling N + 1","url":"/docs/guides/n+1/#understanding-the-update","content":"The described changes introduce significant tweaks to the @http directive and incorporate the @groupBy operator: query: [{key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. groupBy: ["id"]: This parameter instructs the system to convert the list of responses into a map internally, using the user's id as the unique key. In essence, it allows the system to differentiate each user value in the response list. By using this approach, you can reduce the number of requests from 101 (for 100 posts plus one initial request for the post list) to just 2. This significant optimization effectively handles the N+1 problem, thereby enhancing your application's efficiency and user experience. ","version":"Next","tagName":"h3"},{"title":"Context","type":0,"sectionRef":"#","url":"/docs/intro/context/","content":"","keywords":"","version":"Next"},{"title":"Context in Tailcall","type":1,"pageTitle":"Context","url":"/docs/intro/context/#context-in-tailcall","content":"In Tailcall, as in all GraphQL implementations, Context is a variable that is accessible to every Operator. It is used to store and access data that needs to be shared between operators. The Context can be described using the following Typescript interface: interface Context { args: Map<string, Json> value: Json parent: Context env: Map<string, string> headers: Map<string, string> } ","version":"Next","tagName":"h2"},{"title":"args","type":1,"pageTitle":"Context","url":"/docs/intro/context/#args","content":"These are the arguments passed to the current query. They can be used to access the arguments of the query. For example, type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } In this example, args.id is used to access the id argument passed to the user query. ","version":"Next","tagName":"h3"},{"title":"value","type":1,"pageTitle":"Context","url":"/docs/intro/context/#value","content":"This represents the value of the current node. For instance, type Post { id: ID! title: String! body: String! comments: [Comment] @http(path: "/posts/{{value.id}}/comments") } In the example above, value.id is used to access the id field of the Post type. ","version":"Next","tagName":"h3"},{"title":"parent","type":1,"pageTitle":"Context","url":"/docs/intro/context/#parent","content":"This denotes the context of the parent node. type Query { posts: [Post] @http(path: "/posts") } type Post { id: Int! userId: Int! title: String! body: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], matchPath: ["id"], matchKey: "userId") } In this case, value.userId is a way to get the userId information from the "parent" context of the Post type. Essentially, it's extracting a list or "array" of userId fields from multiple Post types. Think of value as a container that holds the results of a post query, with userId being the specific key you want to fetch from that container. ","version":"Next","tagName":"h3"},{"title":"env","type":1,"pageTitle":"Context","url":"/docs/intro/context/#env","content":"This represents global environment variables for the server. This is set once when the server starts. type Query { users: [User]! @http(baseUrl: "{{env.API_ENDPOINT}}", path: "/users") } In the above example, env.API_ENDPOINT refers to an environment variable called API_ENDPOINT, which should be defined in your server settings. ","version":"Next","tagName":"h3"},{"title":"headers","type":1,"pageTitle":"Context","url":"/docs/intro/context/#headers","content":"These are the headers of the request that was received by the Tailcall server. type Query { commentsForUser: [Comment] @http(path: "/users/{{headers.userId}}/comments") } Here, headers.userId refers to a header called userId that should be present in the context. The server can use this userId to fetch comments for the specified user. ","version":"Next","tagName":"h3"},{"title":"Operators","type":0,"sectionRef":"#","url":"/docs/intro/operators/","content":"","keywords":"","version":"Next"},{"title":"@server","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#server","content":"The @server directive, when applied at the schema level, offers a comprehensive set of server configurations. It dictates how the server behaves and helps tune tailcall for various use-cases. schema @server(...[ServerSettings]...){ query: Query mutation: Mutation } In this templated structure, replace ...[ServerSettings]... with specific configurations tailored to your project's needs. Adjust and expand these settings as necessary. The various ServerSettings options and their details are explained below. port This refers to the port on which the Tailcall will be running. If not specified, the default port is 8000. schema @server(port: 8090) { query: Query mutation: Mutation } In this example, the port is set to 8090. This means that the Tailcall will be accessible at http://localhost:8090. tip Always lean towards non-standard ports, steering clear of typical ones like 80 or 8080. Ensure your chosen port is unoccupied. enableCacheControlHeader The enableCacheControlHeader configuration, when activated, instructs Tailcall to transmit Cache-Control headers in its responses. The max-age value in the header, is the least of the values in the responses received by tailcall from the upstream services. By default, this is set to false meaning no header is set. schema @server(enableCacheControlHeader: true) { query: Query mutation: Mutation } enableGraphiql This configuration dictates the path on which the GraphiQL interface is hosted within Tailcall. GraphiQL is a built-in, interactive in-browser GraphQL IDE that simplifies query development and testing. By designating a path, such as /graphiql, you grant access to this IDE at that specific URL endpoint, like http://localhost:8000/graphiql. If not provided, GraphiQL won't be available. It's a ready-to-use feature in Tailcall, requiring no additional setup. schema @server(port: 8000, enableGraphiql: "/graphiql") { query: Query mutation: Mutation } tip While the GraphiQL interface is a powerful tool for development, it's recommended to disable it in production environments, especially if you're not exposing GraphQL APIs directly to users. This ensures an added layer of security and reduces unnecessary exposure. vars This configuration allows you to define local variables that can be leveraged during the server's operations. These variables are particularly handy when you need to store constant configurations, secrets, or other shared information that various operations might require. schema @server(vars: {key: "apiKey", value: "YOUR_API_KEY_HERE"}) { query: Query mutation: Mutation } type Query { externalData: Data @http(path: "/external-api/data", headers: [{key: "Authorization", value: "Bearer {{vars.apiKey}}"}]) } In the provided example, a variable named apiKey is set with a placeholder value of "YOUR_API_KEY_HERE". This configuration implies that whenever Tailcall fetches data from the externalData endpoint, it includes the apiKey in the Authorization header of the HTTP request. tip Local variables, like apiKey, can be instrumental in securing access to external services or providing a unified place for configurations. Ensure that sensitive information stored this way is well protected and not exposed unintentionally, especially if your Tailcall configuration is publicly accessible. enableIntrospection This setting governs whether introspection queries are permitted on the server. Introspection is an intrinsic feature of GraphQL, allowing clients to fetch information about the schema directly. This can be instrumental for tools and client applications to understand the types, fields, and operations available. By default, this setting is enabled (true). schema @server(enableIntrospection: false) { query: Query mutation: Mutation } tip Although introspection is beneficial during development and debugging stages, it's wise to consider disabling it in production environments. Turning off introspection in live deployments can enhance security by preventing potential attackers from easily discerning the schema and any associated business logic or data structures. enableQueryValidation The enableQueryValidation configuration specifies whether the server should validate incoming GraphQL queries against the defined schema. Validating each query ensures its conformity to the schema, preventing errors from invalid or malformed queries. However, there are situations where you might opt to disable it, notably when seeking to enhance server performance at the cost of such checks. This defaults to true if not specified. schema @server(enableQueryValidation: false) { query: Query mutation: Mutation } In the example above, enableQueryValidation is set to false, bypassing the validation phase for incoming queries. tip This should be enabled in dev environment to make sure the queries sent are correct and validated, however in production env, you could consider disabling it for improved performance. enableResponseValidation Tailcall automatically can infer the schema of the http endpoints for you. This information can be used to validate responses that are received from the upstream services. Enabling this setting allows you to perform exactly that. If this is not specified, the default setting for enableResponseValidation is false. schema @server(enableResponseValidation: true) { query: Query mutation: Mutation } tip Disabling this setting will offer major performance improvements, but at the potential expense of data. globalResponseTimeout The globalResponseTimeout configuration determines the maximum duration a query is allowed to run before it's terminated by the server. Essentially, it acts as a safeguard against long-running queries that could strain resources or pose security concerns. If not explicitly defined, there might be a system-specific or default value that applies. schema @server(globalResponseTimeout: 5000) { query: Query mutation: Mutation } In this given example, the globalResponseTimeout is set to 5000 milliseconds, or 5 seconds. This means any query execution taking longer than this duration will be automatically terminated by the server. tip It's crucial to set an appropriate response timeout, especially in production environments. This not only optimizes resource utilization but also acts as a security measure against potential denial-of-service attacks where adversaries might run complex queries to exhaust server resources. ","version":"Next","tagName":"h2"},{"title":"@upstream","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#upstream","content":"The upstream directive allows you to control various aspects of the upstream server connection. This includes settings like connection timeouts, keep-alive intervals, and more. If not specified, default values are used. schema @upstream(...[UpstreamSetting]...){ query: Query mutation: Mutation } The various UpstreamSetting options and their details are explained below. poolIdleTimeout The time in seconds that the connection pool will wait before closing idle connections. schema @upstream(poolIdleTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } poolMaxIdlePerHost The maximum number of idle connections that will be maintained per host. schema @upstream(poolMaxIdlePerHost: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveInterval The time in seconds between each keep-alive message sent to maintain the connection. schema @upstream(keepAliveInterval: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveTimeout The time in seconds that the connection will wait for a keep-alive message before closing. schema @upstream(keepAliveTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } keepAliveWhileIdle A boolean value that determines whether keep-alive messages should be sent while the connection is idle. schema @upstream(keepAliveWhileIdle: false, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } proxy The proxy setting defines an intermediary server through which the upstream requests will be routed before reaching their intended endpoint. By specifying a proxy URL, you introduce an additional layer, enabling custom routing and security policies. schema @upstream(proxy: {url: "http://localhost:3000"}, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In the provided example, we've set the proxy's url to "http://localhost:3000". This configuration ensures that all requests aimed at the designated baseURL are first channeled through this proxy. To illustrate, if the baseURL is "http://jsonplaceholder.typicode.com", any request targeting it would be initially sent to "http://localhost:3000" before being redirected to its final destination. connectTimeout The time in seconds that the connection will wait for a response before timing out. schema @upstream(connectTimeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } timeout The maximum time in seconds that the connection will wait for a response. schema @upstream(timeout: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } tcpKeepAlive The time in seconds between each TCP keep-alive message sent to maintain the connection. schema @upstream(tcpKeepAlive: 60, baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } userAgent The User-Agent header value to be used in HTTP requests. schema @upstream(userAgent: "Tailcall/1.0", baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } allowedHeaders The allowedHeaders configuration specifies which HTTP headers are permitted to be forwarded to upstream services when making requests. If allowedHeaders isn't specified, no incoming headers will be forwarded to the upstream services, which can provide an added layer of security but might restrict essential data flow. schema @upstream(allowedHeaders: ["Authorization", "X-Api-Key"]) { query: Query mutation: Mutation } In the example above, the allowedHeaders is set to allow only Authorization and X-Api-Key headers. This means that requests containing these headers will forward them to upstream services, while all others will be ignored. It ensures that only expected headers are communicated to dependent services, emphasizing security and consistency. baseURL This refers to the default base URL for your APIs. If it's not explicitly mentioned in the @upstream operator, then each @http operator must specify its own baseURL. If neither @server nor @http provides a baseURL, it results in a compilation error. schema @upstream(baseURL: "http://jsonplaceholder.typicode.com") { query: Query mutation: Mutation } In this representation, the baseURL is set as http://jsonplaceholder.typicode.com. Thus, all API calls made by @http will prepend this URL to their respective paths. tip Ensure that your base URL remains free from specific path segments. GOOD: @upstream(baseURL: http://jsonplaceholder.typicode.com)BAD: @upstream(baseURL: http://jsonplaceholder.typicode.com/api) enableHttpCache When activated, directs Tailcall to utilize HTTP caching mechanisms. These mechanisms, in accordance with the HTTP Caching RFC, are designed to improve performance by reducing unnecessary data fetches. If left unspecified, this feature defaults to false. schema @upstream(enableHttpCache: false) { query: Query mutation: Mutation } batch An object that specifies the batch settings, including maxSize (the maximum size of the batch), delay (the delay in milliseconds between each batch), and headers (an array of HTTP headers to be included in the batch). schema @upstream(batch: {maxSize: 1000, delay: 10, headers: ["X-Server", "Authorization"]}) { query: Query mutation: Mutation } ","version":"Next","tagName":"h2"},{"title":"@http","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#http","content":"This @http operator serves as an indication of a field or node that is underpinned by a REST API. For Example: type Query { user(id: ID!): User @http(path: "/users") } In this example, the @http operator is added to the user field of the Query type. This means that the user field is underpinned by a REST API. The path argument is used to specify the path of the REST API. In this case, the path is /users. This means that the GraphQL server will make a GET request to https://jsonplaceholder.typicode.com/users when the user field is queried. baseURL This refers to the base URL of the API. If not specified, the default base URL is the one specified in the @server operator. type Query { user(id: ID!): User @http(path: "/users", baseURL: "https://jsonplaceholder.typicode.com") } path This refers to the API endpoint you're going to call. For instance https://jsonplaceholder.typicode.com/users`. type Query { user(id: ID!): User @http(path: "/users") } If your API endpoint contains dynamic segments, you can use Mustache templates to substitute variables. For example, to fetch a specific user, the path can be written as /users/{{args.id}}. type Query { user(id: ID!): User @http(path: "/users/{{args.id}}") } method This refers to the HTTP method of the API call. Commonly used methods include GET, POST, PUT, DELETE, etc. If not specified, the default method is GET. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users") } query This represents the query parameters of your API call. You can pass it as a static object or use Mustache template for dynamic parameters. These parameters will be added to the URL. For example: type Query { userPosts(id: ID!): [Post] @http(path: "/posts", query: [{key: "userId", value: "{{args.id}}"}]) } body The body of the API call. It's used for methods like POST or PUT that send data to the server. You can pass it as a static object or use a Mustache template to substitute variables from the GraphQL variables. For example: type Mutation { createUser(input: UserInput!): User @http(method: "POST", path: "/users", body: "{{args.input}}") } In the example above, the createUser mutation sends a POST request to /users, with the input object converted to JSON and included in the request body. headers The headers parameter allows you to customize the headers of the HTTP request made by the @http operator. It is used by specifying a key-value map of header names and their values. For instance: type Mutation { createUser(input: UserInput!): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}]) } In this example, a request to /users will include an additional HTTP header X-Server with the value Tailcall. You can make use of mustache templates to provide dynamic values for headers, derived from the arguments or context provided in the request. For example: type Mutation { users(name: String): User @http(path: "/users", headers: [{key: "X-Server", value: "Tailcall"}, {key: "User-Name", value: "{{args.name}}"}]) } In this scenario, the User-Name header's value will dynamically adjust according to the name argument passed in the request. groupBy The groupBy parameter groups multiple data requests into a single call. For more details please refer out n + 1 guide. type Post { id: Int! name: String! user: User @http(path: "/users", query: [{key: "id", value: "{{value.userId}}"}], groupBy: ["id"]) } query: {key: "id", value: "{{value.userId}}"}]: Here, TailCall CLI is instructed to generate a URL where the user id aligns with the userId from the parent Post. For a batch of posts, the CLI compiles a single URL, such as /users?id=1&id=2&id=3...id=10, consolidating multiple requests into one. ","version":"Next","tagName":"h2"},{"title":"@modify","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#modify","content":"The @modify operator in GraphQL provides the flexibility to alter the attributes of a field or a node within your GraphQL schema. Here's how you can use this operator: name You can rename a field or a node in your GraphQL schema using the name argument in the @modify operator. This can be helpful when the field name in your underlying data source doesn't match the desired field name in your schema. For instance: type User { id: Int! @modify(name: "userId") } @modify(name: "userId") tells GraphQL that although the field is referred to as idin the underlying data source, it should be presented as userId in your schema. omit You can exclude a field or a node from your GraphQL schema using the omit argument in the @modify operator. This can be useful if you want to keep certain data hidden from the client. For instance: type User { id: Int! @modify(omit: true) } @modify(omit: true) tells GraphQL that the id field should not be included in the schema, thus it won't be accessible to the client. ","version":"Next","tagName":"h2"},{"title":"@inline","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#inline","content":"The @inline operator simplifies data structures and fetch processes by 'inlining' or flattening a field or node within your schema. It works by modifying the schema and the data transformation process, essentially streamlining how nested data is accessed and presented. For instance, consider a schema: schema { query: Query } type Post { id: Int! user: User! } type User { id: Int! name: String! email: String! address: Address! } type Address { street: String! city: String! state: String! } type Query { postUserStreet(id: Int): Post! @inline(path: ["user", "address", "street"]) } The @inline operator, in this case, is applied to the postUserStreet field of the Query type. It includes a path argument, indicating the chain of fields to be traversed from Post to the field to be inlined. Post application, the schema becomes: schema { query: Query } type Query { postUserStreet(id: Int): String } As seen, the Post, User, and Address types are eliminated from the schema. The postUserStreet now directly returns a String representing the address street, thereby simplifying the client-side data fetch process. @inline operator also take cares of nullablity of the fields. If any of the fields in the path is nullable, the resulting type will be nullable. Additionally, @inline supports indexing, meaning you can specify the array index to be inlined. If a field users is of type [User], and you want to inline the first user, you can specify the path as ["users","0","name"]. type Post { firstUser: User @inline(path: ["users", "0", "name"]) @http(path: "/users") } In conclusion, the @inline operator helps tidy up your schema and streamline data fetching by reducing query depth, promoting better performance and simplicity. ","version":"Next","tagName":"h2"},{"title":"@const","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#const","content":"The @const operators allows us to embed a constant response for the schema. For eg: schema { query: Query } type Query { user: User @const(data: {name: "John", age: 12}) } type User { name: String age: Int } The const operator will also validate the provided value at compile time to make sure that it matches the of the field. If the schema of the provided value doesn't match the type of the field, a descriptive error message is show on the console. ","version":"Next","tagName":"h2"},{"title":"Operator Composition","type":1,"pageTitle":"Operators","url":"/docs/intro/operators/#operator-composition","content":"This example illustrates the concept of composition in GraphQL, which allows you to combine multiple operations (known as "operators") to build more complex transformations of data. The given schema is defining two data types - User and Post. The User type has fields id and name, and the Post type initially has fields user and userId. type User { id: Int name: String } type Post { user: User @inline(path: ["name"]) @modify(name: "userName") @http(path: "/users/{{userId}}") userId: Int! } However, it uses a series of operators to modify the user field. The @inline(path: ["name"]) operator is used to drill down into the User object, specifically targeting the name field. This is equivalent to fetching the User.name property. The @modify(name: "userName") operator is used to name the inlined name field to userName. So, instead of a user field that is a User object, we now have a userName field that is a String. The @http(path: "/users/{{userId}}") operator is used to instruct the resolver to make an HTTP request to fetch the user data from a specified path (i.e., /users/{{userId}}), where {{userId}} is a placeholder that would be replaced with the actual userId when making the request. The schema after this transformation looks like this: type User { id: Int name: String } type Post { userName: String userId: Int! } So, we've used composition of operators to take a complex object (the User inside the Post), extract a specific part of it (name), name that part (userName), and then instruct GraphQL how to fetch the data using an HTTP request. info It is important to note that the order of the operators doesn't matter. The resulting schema will always be the same. This is a powerful mechanism that allows you to make your GraphQL schema more precise, easier to understand, and more suitable for the specific needs of your application. ","version":"Next","tagName":"h2"}],"options":{"id":"default"}} \ No newline at end of file