PageSourceSearch

https://www.twingate.com/docs-assets/5f397c1/docs/3220-b60cd857f423ae3e1216.js

js twingate.com collected 2026-09-24 08:36:03 UTC 21,693 bytes, 2 lines download raw bytes

1"use strict";(self.webpackChunktwingate_homepage=self.webpackChunktwingate_homepage||[]).push([[3220],{53220:function(e,n,t){t.r(n),t.d(n,{Head:function(){return j},default:function(){return F}});var a=t(96540),o=t(28453);function l(e){const n=Object.assign({p:"p",a:"a",h1:"h1",span:"span",ol:"ol",li:"li",pre:"pre",code:"code",ul:"ul",strong:"strong"},(0,o.RP)(),e.components),{Callout:t}=n;return t||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Callout",!0),a.createElement(a.Fragment,null,a.createElement(n.p,null,"The Twingate Connector can easily be deployed using Docker on Firewalla boxes. This works with boxes that include native Docker container support (Firewalla Gold, Purple, and Blue Plus)."),"\n",a.createElement(n.p,null,"Whether you are using Firewalla for your business or your homelab, admins need a secure means to remotely access both the Firewalla boxes and networks. Traditional VPNs typically provide a gateway with an exposed port (typically port 22), where only authorized users can gain access. The challenge with an exposed inbound port is that it poses an inherent risk that requires constant vigilance to secure, such as through software security updates and patches. Twingate reduces this exposure risk by eliminating the need for open inbound ports and allowing VPN access to be behind the firewall."),"\n",a.createElement(t,{title:"Router mode",severity:"info"},a.createElement(n.p,null,"Note that this configuration is currently based on Router mode and has only been tested on Router mode.")),"\n",a.createElement(t,{severity:"info"},a.createElement(n.p,null,a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/peer-to-peer-communication-in-twingate"},"Peer-to-peer connections")," help you to provide a better experience for your users and to stay within the ",a.createElement(n.a,{href:"https://www.twingate.com/terms/sa"},"Fair Use Policy")," for bandwidth consumption. Learn how to ",a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/troubleshooting-p2p"},"support peer-to-peer connections"),".")),"\n",a.createElement(n.h1,{id:"prerequisites",style:{position:"relative"}},a.createElement(n.a,{href:"#prerequisites","aria-label":"prerequisites permalink",className:"remark-autolink-anchor before"},a.createElement(n.span,{dangerouslySetInnerHTML:{__html:'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.3771 7.86873C14.1377 7.10819 15.3708 7.10819 16.1313 7.86873C16.8918 8.62927 16.8918 9.86235 16.1313 10.6229L14.2952 12.459C14.0417 12.7125 14.0417 13.1235 14.2952 13.3771C14.5487 13.6306 14.9597 13.6306 15.2132 13.3771L17.0493 11.5409C18.3169 10.2734 18.3169 8.21824 17.0493 6.95068C15.7818 5.68311 13.7266 5.68311 12.4591 6.95068L10.623 8.78678C10.3695 9.0403 10.3695 9.45132 10.623 9.70484C10.8765 9.95835 11.2875 9.95835 11.541 9.70484L13.3771 7.86873Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M10.1639 13.8361C9.9104 13.5826 9.9104 13.1716 10.1639 12.9181L12.9181 10.1639C13.1716 9.9104 13.5826 9.9104 13.8361 10.1639C14.0896 10.4174 14.0896 10.8285 13.8361 11.082L11.082 13.8361C10.8285 14.0896 10.4174 14.0896 10.1639 13.8361Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7.86873 13.3771C7.10819 14.1377 7.10819 15.3707 7.86873 16.1313C8.62927 16.8918 9.86235 16.8918 10.6229 16.1313L12.459 14.2952C12.7125 14.0417 13.1235 14.0417 13.3771 14.2952C13.6306 14.5487 13.6306 14.9597 13.3771 15.2132L11.5409 17.0493C10.2734 18.3169 8.21824 18.3169 6.95068 17.0493C5.68311 15.7818 5.68311 13.7266 6.95068 12.4591L8.78678 10.623C9.0403 10.3694 9.45132 10.3694 9.70484 10.623C9.95835 10.8765 9.95835 11.2875 9.70484 11.541L7.86873 13.3771Z" fill="#A1A1AA"/></svg>'}})),"Prerequisites"),"\n",a.createElement(n.ol,null,"\n",a.createElement(n.li,null,"Ensure that you are running the ",a.createElement(n.a,{href:"https://help.firewalla.com/hc/en-us/articles/360060538813-Firewalla-Software-Version-Summary"},"latest version")," of Firewalla on your box."),"\n",a.createElement(n.li,null,"Ensure that the Firewalla box is hooked up according to the ",a.createElement(n.a,{href:"https://help.firewalla.com/hc/en-us/articles/4411167832851-Firewalla-Router-Mode-Configuration-Guides"},"Router mode")," configuration guides and confirm that there is outbound internet access available."),"\n",a.createElement(n.li,null,"Have a basic Twingate configuration ready for accessing your infrastru
1cture/homelab (Users, Groups, Remote Networks, Resources, etc.). See our ",a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/quick-start"},"Quick Start")," guide to get you jump-started."),"\n"),"\n",a.createElement(n.h1,{id:"installing-a-twingate-connector-on-a-firewalla-box",style:{position:"relative"}},a.createElement(n.a,{href:"#installing-a-twingate-connector-on-a-firewalla-box","aria-label":"installing a twingate connector on a firewalla box permalink",className:"remark-autolink-anchor before"},a.createElement(n.span,{dangerouslySetInnerHTML:{__html:'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.3771 7.86873C14.1377 7.10819 15.3708 7.10819 16.1313 7.86873C16.8918 8.62927 16.8918 9.86235 16.1313 10.6229L14.2952 12.459C14.0417 12.7125 14.0417 13.1235 14.2952 13.3771C14.5487 13.6306 14.9597 13.6306 15.2132 13.3771L17.0493 11.5409C18.3169 10.2734 18.3169 8.21824 17.0493 6.95068C15.7818 5.68311 13.7266 5.68311 12.4591 6.95068L10.623 8.78678C10.3695 9.0403 10.3695 9.45132 10.623 9.70484C10.8765 9.95835 11.2875 9.95835 11.541 9.70484L13.3771 7.86873Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M10.1639 13.8361C9.9104 13.5826 9.9104 13.1716 10.1639 12.9181L12.9181 10.1639C13.1716 9.9104 13.5826 9.9104 13.8361 10.1639C14.0896 10.4174 14.0896 10.8285 13.8361 11.082L11.082 13.8361C10.8285 14.0896 10.4174 14.0896 10.1639 13.8361Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7.86873 13.3771C7.10819 14.1377 7.10819 15.3707 7.86873 16.1313C8.62927 16.8918 9.86235 16.8918 10.6229 16.1313L12.459 14.2952C12.7125 14.0417 13.1235 14.0417 13.3771 14.2952C13.6306 14.5487 13.6306 14.9597 13.3771 15.2132L11.5409 17.0493C10.2734 18.3169 8.21824 18.3169 6.95068 17.0493C5.68311 15.7818 5.68311 13.7266 6.95068 12.4591L8.78678 10.623C9.0403 10.3694 9.45132 10.3694 9.70484 10.623C9.95835 10.8765 9.95835 11.2875 9.70484 11.541L7.86873 13.3771Z" fill="#A1A1AA"/></svg>'}})),"Installing a Twingate Connector on a Firewalla Box"),"\n",a.createElement(n.ol,null,"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,"From your local network where the Firewalla box is running, ",a.createElement(n.a,{href:"https://help.firewalla.com/hc/en-us/articles/115004397274-How-to-access-Firewalla-using-SSH"},"SSH into your Firewalla box"),"."),"\n",a.createElement(n.pre,null,a.createElement(n.code,{className:"language-bash"},"# From your local terminal window\nssh pi@<firewalla-ip>\n")),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,"Ensure that Docker is enabled on your Firewalla box."),"\n",a.createElement(n.pre,null,a.createElement(n.code,{className:"language-bash"},"# In the existing SSH session, run the following command:\nsudo systemctl status docker\n\n# Output:\n● docker.service - Docker Application Container Engine\n    Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)\n    Active: active (running) since Wed 2024-01-24 17:24:39 MST; 2 weeks 4 days ago\nTriggeredBy: ● docker.socket\n      Docs: https://docs.docker.com\n  Main PID: 1130 (dockerd)\n      Tasks: 15\n    Memory: 121.5M\n        CPU: 1h 7min 19.547s\n    CGroup: /system.slice/docker.service\n            └─1130 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock\n\nNotice: journal has been rotated since unit was started, output may be incomplete.\n")),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,"Proceed through the Connector deployment page in the Twingate Admin Console. (Remote Networks -> Remote Network of Choice -> Select/Add a Connector)\n",a.createElement(n.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="margin-top:1rem;margin-bottom:1rem">\n    <span\n      class="gatsby-resp-image-wrapper"\n      style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 840px; "\n    >
1\n      <span\n    class="gatsby-resp-image-background-image"\n    style="padding-bottom: 67.61904761904762%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABnUlEQVR42pVTa0+DQBDk//+vJupXTUysYkuLlMdB4XhzsO4sPVJrW+Mlk7uD25l9OkVR0DAM1LYddV3P6Pjcyg4YM9J/lgOjcZxomn5iHEfq+17ELHDHv7uEzy+vlGZHuZw/NsZQEAQC3/dpv9vx/kVpmlF+PLJNRmVZUl3XAogJYRjFBFiPsFvyRCUUxTEbVlRVFTVNw4QpKaUoY8KqquXdnBozE7quS57nUXA4UJwkixIebrYefW62YmCNtYZXzXLGKgotNRDCRKVSBOvZ+UJ4iv9DHWEh1yBumpYMv4fXyBLskWMhLPmjdfdyaa0pz3MxRqh4BxKQD4MhxYIQQUrQIUKY8UPLfrngte0AkOGONrJ73w+nsxFRIbxVfpCgCPAG1bwl+qttbv2A8oELFYahVBXhiwCj4ZzVJzF8A2zL3SWUFmEgj5godIBMkOz9cpfOmOaonHvuo6IZNz1ChhfzWHbLbs/ztP2RQ9tfW29P3s6nQldXoUsOm4kxAJgexypcAupRlNDb+oPW7y5PE6ZGXQVa7+HxiVarFX0DdGdEE+lqbhwAAAAASUVORK5CYII=\'); background-size: cover; display: block;"\n  ></span>\n  <picture>\n          <source\n              srcset="/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/c7028/admin-console-firewalla-connector.webp 210w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/ce09e/admin-console-firewalla-connector.webp 420w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/ed60d/admin-console-firewalla-connector.webp 840w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/9c746/admin-console-firewalla-connector.webp 1235w"\n              sizes="(max-width: 840px) 100vw, 840px"\n              type="image/webp"\n            />\n          <source\n            srcset="/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/65ed1/admin-console-firewalla-connector.png 210w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/d10fb/admin-console-firewalla-connector.png 420w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/1e088/admin-console-firewalla-connector.png 840w,\n/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/7e11a/admin-console-firewalla-connector.png 1235w"\n            sizes="(max-width: 840px) 100vw, 840px"\n            type="image/png"\n          />\n          <img\n            class="gatsby-resp-image-image"\n            src="/docs-assets/5f397c1/docs/static/51a449961b9f05cbc96c907dae66ecf3/1e088/admin-console-firewalla-connector.png"\n            alt=""\n            title="Connector deployment page in Twingate Admin Console."\n            loading="lazy"\n            decoding="async"\n            style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n          />\n        </picture>\n    </span>\n    <figcaption class="gatsby-resp-image-figcaption">Connector deployment page in Twingate Admin Console.</figcaption>\n  </figure>'}})),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,"Walk through the Connector deployment steps:"),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,a.createElement(n.strong,null,"Step 1. Select a Deployment Method:")),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"Select “Docker”"),"\n"),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,a.createElement(n.strong,null,"Step 2. Generate Tokens:")),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"Select “Generate Tokens” and authenticate yourself again to generate"),"\n"),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,a.createElement(n.strong,null,"Step 3. Customize Docker Command:")),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"Custom DNS Server (Optional) → Skip this if you are a first-time user. For more advanced users, this can be used if you have a local DNS server that you would like to use for local resolution of FQDNs."),"\n",a.createElement(n.li,null,"Make Connector available on local network (Optional) → Enable. This will run the container in host network mode, which is a ",a.createElement(n.strong,null,"requirement")," for the container to access LANs/VLANs your Firewalla box has access to."),"\n",a.createElement(n.li,null,"Local network connection logs (Optional) → Enable. This is for troubleshooting purposes and for ingesting in a SIEM (advanced)."),"\n"),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,a.createElement(n.strong,null,"Step 4. Run Docker Command:")),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"Copy and paste the command into your SSH terminal and let it run"),"\n"),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,a.createElement(n.strong,null,"Step 5. Wait for Connection:")),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"If all goes well, the Connector will have reached out to the Controller to authenticate itself and the setup page in the Twingate Admin Console will change to show the Connector is now active."),"\n",a.createElement(n.li,null,"If you hit a snag, take a look at the ",a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/connector-best-practices"},"Connector Best Practices")," page to ensure you have the right outbound connectivity in place. Our recommendation is to not set restrictions around connectivity until you have verified that it can connect first."),"\n"),"\n",a.createElement(n.pre,null,a.createElement(n.code,{className:"language-bash"},'# Check status of running Connector containers (in existing SSH session):\nsudo docker ps\n\n# Output:\nCONTAINER ID   IMAGE                  COMMAND         CREATED        STATUS                PORTS     NAMES\n1bXXXXXXXXXX   twingate/connector:1   "/connectord"   2 months ago   Up 3 days (healthy)             twingate-fwg-conn2\nd8XXXXXXXXXX   twingate/connector:1   "/connectord"   2 months ago   Up 3 days (healthy)             twingate-fwg-conn1\n')),"\n"),"\n"),"\n"),"\n",a.createElement(n.li,null,"\n",a.createElement(n.p,null,"Now go grab some ☕ and access your network remotely through Twingate!"),"\n"),"\n"),"\n",a.createElement(t,{severity:"info"},a.createElement(n.p,null,"By default, Docker and the Twingate Connector container may not start automatically after a system reboot. To enable this, you can configure your Firewalla device to run a script after reboot that starts your Docker 
1containers. For more information, refer to Firewalla’s official documentation:\n",a.createElement(n.a,{href:"https://help.firewalla.com/hc/en-us/articles/360054056754-Customized-Scripting"},"Customized Scripting"))),"\n",a.createElement(n.h1,{id:"curious-what-else-you-can-do",style:{position:"relative"}},a.createElement(n.a,{href:"#curious-what-else-you-can-do","aria-label":"curious what else you can do permalink",className:"remark-autolink-anchor before"},a.createElement(n.span,{dangerouslySetInnerHTML:{__html:'<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.3771 7.86873C14.1377 7.10819 15.3708 7.10819 16.1313 7.86873C16.8918 8.62927 16.8918 9.86235 16.1313 10.6229L14.2952 12.459C14.0417 12.7125 14.0417 13.1235 14.2952 13.3771C14.5487 13.6306 14.9597 13.6306 15.2132 13.3771L17.0493 11.5409C18.3169 10.2734 18.3169 8.21824 17.0493 6.95068C15.7818 5.68311 13.7266 5.68311 12.4591 6.95068L10.623 8.78678C10.3695 9.0403 10.3695 9.45132 10.623 9.70484C10.8765 9.95835 11.2875 9.95835 11.541 9.70484L13.3771 7.86873Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M10.1639 13.8361C9.9104 13.5826 9.9104 13.1716 10.1639 12.9181L12.9181 10.1639C13.1716 9.9104 13.5826 9.9104 13.8361 10.1639C14.0896 10.4174 14.0896 10.8285 13.8361 11.082L11.082 13.8361C10.8285 14.0896 10.4174 14.0896 10.1639 13.8361Z" fill="#A1A1AA"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7.86873 13.3771C7.10819 14.1377 7.10819 15.3707 7.86873 16.1313C8.62927 16.8918 9.86235 16.8918 10.6229 16.1313L12.459 14.2952C12.7125 14.0417 13.1235 14.0417 13.3771 14.2952C13.6306 14.5487 13.6306 14.9597 13.3771 15.2132L11.5409 17.0493C10.2734 18.3169 8.21824 18.3169 6.95068 17.0493C5.68311 15.7818 5.68311 13.7266 6.95068 12.4591L8.78678 10.623C9.0403 10.3694 9.45132 10.3694 9.70484 10.623C9.95835 10.8765 9.95835 11.2875 9.70484 11.541L7.86873 13.3771Z" fill="#A1A1AA"/></svg>'}})),"Curious what else you can do?"),"\n",a.createElement(n.ul,null,"\n",a.createElement(n.li,null,"Site-to-Site: If you have multiple boxes that need to connect to each other, take a look at ",a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/site-2-site"},"Site-to-Site with Twingate"),"."),"\n",a.createElement(n.li,null,"Local direct connect: Set up your network segmentation into various VLANs/LANs based on your requirements and use Twingate in your local network to access the various isolated subnets with ",a.createElement(n.a,{href:"/docs-assets/5f397c1/docs/two-factor-authentication-security-policies"},"Auth/MFA requirements"),"."),"\n"))}var i=function(e){void 0===e&&(e={});const{wrapper:n}=Object.assign({},(0,o.RP)(),e.components);return n?a.createElement(n,e,a.createElement(l,e)):l(e)};var r=t(35309),s=t(71623),c=t(84343),d=t(48291),u=t(17816),m=t(75131),p=t(22792),h=t(43611),g=t(63377),f=t(42452),w=t(1805),b=t(2976),y=t(64190),C=t(83900),v=t(43285),E=t(22009),x=t(28789),A=t(61540),k=t(21145),S=t(16204),L=t(35935),T=t(74848);function j(e){var n,t,a,o,l,i;const{data:r,location:c,pageContext:u}=e,{mdx:p,docsSocialImage:h}=r,g=null==p||null===(n=p.frontmatter)||void 0===n?void 0:n.title,f=(null==p||null===(t=p.frontmatter)||void 0===t?void 0:t.description)||(null==p||null===(a=p.frontmatter)||void 0===a?void 0:a.subtitle),w=null==p||null===(o=p.frontmatter)||void 0===o?void 0:o.keywords,{docsMetadata:b}=(0,S.M)(),y=f||(null==b?void 0:b.description),C=(0,L.f)((0,m.Z)(p),null!==(l=u.navigationTree)&&void 0!==l?l:[],g),E=C.length>1;return(0,T.jsxs)(v.k,{title:g,description:y,keywords:w,pathname:c.pathname,image:null==h||null===(i=h.childImageSharp)||void 0===i?void 0:i.original,children:[(0,T.jsx)(s.d,{mdx:p,pathname:c.pathname,description:y,hasBreadcrumb:E}),(0,T.jsx)(d.g,{path:C,pathname:c.pathname})]})}function M(e){var n,t,a;const{children:o,data:l,pageContext:i,location:s}=e,{mdx:d}=l,{navigationTree:v}=i,S=(0,E._)(),j=null==d?void 0:d.frontmatter,M="two-column"===(null==j||null===(n=j.docs)||void 0===n?void 0:n.layout),F=`https://www.twingate.com${s.pathname}`;let N=null!==(t=null==j||null===(a=j.docs)||void 0===a?void 0:a.aiPrompt)&&void 0!==t?t:`Take a look at this page: ${F} and walk me through it`;N.includes("{{url}}")&&(N=N.replace("{{url}}",F));const X=[{id:"open-chatgpt",icon:(0,T.jsx)(x.IconChatGPT,{}),label:"Open in ChatGPT",description:"Ask questions about this page",href:`https://chatgpt.com/?hints=search&q=${encodeURIComponent(N)}`},{id:"open-claude",icon:(0,T.jsx)(A.IconClaude,{}),label:"Open in Claude",description:"Ask questions about this page",href:`https://claude.ai/new?q=${encodeURIComponent(N)}`}],R=(0,m.Z)(d),I=null==j?void 0:j.title,O=(0,L.f)(R,v,I),{isVideoOverlayOpen:P}=S;return(0,T.jsx)(E.jx,{value:S,children:(0,T.jsxs)(g.P,{children:[(0,T.jsx)(k.R,{currentPath:O,navItems:v,pathname:s.pathname,visibility:["visible","visible","hidden"],height:["auto","auto",0]}),(0,T.jsx)(w.a,{as:"section",paddingTopSpacing:[3,4,6],paddingBottomSpacing:[4,0],boxSizing:"content-box",children:(0,T.jsx)(b.m,{maxWidth:"xl",disableGutters:!0,children:(0,T.jsxs)(y.x,{gridGap:["0","0","2rem","4rem","6rem","9rem"],gridTemplateColumns:["repeat(12, 1fr)","repeat(12, 1fr)","248px minmax(0, 1fr) 240px","248px minmax(0, 1fr) 240px","248px minmax(0, 1fr) 240px"],children:[(0,T.jsx)(w.a,{display:["none","none","block"],gridColumn:"1 / span 1",height:"calc(100vh - 5rem - 3rem)",overflow:"auto",position:"sticky",top:"7rem",children:(0,T.jsx)(p.S,{overflow:"hidden",pathname:s.pathname,items:v,paddingRightSpacing:[0,0],paddingBottomSpacing:2})}),(0,T.jsxs)(w.a,{gridColumn:["1 / span 12","1 / span 12","2 / span 2",M?"2 / span 2":"2 / span 1"],style:{maxWidth:"840px"},children:[(0,T.jsxs)(w.a,{display:"flex",flexDirection:["column-reverse","row","row","column"],justifyContent:["flex-start","space-between","space-between","flex-start"],marginBottomSpacing:[2,3,2,0],children:[(0,T.jsx)(w.a,{children:(0,T.jsx)(r.n,{mdx:d,path:O})}),!M&&(0,T.jsx)(w.a,{display:["block","block","block","none"],marginTopSpacing:[1,2,5],children:(0,T.jsx)(f.W,{items:X,triggerLabel:"Open with AI"})})]}),P&&(0,T.jsx)(w.a,{position:"absolute",width:"100%",height:"100%",left:"0",right:"0",top:"0",children:(0,T.jsx)(h.O,{})}),o&&(0,T.jsx)(w.a,{marginTopSpacing:4,marginBottomSpacing:7,children:(0,T.jsx)(C.b,{children:o})}),(0,T.jsx)(c.n,{mdx:d})]}),!M&&(0,T.jsx)(w.a,{display:["none","none","none","block"],gridColumn:"3 / span 1",children:(0,T.jsxs)(w.a,{position:"sticky",top:"7rem",children:[(0,T.jsx)(w.a,{marginBottomSpacing:3,marginTopSpacing:1,children:(0,T.jsx)(f.W,{items:X,triggerLabel:"Open with AI"})}),(0,T.jsx)(u.M,{mdx:d,locationHash:s.hash})]})})]})})})]})})}function F(e){return a.createElement(M,e,a.createElement(i,e))}}}]);
2//# sourceMappingURL=3220-b60cd857f423ae3e1216.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.